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
- Classe DocMDPSignature
- Enumeração DocMDPAccessPermissions
- Propriedade IsCertified na classe PdfFileSignature
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"));
}
}
}