Adicionar assinatura digital ou assinar digitalmente PDF em C#

Aspose.PDF para .NET suporta a funcionalidade de assinar digitalmente os arquivos PDF usando a classe SignatureField. Você também pode certificar um arquivo PDF com um Certificado PKCS12. Algo semelhante a Adicionando Assinaturas e Segurança no Adobe Acrobat.

Ao assinar um documento PDF usando uma assinatura, você basicamente confirma seu conteúdo “como está”. Consequentemente, quaisquer outras alterações feitas posteriormente invalidam a assinatura e, assim, você saberia se o documento foi alterado. Por outro lado, certificar um documento primeiro permite especificar as alterações que um usuário pode fazer ao 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 Certificar e assinar um PDF. Em geral, certificar um documento pode ser comparado a assinar um executável .NET com código.

O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing. O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing.

Aspose.PDF para recursos de assinatura .NET

Podemos usar as seguintes classes e método para assinatura de PDF

Assinar PDF com assinaturas digitais

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

Adicionar carimbo de data/hora à assinatura digital

Como assinar digitalmente um PDF com carimbo de data/hora

Aspose.PDF para .NET suporta a assinatura digital do PDF com um servidor de carimbo de data/hora ou serviço Web.

Para realizar essa exigência, a classe TimestampSettings foi adicionada ao namespace Aspose.PDF. Por favor, veja o seguinte trecho de código que obtém o carimbo de data/hora e o adiciona ao documento 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); // Usuário/Senha podem ser omitidos
            pkcs.TimestampSettings = timestampSettings;
            System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
            // Criar qualquer um dos três tipos de assinatura
            signature.Sign(1, "Razão da Assinatura", "Contato", "Localização", true, rect, pkcs);
            // Salvar o arquivo PDF de saída
            signature.Save(System.IO.Path.Combine(_dataDir, "DigitallySignWithTimeStamp_out.pdf"));
        }
    }
}