C#/VB.NET: assinar PDF digitalmente com texto ou/e imagem

2023-08-07 01:58:52

A assinatura digital garante que o documento assinado não pode ser alterado por ninguém que não seja o seu autor. Adicionar assinaturas é a forma mais comum de garantir a autenticidade do conteúdo do documento. Uma assinatura digital visual em um documento PDF pode mostrar texto ou imagem (por exemplo, assinatura manuscrita). Este artigo apresenta como assinar digitalmente PDFs usando o Spire.PDF for .NET a partir dos três aspectos a seguir.

Instalar 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 DLL podem ser baixados deste link ou instalados via NuGet.

PM> Install-Package Spire.PDF

Assinar digitalmente PDF com texto

A seguir estão as etapas para adicionar uma assinatura de texto simples a um documento PDF.

  • Crie um objeto PdfDocument e 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, especificando sua posição e tamanho no documento.
  • Defina o modo gráfico de assinatura como SignDetail, que mostrará os detalhes da assinatura em texto simples.
  • Defina os detalhes da assinatura, incluindo nome, informações de contato, motivo, data etc. por meio das propriedades no objeto PdfSignature.
  • Defina as permissões do documento certificado como ForbidChanges e AllowFormFill.
  • Salve o documento em outro arquivo usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Security;
    using System;
    using System.Drawing;
    using Spire.Pdf.Graphics;
    
    namespace AddTextSignature
    {
        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 - 340, 150, 290, 100);
                signature.Bounds = rectangleF;
                signature.Certificated = true;
    
                //Set the graphics mode to sign detail
                signature.GraphicsMode = GraphicMode.SignDetail;
    
                //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 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("TextSignature.pdf");
                doc.Close();
            }
        }
    }

C#/VB.NET: Digitally Sign PDF with Text or/and Image

Assinar PDF digitalmente com uma imagem

A seguir estão as etapas para adicionar uma assinatura de imagem a um documento PDF.

  • Crie um objeto PdfDocument e 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, especificando sua posição e tamanho no documento.
  • Defina o modo gráfico de assinatura como SignImageOnly, que mostrará apenas a imagem da assinatura.
  • Defina a imagem da assinatura por meio da propriedade PdfSignature.SignImageSource.
  • Defina as permissões do documento certificado como ForbidChanges e AllowFormFill.
  • Salve o documento em outro arquivo usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Security;
    using System.Drawing;
    
    namespace AddImageSignature
    {
        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 - 200, 150, 130, 130);
                signature.Bounds = rectangleF;
                signature.Certificated = true;
    
                //Set the graphics mode to image only
                signature.GraphicsMode = GraphicMode.SignImageOnly;
    
                //Set the sign image source
                signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\verified.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("ImageSignature.pdf");
                doc.Close();
            }
        }
    }

C#/VB.NET: Digitally Sign PDF with Text or/and Image

Assine PDF digitalmente com texto e uma imagem

A seguir estão as etapas para assinar digitalmente um documento PDF com texto e uma imagem.

  • Crie um objeto PdfDocument e 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, especificando sua posição e tamanho no documento.
  • Defina o modo gráfico de assinatura como SignImageAndSignDetail, que mostrará a imagem e os detalhes da assinatura.
  • Defina a imagem da assinatura por meio da propriedade PdfSignature.SignImageSource e defina os detalhes da assinatura, incluindo nome, informações de contato, motivo, data etc. por meio de outras propriedades no objeto PdfSignature.
  • Defina as permissões do documento certificado como ForbidChanges e AllowFormFill.
  • Salve o documento em outro arquivo usando o método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Security;
    using System;
    using System.Drawing;
    using Spire.Pdf.Graphics;
    
    namespace AddTextAndImageSignature
    {
        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 - 320, 150, 260, 110);
                signature.Bounds = rectangleF;
                signature.Certificated = true;
    
                //Set the graphics mode to image and sign detail
                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\\handSignature.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("TextAndImageSignature.pdf");
                doc.Close();
            }
        }
    }

C#/VB.NET: Digitally Sign PDF with Text or/and Image

Solicitar uma licença temporária

Se você deseja 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 avaliação de 30 dias para você mesmo.

Veja também