Добавление подписи в PDF файл

Добавить цифровую подпись в PDF файл

Класс PdfFileSignature позволяет добавить подпись в PDF файл. Вам необходимо создать объект класса PdfFileSignature с использованием входного и выходного PDF-файлов. Вам также нужно создать объект Rectangle, в котором вы хотите добавить подпись, и для установки внешнего вида вы можете указать изображение, используя свойство SignatureAppearance объекта PdfFileSignature. Aspose.Pdf.Facades также предоставляет различные виды подписей, такие как PKCS#1, PKCS#7 и PKCS#7Detached. Для создания подписи определенного типа вам необходимо создать объект конкретного класса, такого как PKCS1, PKCS7 или PKCS7Detached, с использованием файла сертификата и пароля.

После создания объекта определенного типа подписи, вы можете использовать метод Sign класса PdfFileSignature для подписания PDF и передачи объекта конкретной подписи этому классу. Вы также можете указать другие атрибуты для этого метода. Наконец, вам нужно сохранить подписанный PDF, используя метод Save класса PdfFileSignature. Следующий фрагмент кода показывает, как добавить подпись в PDF файл.

public static void AddPdfFileSignature()
        {
            PdfFileSignature pdfSign = new PdfFileSignature();
            pdfSign.BindPdf(_dataDir + "sample01.pdf");

            // Создать прямоугольник для расположения подписи
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(10, 10, 300, 50);
            // Установить внешний вид подписи
            pdfSign.SignatureAppearance = _dataDir + "aspose-logo.png";

            // Создать любой из трех типов подписи
            PKCS1 signature = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1

            pdfSign.Sign(1, "Я автор документа", "test01@aspose-pdf-demo.local", "Aspose Pdf Demo, Австралия", true, rect, signature);
            // Сохранить выходной PDF файл
            pdfSign.Save(_dataDir + "DigitallySign.pdf");
        }

Следующий пример кода демонстрирует нам возможность подписать документ двумя подписями. В нашем примере мы ставим первую подпись на первую страницу, а вторую на вторую страницу. Вы можете указать нужные страницы.

 public static void AddTwoSignature()
        {
            PdfFileSignature pdfSign = new PdfFileSignature();

            // Подпись первой подписью

            pdfSign.BindPdf(_dataDir + "sample01.pdf");

            // Создать прямоугольник для расположения первой подписи
            System.Drawing.Rectangle rect1 = new System.Drawing.Rectangle(10, 10, 300, 50);

            // Создать объект первой подписи
            PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1

            pdfSign.Sign(1, "Я автор документа", "test@aspose-pdf-demo.local", "Aspose Pdf Demo, Австралия", true, rect1, signature1);
            pdfSign.Save(_dataDir + "DigitallySign.pdf");


            // Подпись второй подписью

            pdfSign.BindPdf(_dataDir + "DigitallySign.pdf");

            // Создать прямоугольник для расположения второй подписи
            System.Drawing.Rectangle rect2 = new System.Drawing.Rectangle(10, 10, 300, 50);

            // Создать объект второй подписи
            PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021"); // PKCS#1

            pdfSign.Sign(2, "Я рецензент документа", "test02@aspose-pdf-demo.local", "Aspose Pdf Demo, Австралия", true, rect2, signature2);

            // Сохранить выходной PDF файл
            pdfSign.Save(_dataDir + "DigitallySign.pdf");
        }

Для документа с формами или акроформами, который нужно подписать, см. следующий пример. Вам нужно создать объект класса PdfFileSignature, используя входные и выходные PDF-файлы. Используйте BindPdf для связывания. Создайте подпись с возможностью добавления необходимых свойств. В нашем примере это ‘Reason’ и ‘CustomAppearance’.

 public static void AddPdfFileSignatureField()
        {
            PdfFileSignature pdfSign = new PdfFileSignature();
            pdfSign.BindPdf(_dataDir + "sample02.pdf");

            // Создайте любой из трех типов подписей
            PKCS1 signature = new PKCS1(_dataDir + "test02.pfx", "Aspose2021")
            {
                Reason = "Sign as Author",
                CustomAppearance = new SignatureCustomAppearance
                {
                    FontSize = 6,
                    FontFamilyName = "Calibri"
                }
            }; // PKCS#1
            pdfSign.Sign("Signature1", signature);
            // Сохранить выходной PDF-файл
            pdfSign.Save(_dataDir + "DigitallySign.pdf");
        }

Если наш документ имеет два поля, алгоритм его подписания аналогичен первому примеру.

public static void AddPdfFileSignatureField2()
        {
            PdfFileSignature pdfSign = new PdfFileSignature();
            pdfSign.BindPdf(_dataDir + "sample03.pdf");

            // Создайте любой из трех типов подписей
            PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021")
            {
                Reason = "Подписать как Автор",
                CustomAppearance = new SignatureCustomAppearance
                {
                    FontSize = 6
                }
            }; // PKCS#1
            pdfSign.Sign("Signature1", signature1);
            // Сохранить выходной PDF файл
            pdfSign.Save(_dataDir + "DigitallySign.pdf");

            pdfSign.BindPdf(_dataDir + "DigitallySign.pdf");

            // Создайте любой из трех типов подписей
            PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021")
            {
                Reason = "Подписать как Рецензент",
                CustomAppearance = new SignatureCustomAppearance
                {
                    FontSize = 6
                }
            }; // PKCS#1
            pdfSign.Sign("Signature2", signature2);
            // Сохранить выходной PDF файл
            pdfSign.Save(_dataDir + "DigitallySign.pdf");
        }