Guia Completo de Assinatura Digital de PDFs com C
Este guia completo mostra aos desenvolvedores C# como aplicar assinatura digital em PDFs usando o IronPDF, abordando assinaturas baseadas em certificados, carimbos visuais e campos de formulário interativos para garantir a autenticidade e a segurança do documento.
Adicionar uma assinatura a um documento PDF é um requisito comum em muitas aplicações, mas "assinar" pode ter diferentes significados. Para alguns, trata-se de aplicar uma assinatura digital inviolável usando um certificado de segurança. Para outros, pode ser carimbar uma imagem de assinatura manuscrita em um documento ou adicionar um campo de formulário interativo para que os usuários assinem eletronicamente.
Este guia fornece um passo a passo completo para desenvolvedores C# sobre como realizar todas essas tarefas usando a biblioteca IronPDF for .NET . Vamos abordar tudo, desde a aplicação de uma assinatura digital segura X509Certificate2 até a inclusão de assinaturas gráficas e a criação de campos de assinatura interativos, garantindo que seus documentos PDF sejam autênticos, seguros e profissionais.
Início Rápido: Aplique Assinatura Digital em PDFs sem Esforço usando o IronPDF
Comece a usar o IronPDF rapidamente para assinar digitalmente seus documentos PDF usando um processo simples e direto. Este exemplo demonstra como usar um certificado .pfx para autenticar e assinar um arquivo PDF, garantindo a integridade e autenticidade do documento. Siga estes passos para integrar a assinatura digital ao seu aplicativo sem problemas.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instale a biblioteca IronPDF for .NET.
- Apply a digital signature using an `X509Certificate2` object.
- Adicione uma imagem para representar a assinatura digital.
- Inserir uma assinatura gráfica ou manuscrita em um arquivo PDF.
- Adicione um campo de formulário de assinatura interativo para assinatura eletrônica.
Como faço para adicionar uma assinatura digital a um PDF com certificado?
Você pode aplicar uma assinatura digital a um documento PDF usando um arquivo de certificado digital (como .pfx ou .p12) para garantir a autenticidade e a integridade do documento. Este processo garante que o documento não tenha sido alterado desde a sua assinatura. Para uma visão geral completa dos recursos de assinatura digital, explore nosso guia abrangente sobre assinaturas digitais .
O IronPDF fornece uma API simples para essa finalidade, suportando várias maneiras de aplicar uma assinatura digital. O núcleo dessa funcionalidade gira em torno da classe PdfSignature, que encapsula o certificado e todos os metadados associados à assinatura.
| Método de assinatura | Descrição |
|---|---|
| `Sign` | Assina um PDF com um **objeto `PdfSignature`** que você cria e configura. |
| `SignWithFile` | Assina um PDF usando um arquivo de certificado de assinatura digital ( `.pfx` ou `.p12` ) localizado no disco. |
| `SignWithStore` | Assina um PDF com uma assinatura digital do repositório de certificados do seu computador, identificada pelo seu **ID de impressão digital** . |
Usando um objeto X509Certificate2
Para obter o máximo controle, você pode criar um objeto X509Certificate2 a partir do seu arquivo de certificado. O IronPDF está em total conformidade com o padrão X509Certificate2, fornecendo um método robusto e seguro para a implementação de assinaturas digitais. Ao criar o objeto de certificado, certifique-se de que os valores X509KeyStorageFlags estejam definidos como Exportable, pois isso é exigido pelas APIs criptográficas subjacentes. Confira exemplos práticos de assinaturas digitais em nosso repositório de código.
Install-Package IronPdf
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
' Create a new PDF from an HTML string for demonstration.
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>")
' Load the certificate from a .pfx file with its password.
' The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
Private cert = New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create a PdfSignature object using the loaded certificate.
Private signature = New PdfSignature(cert)
' Apply the signature to the PDF document.
pdf.Sign(signature)
' Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf")
O código acima primeiro gera um PDF simples. Em seguida, carrega um arquivo de certificado .pfx em um objeto X509Certificate2. Este objeto, que representa a identidade digital, é passado para o construtor PdfSignature. Finalmente, o método pdf.Sign aplica essa assinatura ao documento antes de salvá-lo. For more information on the X509Certificate2 class, you can refer to the official Microsoft documentation.
Adicionando detalhes específicos a uma assinatura digital
Uma assinatura digital pode conter mais do que apenas o certificado; Você pode incorporar metadados detalhados para fornecer contexto sobre a assinatura. Isso inclui o local da assinatura, o motivo, as informações de contato e um registro de data e hora seguro de uma autoridade confiável. Você também pode definir e editar metadados para propriedades adicionais do documento.
A inclusão desses detalhes melhora o histórico de auditoria do documento e fornece informações valiosas para os verificadores. O IronPDF também suporta servidores de carimbo de data/hora que usam algoritmos de hash modernos SHA256 e SHA512.
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports IronSoftware.Drawing
Imports System
' Load an existing PDF document to be signed.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create a PdfSignature object directly from the certificate file and password.
Dim signature = New PdfSignature("IronSoftware.pfx", "123456")
' Add detailed metadata to the signature for a comprehensive audit trail.
' These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now
signature.SigningContact = "legal@ironsoftware.com"
signature.SigningLocation = "Chicago, USA"
signature.SigningReason = "Contractual Agreement"
' Add a secure timestamp from a trusted Time Stamp Authority (TSA).
' This provides cryptographic proof of the signing time.
signature.TimeStampUrl = New Uri("http://timestamp.digicert.com")
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
' Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, New Rectangle(350, 750, 200, 100))
' Sign the PDF document with the configured signature object.
pdf.Sign(signature)
' Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf")
Você poderá notar um ícone de aviso em alguns visualizadores de PDF se o certificado de assinatura não estiver no repositório de certificados confiáveis do sistema. Para obter um selo verde, o certificado deve ser adicionado às identidades confiáveis do visualizador.
Como posso adicionar uma representação visual a uma assinatura digital?
Embora uma assinatura digital esteja criptograficamente incorporada ao PDF, muitas vezes é útil ter uma representação visual na página. Pode ser o logotipo de uma empresa, uma assinatura manuscrita ou outros elementos gráficos. O IronPDF facilita a adição de uma imagem a um objeto PdfSignature.
Você pode carregar uma imagem de um arquivo ou de um fluxo de dados e posicioná-la com precisão em qualquer página do PDF. Os formatos de imagem suportados incluem PNG, JPEG, GIF, BMP, TIFF e WebP. Essa técnica é semelhante à forma como você pode inserir texto e imagens em documentos PDF.
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
Imports IronPdf.Signing
Imports IronSoftware.Drawing
' This example demonstrates various ways to add a visual image to a PDF signature.
' Create a PdfSignature object.
Dim signature As New PdfSignature("IronSoftware.pfx", "123456")
' Define the position and size for the signature image on the first page (index 0).
' Rectangle parameters: x position, y position, width, height
Dim signatureRectangle As New Rectangle(350, 750, 200, 100)
' Option 1: Set the SignatureImage property directly.
' This is the most straightforward approach
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle)
' Option 2: Use the LoadSignatureImageFromFile method.
' This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle)
' Option 3: Load an image from a stream. This is useful for images generated in memory.
' Perfect for scenarios where images are retrieved from databases or web services
Dim image As AnyBitmap = AnyBitmap.FromFile("assets/visual-signature.png")
Using imageStream = image.ToStream()
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle)
End Using
' After configuring the signature image, apply it to a PDF.
Dim pdf As PdfDocument = PdfDocument.FromFile("invoice.pdf")
pdf.Sign(signature)
pdf.SaveAs("VisualSignature.pdf")
Este código demonstra três maneiras equivalentes de adicionar um componente visual a uma assinatura digital. Quer você tenha uma imagem no disco ou na memória, você pode facilmente carimbá-la no PDF como parte do processo de assinatura. Isso preenche a lacuna entre a segurança criptográfica invisível e a aprovação visível de documentos.
Como posso controlar as permissões do documento após a assinatura?
Ao assinar um documento, você pode querer especificar quais alterações, se houver, serão permitidas posteriormente. Por exemplo, você pode querer bloquear o documento completamente ou permitir que os usuários preencham apenas os campos do formulário. O IronPDF permite que você defina essas permissões usando a enumeração SignaturePermissions. Para obter informações mais avançadas sobre controle de permissões, consulte nosso guia sobre como definir senhas e permissões para PDFs .
Definir permissões de assinatura é uma parte fundamental da gestão do ciclo de vida de um documento. Isso garante que a integridade do documento seja mantida de acordo com as suas regras após a sua assinatura. Se um usuário realizar uma ação não permitida, a assinatura será invalidada.
| Membro `SignaturePermissions` | Definição |
|---|---|
| `NoChangesAllowed` | Nenhuma alteração de qualquer tipo é permitida. O documento está efetivamente bloqueado. |
| `FormFillingAllowed` | Somente é permitido preencher os campos existentes do formulário e assinar. |
| `AnnotationsAndFormFillingAllowed` | Permite o preenchimento de formulários, a assinatura e a criação ou modificação de anotações. |
Salvar e assinar uma revisão específica de PDF
Os arquivos PDF podem armazenar um histórico de alterações, de forma semelhante a um sistema de controle de versão. Isso é conhecido como poupança incremental. Ao assinar um PDF, a assinatura se aplica a uma revisão específica do documento. Isso é crucial para fluxos de trabalho em que um documento passa por várias etapas de aprovação. Saiba mais sobre como gerenciar o histórico de revisões de PDFs em nosso guia detalhado.
No exemplo a seguir, carregamos um PDF, fazemos edições e, em seguida, assinamos a revisão atual, permitindo apenas o preenchimento de formulários como uma alteração futura. Usamos SaveAsRevision para confirmar o estado atual no histórico do documento antes de salvar o arquivo.
using IronPdf.Signing;
// Load a PDF file with change tracking enabled.
// This enables incremental save functionality for revision management
var pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking);
// Placeholder for edits: You might add text, fill forms, or add annotations here.
// For example: pdf.Annotations.Add(new TextAnnotation(...));
// Or: pdf.Form["fieldName"].Value = "New Value";
// Sign the current state of the document using SignWithFile for convenience.
// We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
// Save the current state as a distinct revision within the PDF's history.
// This creates a snapshot that can be referenced later
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
// Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf");
using IronPdf.Signing;
// Load a PDF file with change tracking enabled.
// This enables incremental save functionality for revision management
var pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking);
// Placeholder for edits: You might add text, fill forms, or add annotations here.
// For example: pdf.Annotations.Add(new TextAnnotation(...));
// Or: pdf.Form["fieldName"].Value = "New Value";
// Sign the current state of the document using SignWithFile for convenience.
// We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
// Save the current state as a distinct revision within the PDF's history.
// This creates a snapshot that can be referenced later
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
// Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf");
Imports IronPdf.Signing
' Load a PDF file with change tracking enabled.
' This enables incremental save functionality for revision management
Dim pdf = PdfDocument.FromFile("annual_census.pdf", ChangeTrackingModes.EnableChangeTracking)
' Placeholder for edits: You might add text, fill forms, or add annotations here.
' For example: pdf.Annotations.Add(New TextAnnotation(...))
' Or: pdf.Form("fieldName").Value = "New Value"
' Sign the current state of the document using SignWithFile for convenience.
' We set permissions to allow further signatures and form filling.
pdf.SignWithFile(
"assets/IronSignature.p12",
"password",
SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed)
' Save the current state as a distinct revision within the PDF's history.
' This creates a snapshot that can be referenced later
Dim pdfWithRevision As PdfDocument = pdf.SaveAsRevision()
' Save the final PDF with its full revision history to a new file.
pdfWithRevision.SaveAs("annual_census_signed.pdf")
Compreender os salvamentos incrementais é fundamental para fluxos de trabalho avançados em PDF. Enquanto um visualizador simples pode mostrar apenas a versão mais recente, uma ferramenta como o Adobe Acrobat pode revelar todo o histórico de revisões, mostrando quem assinou qual versão e quais alterações foram feitas entre as assinaturas. O IronPDF oferece controle programático completo sobre esse processo.
Para empresas que gerenciam fluxos de trabalho de documentos complexos que exigem alta segurança e conformidade, uma solução abrangente pode ser necessária. A Iron Software oferece o Iron Suite , que inclui o IronPDF para assinatura e manipulação, além de outras bibliotecas para uma ampla gama de tarefas de processamento de documentos, disponível por um único pagamento.
Como posso gerenciar e verificar assinaturas em diferentes revisões?
Um documento PDF pode ter várias assinaturas aplicadas em suas diversas revisões. O IronPDF fornece ferramentas para gerenciar esse histórico de forma eficaz.
- Reverter para uma revisão anterior : Você pode reverter um documento para um estado anterior usando o método
GetRevision. Isso descartará todas as alterações e assinaturas feitas após essa revisão. - Verificar todas as assinaturas : O método
VerifySignaturesverifica a validade de todas as assinaturas em todas as revisões do documento. Retornatruesomente se todas as assinaturas forem válidas e nenhuma alteração não autorizada tiver sido feita. - Remover assinaturas : O método
RemoveSignaturesremoverá todas as assinaturas digitais de todas as revisões do documento, criando uma versão limpa e sem assinatura.
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
Imports System
' Load a PDF with a complex signature history.
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Verify all signatures across all revisions.
' This ensures document integrity throughout its entire history
Dim allSignaturesValid As Boolean = pdf.VerifySignatures()
Console.WriteLine($"All signatures are valid: {allSignaturesValid}")
' Roll back to the first revision (index 0).
' Useful for reviewing the original document state
If pdf.RevisionCount > 1 Then
Dim firstRevision As PdfDocument = pdf.GetRevision(0)
firstRevision.SaveAs("report_first_revision.pdf")
End If
' Create a completely unsigned version of the document.
' This removes all digital signatures while preserving content
pdf.RemoveSignatures()
pdf.SaveAs("report_unsigned.pdf")
Como faço para inserir uma assinatura manuscrita em um PDF?
Às vezes, você não precisa da segurança criptográfica de uma assinatura digital, mas simplesmente deseja aplicar uma assinatura visual eletrônica, como uma assinatura manuscrita digitalizada. Isso geralmente é chamado de estampagem. O IronPDF pode fazer isso usando seus recursos Watermark ou Stamp. Para opções de marca d'água mais avançadas, explore nosso guia de marcas d'água personalizadas .
Vamos começar com um exemplo de fatura em PDF e uma imagem .png de uma assinatura manuscrita.
A fatura original em PDF antes da assinatura.
Aqui está a imagem de assinatura que aplicaremos:
Exemplo de imagem de assinatura manuscrita.
O código a seguir usa a propriedade Watermark para inserir esta imagem no canto inferior direito do PDF.
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
Imports IronPdf.Editing
' Load the existing PDF document.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create an HtmlStamp containing our signature image.
' HtmlStamp allows us to position HTML content precisely on the page
Dim signatureStamp = New HtmlStamp("<img src='assets/signature.png'/>") With {
' Configure the stamp's position and appearance.
.VerticalAlignment = VerticalAlignment.Bottom,
.HorizontalAlignment = HorizontalAlignment.Right,
.Margin = 10, ' Add some space from the edge.
.Opacity = 90 ' Make it slightly transparent for a more authentic look.
}
' Apply the stamp to all pages of the PDF.
' You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp)
' Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf")
Qual é a aparência do PDF com o carimbo?
Após a execução do código, a imagem da assinatura é impressa no documento, criando uma fatura com assinatura visual.
O PDF final com a imagem da assinatura manuscrita carimbada no canto inferior direito.
Como posso adicionar um campo de assinatura interativa a um PDF?
Para documentos que precisam ser assinados pelo usuário final em um visualizador de PDF como o Adobe Acrobat, você pode adicionar um campo de formulário de assinatura interativo. Isso cria uma área vazia e clicável que solicita ao usuário que aplique sua própria assinatura digital. Para um guia completo sobre formulários em PDF, consulte nosso tutorial sobre como criar formulários em PDF .
Você pode criar um SignatureFormField e adicioná-lo à coleção de formulários do PDF. Você tem controle preciso sobre sua localização e tamanho na página. Isso é particularmente útil para documentos que exigem múltiplas assinaturas ou quando você precisa coletar assinaturas de terceiros.
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
Imports IronPdf.Forms
Imports IronSoftware.Drawing
' Create a new PDF to add the signature field to.
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>")
' Define the properties for the signature form field.
Dim fieldName As String = "ClientSignature" ' Unique identifier for the field
Dim pageIndex As Integer = 0 ' Add to the first page (zero-indexed)
Dim fieldRect As New Rectangle(50, 200, 300, 100) ' Position: (x, y), Size: (width, height)
' Create the SignatureFormField object.
' This creates an interactive field that users can click to sign
Dim signatureField As New SignatureFormField(fieldName, pageIndex, fieldRect)
' Add the signature field to the PDF's form.
pdf.Form.Add(signatureField)
' Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf")
Ao abrir este PDF, o usuário verá um campo clicável que lhe permitirá concluir o processo de assinatura usando sua própria identidade digital. Você pode aprender mais sobre como criar e gerenciar formulários interativos em nosso guia prático sobre como criar formulários em PDF .
Um campo de assinatura interativo não assinado, adicionado programaticamente a um documento PDF.
Como faço para recuperar o nome do signatário de assinaturas verificadas?
Para obter o nome comum do proprietário do certificado que assinou uma assinatura, podemos usar a classe VerifiedSignature para acessar a propriedade SignerName. Abaixo segue um trecho de código que demonstra como realizar isso.
:path=/static-assets/pdf/content-code-examples/how-to/signing-find-signer-name.cs
using IronPdf;
using System;
// Import the Signed PDF report
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(signature =>
{
// Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}");
});
Imports IronPdf
Imports System
' Import the Signed PDF report
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(Sub(signature)
' Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}")
End Sub)
Após importar o arquivo PDF assinado, utilizamos o método GetVerifiedSignatures para recuperar uma lista de objetos VerifiedSignature dentro do relatório e imprimir o SignerName para cada assinatura.
Observe que esse valor é extraído do Nome Distinto do Assunto (SubjectDN) do certificado e retornará nulo se o campo CN não estiver presente.
Quais são os próximos passos para assinar PDFs com o IronPDF?
Este guia demonstrou os recursos poderosos e flexíveis de assinatura de PDF do IronPDF. Seja para aplicar assinaturas digitais seguras com metadados detalhados, gerenciar revisões de documentos, carimbar assinaturas visuais ou criar formulários interativos, o IronPDF oferece uma API abrangente e fácil de usar para desenvolvedores.
Para continuar explorando, você pode baixar a biblioteca IronPDF for .NET e obter uma licença de avaliação gratuita para testar todos os seus recursos em seus projetos. Para técnicas mais avançadas de manipulação de documentos, incluindo a adição de anotações e o trabalho com campos de formulário, consulte nossa extensa documentação e tutoriais.
Pronto para ver o que mais você pode fazer? Confira nossa página de tutoriais aqui: Assinar e proteger PDFs
Perguntas frequentes
Como faço para assinar digitalmente um PDF usando um certificado em C#?
Com o IronPDF, você pode assinar digitalmente um PDF com apenas uma linha de código usando a classe PdfSignature. Basta criar um novo objeto PdfSignature com seu arquivo de certificado (.pfx ou .p12) e senha e, em seguida, chamar o método SignPdfFile(). Por exemplo: new IronPDF.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"). Isso aplica uma assinatura digital inviolável usando seu X509Certificate2 para garantir a autenticidade do documento.
Que tipos de assinaturas PDF são suportados?
O IronPDF suporta três tipos principais de assinaturas em PDF: 1) Assinaturas digitais usando certificados X509Certificate2 para autenticação e proteção contra adulteração; 2) Carimbos de assinatura visual que adicionam imagens de assinatura gráfica ou manuscrita aos documentos; e 3) Campos de formulário de assinatura interativos que permitem aos usuários assinar PDFs eletronicamente. Cada tipo atende a diferentes propósitos em relação à segurança do documento e aos requisitos de fluxo de trabalho.
Quais formatos de certificado podem ser usados para assinatura digital?
O IronPDF suporta formatos comuns de certificados digitais, incluindo arquivos .pfx (Personal Information Exchange) e .p12. Esses arquivos de certificado contêm tanto a chave pública quanto a chave privada necessárias para a assinatura digital. A classe PdfSignature do IronPDF pode trabalhar com qualquer objeto X509Certificate2, oferecendo flexibilidade na forma como você carrega e gerencia seus certificados de assinatura.
Posso adicionar uma representação visual à minha assinatura digital?
Sim, o IronPDF permite adicionar elementos visuais às suas assinaturas digitais. Você pode incluir uma representação gráfica, como uma imagem de assinatura manuscrita, o logotipo da empresa ou um carimbo personalizado, juntamente com a assinatura criptográfica. Isso combina a segurança dos certificados digitais com a confirmação visual, tornando os documentos assinados seguros e com uma apresentação profissional.
Como faço para criar um campo de assinatura interativo para que os usuários assinem eletronicamente?
O IronPDF permite adicionar campos de assinatura interativos a documentos PDF. Esses campos permitem que os usuários assinem documentos eletronicamente clicando e desenhando sua assinatura ou carregando uma imagem da assinatura. Esse recurso é perfeito para criar documentos que exigem coleta de assinaturas, como contratos ou formulários que precisam ser assinados por várias partes.
Assinar um PDF garante a integridade do documento?
Sim, ao assinar digitalmente um PDF usando o IronPDF com um certificado X509, você cria um selo inviolável que garante a integridade do documento. A assinatura digital garante que o documento não foi alterado desde a assinatura. Quaisquer modificações no PDF após a assinatura invalidarão a assinatura, alertando os destinatários de que o documento pode ter sido comprometido.

