Como assinar digitalmente PDF

Ao assinar um documento PDF usando uma assinatura, você basicamente confirma que seu conteúdo deve permanecer “como está”. Consequentemente, quaisquer alterações feitas posteriormente invalidam a assinatura e, assim, você sabe se o documento foi alterado. Certificar um documento primeiro permite que você especifique as alterações que um usuário pode fazer no documento sem invalidar a certificação.

Em outras palavras, o documento ainda seria considerado como mantendo sua integridade e o destinatário ainda poderia confiar no documento. Para mais detalhes, por favor visite Certificando e assinando um PDF.

Para cumprir o requisito mencionado acima, as seguintes alterações na API pública foram feitas.

isCertified(…) método é adicionado à classe PdfFileSignature.

Assinar PDF com assinaturas digitais

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"); // Use objetos PKCS7/PKCS7Detached
        signature.sign(1, true, new java.awt.Rectangle(300, 100, 400, 200), pkcs);
        // Salvar arquivo PDF de saída
        signature.save(outFile);
    }

Adicionar carimbo de data/hora à assinatura digital

Aspose.PDF para Java suporta assinar digitalmente o PDF com um servidor de carimbo de data/hora ou serviço Web.

Para cumprir este requisito, a classe TimestampSettings foi adicionada ao namespace Aspose.PDF. Por favor, veja o seguinte trecho de código que obtém o timestamp e o adiciona ao documento 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", ""); // Usuário/Senha podem
                                                                                                    // ser omitidos
        pkcs.setTimestampSettings(timestampSettings);
        java.awt.Rectangle rect = new java.awt.Rectangle(100, 100, 200, 100);
        // Crie qualquer um dos três tipos de assinatura
        signature.sign(1, "Motivo da Assinatura", "Contato", "Localização", true, rect, pkcs);
        // Salvar arquivo PDF de saída
        signature.save(_dataDir + "DigitallySignWithTimeStamp_out.pdf");
    }