How to digitally sign PDF

При подписании PDF документа с использованием подписи вы, по сути, подтверждаете, что его содержимое должно оставаться “как есть”. Следовательно, любые изменения, сделанные после этого, аннулируют подпись, и таким образом, вы узнаете, если документ был изменен. Предварительная сертификация документа позволяет вам указать изменения, которые пользователь может внести в документ, не аннулируя сертификацию.

Другими словами, документ все еще будет считаться сохраняющим свою целостность, и получатель все еще сможет доверять документу. Для получения дополнительной информации, пожалуйста, посетите страницу Сертификация и подписание PDF.

Для выполнения вышеуказанного требования были внесены следующие изменения в общедоступный API.

isCertified(…) метод добавлен в класс PdfFileSignature.

Подпись PDF с помощью цифровых подписей

public class ExampleDigitallySign {

    private static String _dataDir = "/home/aspose/pdf-examples/Samples/Secure-Sign/";

    public static void SignDocument() {
        String inFile = _dataDir + "DigitallySign.pdf";
        String outFile = _dataDir + "DigitallySign_out.pdf";
        Document document = new Document(inFile);

        PdfFileSignature signature = new PdfFileSignature(document);

        PKCS7 pkcs = new PKCS7("/home/aspose/pdf-examples/Samples/test.pfx", "Pa$$w0rd2020"); // Используйте объекты PKCS7/PKCS7Detached
                                                                                             
        signature.sign(1, true, new java.awt.Rectangle(300, 100, 400, 200), pkcs);
        // Сохранить выходной PDF файл
        signature.save(outFile);
    }

Добавление временной метки к цифровой подписи

Aspose.PDF для Java поддерживает цифровую подпись PDF с использованием сервера временных меток или веб-сервиса.

В целях выполнения этого требования в пространство имен Aspose.PDF был добавлен класс TimestampSettings. Пожалуйста, обратите внимание на следующий фрагмент кода, который получает метку времени и добавляет ее в PDF-документ:

    public static void SignWithTimeStampServer() {
        Document document = new Document(_dataDir + "SimpleResume.pdf");
        PdfFileSignature signature = new PdfFileSignature(document);

        PKCS7 pkcs = new PKCS7("/home/aspose/pdf-examples/Samples/test.pfx", "Start2020");
        TimestampSettings timestampSettings = new TimestampSettings("https://freetsa.org/tsr", ""); // Пользователь/Пароль могут быть
                                                                                                    // опущены
        pkcs.setTimestampSettings(timestampSettings);
        java.awt.Rectangle rect = new java.awt.Rectangle(100, 100, 200, 100);
        // Создать любой из трех типов подписи
        signature.sign(1, "Причина подписи", "Контакт", "Местоположение", true, rect, pkcs);
        // Сохранить выходной PDF-файл
        signature.save(_dataDir + "DigitallySignWithTimeStamp_out.pdf");
    }