إضافة توقيع رقمي أو توقيع PDF رقميًا في C#

Aspose.PDF لـ .NET يدعم ميزة التوقيع الرقمي على ملفات PDF باستخدام فئة SignatureField. يمكنك أيضًا تصديق ملف PDF باستخدام شهادة PKCS12. شيء مشابه لـ إضافة التواقيع والأمان في Adobe Acrobat.

عند التوقيع على مستند PDF باستخدام توقيع، فإنك تؤكد بشكل أساسي محتوياته “كما هي”. ونتيجة لذلك، فإن أي تغييرات أخرى تتم بعد ذلك تبطل التوقيع وبالتالي، ستعرف إذا تم تغيير المستند. بينما يتيح لك تصديق المستند أولاً تحديد التغييرات التي يمكن للمستخدم إجراؤها على المستند دون إبطال التصديق.

بعبارة أخرى، سيظل المستند معتبرًا بأنه يحتفظ بسلامته ويمكن للمستلم أن يثق في المستند. لمزيد من التفاصيل، يرجى زيارة تصديق وتوقيع PDF. بشكل عام، يمكن مقارنة تصديق المستند بتوقيع الكود على ملف تنفيذي لـ .NET.

يعمل أيضًا الكود التالي مع مكتبة Aspose.PDF.Drawing. يعمل الجزء التالي من الشيفرة أيضًا مع مكتبة Aspose.PDF.Drawing.

ميزات التوقيع Aspose.PDF لـ .NET

يمكننا استخدام الفئات والطرق التالية لتوقيع PDF

توقيع PDF باستخدام التواقيع الرقمية

public static void SignDocument()
{
    string inFile = System.IO.Path.Combine(_dataDir,"DigitallySign.pdf");
    string outFile = System.IO.Path.Combine(_dataDir,"DigitallySign_out.pdf");
    using (Document document = new Document(inFile))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Pa$$w0rd2020"); // استخدم أشياء PKCS7/PKCS7Detached
            signature.Sign(1, true, new System.Drawing.Rectangle(300, 100, 400, 200),pkcs);
            // حفظ ملف PDF الناتج
            signature.Save(outFile);
        }
    }
}

إضافة الطابع الزمني إلى التوقيع الرقمي

كيفية التوقيع الرقمي على ملف PDF مع طابع زمني

Aspose.PDF لـ .NET يدعم التوقيع الرقمي على ملف PDF باستخدام خادم الطابع الزمني أو خدمة الويب.

لتحقيق هذا المطلب، تم إضافة فئة TimestampSettings إلى فضاء الأسماء Aspose.PDF. يرجى الاطلاع على الشفرة التالية التي تحصل على الطابع الزمني وتضيفه إلى مستند PDF:

public static void SignWithTimeStampServer()
{
    using (Document document = new Document(System.IO.Path.Combine(_dataDir,"SimpleResume.pdf")))
    {
        using (PdfFileSignature signature = new PdfFileSignature(document))
        {
            PKCS7 pkcs = new PKCS7(@"C:\Keys\test.pfx", "Start2020");
            TimestampSettings timestampSettings = new TimestampSettings("https://freetsa.org/tsr", string.Empty); // يمكن تجاهل اسم المستخدم/كلمة المرور
            pkcs.TimestampSettings = timestampSettings;
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
            // إنشاء أي من أنواع التوقيع الثلاثة
            signature.Sign(1, "سبب التوقيع", "الاتصال", "الموقع", true, rect, pkcs);
            // حفظ ملف PDF الناتج
            signature.Save(System.IO.Path.Combine(_dataDir, "DigitallySignWithTimeStamp_out.pdf"));
        }
    }
}