Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
الشفرة التالية تعمل أيضًا مع مكتبة Aspose.PDF.Drawing.
يدعم Aspose.PDF for .NET ميزة توقيع ملفات PDF رقمياً باستخدام فئة SignatureField وخلال توقيع المستند يمكنك أيضًا تعيين صورة لـ SignatureAppearance. الآن، توفر هذه الواجهة البرمجية القدرة على استخراج معلومات التوقيع وكذلك الصورة المرتبطة بحقل التوقيع.
من أجل استخراج معلومات التوقيع، قدمنا طريقة ExtractImage إلى فئة SignatureField. يرجى إلقاء نظرة على الشفرة التالية التي توضح الخطوات لاستخراج صورة من كائن SignatureField:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractImagesFromSignatureField()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractingImage.pdf"))
{
// Searching for signature fields
foreach (var field in document.Form)
{
var sf = field as Aspose.Pdf.Forms.SignatureField;
if (sf == null)
{
continue;
}
using (Stream imageStream = sf.ExtractImage())
{
if (imageStream != null)
{
continue;
}
using (System.Drawing.Image image = System.Drawing.Bitmap.FromStream(imageStream))
{
// Save the image
image.Save(dataDir + "output_out.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
يدعم Aspose.PDF for .NET ميزة توقيع ملفات PDF رقمياً باستخدام فئة SignatureField. حاليًا، يمكننا أيضًا تحديد صلاحية الشهادة لكن لا يمكننا استخراج الشهادة بالكامل. المعلومات التي يمكن استخراجها هي المفتاح العام، البصمة، الجهة المصدرة، إلخ.
لاستخراج معلومات التوقيع، قدمنا طريقة ExtractCertificate إلى فئة SignatureField. يرجى إلقاء نظرة على الشفرة التالية التي توضح الخطوات لاستخراج الشهادة من كائن SignatureField:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractCertificate()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "ExtractSignatureInfo.pdf"))
{
// Searching for signature fields
foreach (var field in document.Form)
{
var sf = field as Aspose.Pdf.Forms.SignatureField;
if (sf == null)
{
continue;
}
// Extract certificate
Stream cerStream = sf.ExtractCertificate();
if (cerStream == null)
{
continue;
}
// Save certificate
using (cerStream)
{
byte[] bytes = new byte[cerStream.Length];
using (FileStream fs = new FileStream(dataDir + "input.cer", FileMode.CreateNew))
{
cerStream.Read(bytes, 0, bytes.Length);
fs.Write(bytes, 0, bytes.Length);
}
}
}
}
}
يمكنك استخدام طريقة PdfFileSignature.TryExtractCertificate لاستخراج تدفق شهادة أو كائن X509Certificate2.
يمكنك الحصول على معلومات حول خوارزميات توقيع المستند.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private void GetSignaturesInfo()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "signed_rsa.pdf"))
{
using (var signature = new Aspose.Pdf.Facades.PdfFileSignature(document))
{
var sigNames = signature.GetSignatureNames();
var signaturesInfoList = signature.GetSignaturesInfo();
foreach (var sigInfo in signaturesInfoList)
{
Console.WriteLine(sigInfo.DigestHashAlgorithm);
Console.WriteLine(sigInfo.AlgorithmType);
Console.WriteLine(sigInfo.CryptographicStandard);
Console.WriteLine(sigInfo.SignatureName);
}
}
}
}
نموذج الإخراج للمثال أعلاه:
Sha256
Rsa
Pkcs7
Signature1
يمكنك استخدام فئة SignaturesCompromiseDetector للتحقق من اختراق التوقيعات الرقمية.
استدعِ طريقة Check() لفحص توقيعات المستند.
إذا لم يتم اكتشاف أي اختراق للتوقيع، ستعيد الطريقة القيمة true.
إذا عادت الطريقة false، يمكنك التحقق مما إذا كانت التوقيعات المخترقة تستخدم الخاصية HasCompromisedSignatures واسترجاع قائمة التوقيعات المخترقة عبر الخاصية CompromisedSignatures.
للتحقق مما إذا كانت التوقيعات الحالية تغطي المستند بالكامل، استخدم الخاصية SignaturesCoverage.
يمكن أن تكون لهذه الخاصية القيم التالية:
يمكنك استخراج المحتوى غير الموقع من مستند باستخدام فئة UnsignedContentAbsorber.
إذا تم تعديل مستند موقع بشكل غير تزايدي، قد يتم إعادة ترتيب الكائنات في بنية PDF، مما يجعل من المستحيل تحديد أي الأجزاء كانت موقعة أصلاً وأيها لم تكن. في مثل هذه الحالات، سيشير الماص إلى أن المستند تم تعديله بشكل غير تزايدي.
إذا تم تعديل المستند بشكل تزايدي، يمكننا اكتشاف ما تم تغييره. للأسف، بما أن تدفقات محتوى الصفحات مضغوطة، لا يمكن تحديد الجزء الدقيق من نص الصفحة الذي تم تغييره، لذا سيُعلِّم الماص الصفحة بأكملها على أنها معدَّلة.
التغييرات الأخرى التي يتم تتبعها:
إذا تم تعديل التعليقات التوضيحية أو الحقول أو XForms بطريقة تؤثر على مظهرها، سيُبلغ الماص أيضًا عن تلك التغييرات.
يتم تمثيل نتيجة المعالجة بواسطة فئة UnsignedContentAbsorber.Result.
UnsignedContentAbsorber.Resultيمثل نتيجة محاولة الحصول على محتوى غير موقع من مستند PDF.
| الخاصية | النوع | الوصف |
|---|---|---|
| Success | bool |
true إذا اكتملت العملية بنجاح وتم تحديد المحتوى غير الموقع (أو إذا لم يحتوي المستند على توقيعات). |
| UnsignedContent | UnsignedContentAbsorber.UnsignedContent |
كائن يحتوي على مجموعات من الصفحات، حقول النماذج، XForms، والتعليقات التوضيحية التي لم تغطها التوقيعات. |
| Message | string |
رسالة نصية تصف النتيجة. |
| Coverage | SignaturesCoverage |
مستوى تغطية التوقيع: Undefined، EntirelySigned، PartiallySigned. |
UnsignedContentAbsorber.UnsignedContentحاوية تحتفظ بجميع عناصر مستند PDF غير المغطاة بالتوقيع الرقمي. تُستخدم هذه الفئة داخل Result وتوفر وصولًا مريحًا إلى الكائنات المكتشفة.
| الخاصية | النوع | الوصف |
|---|---|---|
| Pages | List<Page> |
قائمة بالصفحات التي لم يغطيها التوقيع (أو التي تم تعديلها بعد التوقيع). إذا اعتُبرت الصفحة معدَّلة، لن يتم فحص XForms الخاصة بها ولن تظهر في قائمة XForms. |
| Forms | List<WidgetAnnotation> |
قائمة حقول النماذج (حقول النص، مربعات الاختيار، إلخ) التي أضيفت أو تم تعديلها دون توقيع. |
| XForms | Dictionary<int, XForm> |
قاموس حيث المفتاح هو رقم الصفحة والقيمة هي كائن XForm تم تعديلها بعد التوقيع. |
| Annotations | Dictionary<int, Annotation> |
قاموس التعليقات التوضيحية، حيث المفتاح هو رقم الصفحة والقيمة هي التعليق التوضيحي الذي تم تعديله دون توقيع. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.