C#/VB.NET: Adicionar ou remover assinaturas digitais em PDF

2023-10-20 03:18:38

À medida que os documentos PDF se tornam cada vez mais populares nos negócios, garantir a sua autenticidade tornou-se uma preocupação fundamental. Assinar PDFs com uma assinatura baseada em certificado pode proteger o conteúdo e também permitir que outras pessoas saibam quem assinou ou aprovou o documento. Neste artigo você aprenderá como assinar digitalmente PDF com uma assinatura invisível ou visível e como remover assinaturas digitais de PDF usando Spire.PDF for .NET.

Instale o Spire.PDF for .NET

Para começar, você precisa adicionar os arquivos DLL incluídos no pacote Spire.PDF for.NET como referências em seu projeto .NET. Os arquivos DLLs podem ser baixados deste link ou instalados via NuGet.

PM> Install-Package Spire.PDF

Adicione uma assinatura digital invisível ao PDF

A seguir estão as etapas para adicionar uma assinatura digital invisível ao PDF usando Spire.PDF for .NET.

  • Crie um objeto PdfDocument.
  • Carregue um arquivo PDF de amostra usando o método PdfDocument.LoadFromFile().
  • Carregue um arquivo de certificado pfx ao inicializar o objeto PdfCertificate.
  • Crie um objeto PdfSignature com base no certificado.
  • Defina as permissões do documento através do objeto PdfSignature.
  • Salve o documento em outro arquivo PDF usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Security;
    
    namespace AddInvisibleSignature
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Load a sample PDF file
                doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
    
                //Load the certificate
                PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
    
                //Create a PdfSignature object
                PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
    
                //Set the document permission to forbid changes but allow form fill
                signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
    
                //Save to another PDF file
                doc.SaveToFile("InvisibleSignature.pdf");
                doc.Close();
            }
        }
    }

C#/VB.NET: Add or Remove Digital Signatures in PDF

Adicione uma assinatura digital visível ao PDF

A seguir estão as etapas para adicionar uma assinatura digital visível ao PDF usando Spire.PDF for .NET.

  • Crie um objeto PdfDocument.
  • Carregue um arquivo PDF de amostra usando o método PdfDocument.LoadFromFile().
  • Carregue um arquivo de certificado pfx ao inicializar o objeto PdfCertificate.
  • Crie um objeto PdfSignature e especifique sua posição e tamanho no documento.
  • Defina os detalhes da assinatura, incluindo data, nome, local, motivo, imagem da assinatura manuscrita e permissões do documento.
  • Salve o documento em outro arquivo PDF usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using System;
    using System.Drawing;
    using Spire.Pdf;
    using Spire.Pdf.Security;
    using Spire.Pdf.Graphics;
    
    namespace AddVisibleSignature
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Load a sample PDF file
                doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
    
                //Load the certificate
                PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
    
                //Create a PdfSignature object and specify its position and size
                PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
                RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
                signature.Bounds = rectangleF;
                signature.Certificated = true;
    
                //Set the graphics mode to ImageAndSignDetail
                signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;
    
                //Set the signature content
                signature.NameLabel = "Signer:";
                signature.Name = "Gary";
                signature.ContactInfoLabel = "Phone:";
                signature.ContactInfo = "0123456";
                signature.DateLabel = "Date:";
                signature.Date = DateTime.Now;
                signature.LocationInfoLabel = "Location:";
                signature.LocationInfo = "USA";
                signature.ReasonLabel = "Reason:";
                signature.Reason = "I am the author";
                signature.DistinguishedNameLabel = "DN:";
                signature.DistinguishedName = signature.Certificate.IssuerName.Name;
    
                //Set the signature image source
                signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");
    
                //Set the signature font
                signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));
    
                //Set the document permission to forbid changes but allow form fill
                signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
    
                //Save to file
                doc.SaveToFile("VisiableSignature.pdf");
                doc.Close();
            }
        }
    }

C#/VB.NET: Add or Remove Digital Signatures in PDF

Remover assinaturas digitais de PDF

A seguir estão as etapas para remover assinaturas digitais de PDF usando Spire.PDF for .NET.

  • Crie um objeto PdfDocument.
  • Obtenha widgets de formulário do documento por meio da propriedade PdfDocument.Form.
  • Percorra os widgets e determine se um widget específico é um PdfSignatureFieldWidget.
  • Remova o widget de assinatura usando o método PdfFieldCollection.RemoveAt().
  • Salve o documento em outro arquivo PDF usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Widget;
    
    namespace RemoveSignature
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument("C:\\Users\\Administrator\\Desktop\\VisiableSignature.pdf");
    
                //Get form widgets from the document
                PdfFormWidget widgets = doc.Form as PdfFormWidget;
    
                //Loop through the widgets
                for (int i = 0; i < widgets.FieldsWidget.List.Count; i++)
                {
                    //Get the specific widget
                    PdfFieldWidget widget = widgets.FieldsWidget.List[i] as PdfFieldWidget;
    
                    //Determine if the widget is a PdfSignatureFieldWidget
                    if (widget is PdfSignatureFieldWidget)
                    {
                        //Remove the widget
                        widgets.FieldsWidget.RemoveAt(i);
                    }
                }
    
                //Save the document to another PDF file
                doc.SaveToFile("RemoveSignatures.pdf");
            }
        }
    }

Solicite uma licença temporária

Se desejar remover a mensagem de avaliação dos documentos gerados ou se livrar das limitações de função, por favor solicite uma licença de teste de 30 dias para você mesmo.

Veja também