
Como editar texto em PDF (tutorial para iniciantes)
Uma assinatura digital é uma técnica matemática que verifica a autenticidade e a integridade de um documento eletrônico. Serve como assinatura eletrônica para assinar documentos digitalmente em diversas jurisdições, garantindo alta segurança e validade legal.
As assinaturas digitais são criadas usando uma chave privada, que é conhecida apenas pelo signatário. Essa chave privada estabelece uma assinatura digital única vinculada ao documento quando este é assinado. A assinatura inclui o nome do signatário, endereço de e-mail e outras informações pessoais. Para confirmar a autenticidade de um documento assinado digitalmente, o destinatário precisa ter acesso à chave pública do signatário. A legitimidade da assinatura é verificada através da sua descriptografia com a chave pública.
Neste tutorial, comparamos como adicionar assinaturas digitais a documentos PDF usando o PDFSharp e o IronPDF . As assinaturas digitais são essenciais para verificar a autenticidade de documentos, e os arquivos PDF são um formato popular para essas operações.
O PDFSharp é uma biblioteca de código aberto conhecida para criação e manipulação de PDFs, enquanto o IronPDF é uma robusta biblioteca de PDFs for .NET, oferecendo recursos similares com funcionalidades avançadas adicionais.
Este guia aborda a assinatura de um documento PDF com uma chave privada e a verificação da assinatura, juntamente com exemplos de código-fonte para ambas as bibliotecas.
Por que as assinaturas digitais são importantes?
As assinaturas digitais garantem a integridade dos documentos e oferecem segurança robusta. São comumente utilizados em contratos, acordos e outros documentos legais.
Principais benefícios:
- Mais seguro e inviolável do que as assinaturas tradicionais.
- Verificado eletronicamente, reduzindo o esforço de verificação manual.
- Habilitar a assinatura remota de documentos em nível global.
- Oferecem maior segurança do que as assinaturas tradicionais.
Visão Geral do PDFSharp
PDFSharp é uma biblioteca C# de código aberto, projetada principalmente para criar e manipular documentos PDF. É amplamente utilizado para tarefas básicas em PDF, como gerar arquivos PDF simples, editar documentos existentes e renderizar gráficos. No entanto, seu suporte nativo para recursos avançados, como assinaturas digitais, é limitado, e os desenvolvedores geralmente precisam recorrer a bibliotecas de terceiros, como o BouncyCastle, para integrar essas funcionalidades. O PDFSharp é de código aberto, sob a Licença MIT, tornando-o uma boa opção para projetos onde custo e flexibilidade são prioridade.
Principais características
- Código aberto e gratuito sob a Licença MIT.
- Criação e manipulação básica de PDFs.
- Pode ser estendido com bibliotecas externas como o BouncyCastle para assinaturas digitais.
- Não oferece suporte nativo para recursos avançados de PDF, como conversão de HTML para PDF e manipulação de formulários complexos.
Visão geral do IronPDF
IronPDF é uma biblioteca .NET robusta para PDF que fornece uma API simples e poderosa para gerar, editar e manipular PDFs. Uma de suas características mais marcantes é a facilidade com que os desenvolvedores podem implementar assinaturas digitais, que são essenciais para verificar a autenticidade de documentos. Além de assinaturas digitais, o IronPDF oferece funcionalidades avançadas como conversão de HTML para PDF , marcas d'água e manipulação de formulários. É especialmente valioso para desenvolvedores que trabalham em projetos comerciais onde a implementação rápida e recursos robustos são prioridade.
Principais características
- Licença comercial com suporte pago e período de teste gratuito disponível.
- API fácil de usar com recursos modernos para assinatura digital e manipulação de documentos.
- Inclui suporte integrado para conversão de formato HTML para PDF, manipulação de formulários e anotações em PDF (como anotações de anexos).
- Integração perfeita com funcionalidades avançadas como carimbo de data/hora, imagens de assinatura visual e criptografia .
Adicionando uma Assinatura Digital Programaticamente com PDFSharp
O PDFSharp é uma biblioteca de código aberto projetada para criação e manipulação de PDFs em C#. No entanto, embora ofereça suporte para adicionar uma assinatura, você precisará integrar uma ferramenta de terceiros, como o BouncyCastle, para garantir a assinatura digital segura e precisa de documentos PDF.
Etapas para Adicionar uma Assinatura Digital com PDFSharp
- Install PDFSharp and BouncyCastle via NuGet.
- Crie um certificado digital usando X509Certificate2 .
- Assine o PDF com BouncyCastle .
Código de exemplo
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added
class Program
{
static void Main(string[] args)
{
// Create a font for the appearance of the signature
var font = new XFont("Verdana", 10.0, XFontStyle.Regular);
// Create a new PDF document
var document = new PdfDocument();
var pdfPage = document.AddPage();
// Prepare graphics for drawing on the PDF page
var xGraphics = XGraphics.FromPdfPage(pdfPage);
var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
// Add some text to the page
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
// Define digital signature appearance options
var options = new DigitalSignatureOptions
{
ContactInfo = "John Doe",
Location = "Seattle",
Reason = "License Agreement",
Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
AppearanceHandler = new SignatureAppearanceHandler()
};
// Sign the document using BouncyCastle signer
var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
// Save the signed document
document.Save("PdfSharpSignature.pdf");
}
static (X509Certificate2, X509Certificate2Collection) GetCertificate()
{
// Locate the certificate file and read its data
var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
var rawData = File.ReadAllBytes(pfxFile);
// Load the certificate using its password (example password)
var certificatePassword = "Passw0rd";
var certificate = new X509Certificate2(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
// Create and return the certificate collection
var collection = new X509Certificate2Collection();
collection.Import(rawData, certificatePassword,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
return (certificate, collection);
}
}Imports System
Imports System.IO
Imports System.Security.Cryptography.X509Certificates
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Imports BouncyCastleSigner ' Hypothetical namespace for illustration
' Ensure that you have the appropriate namespaces added
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Create a font for the appearance of the signature
Dim font = New XFont("Verdana", 10.0, XFontStyle.Regular)
' Create a new PDF document
Dim document = New PdfDocument()
Dim pdfPage = document.AddPage()
' Prepare graphics for drawing on the PDF page
Dim xGraphics = XGraphics.FromPdfPage(pdfPage)
Dim layoutRectangle = New XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point)
' Add some text to the page
xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter)
' Define digital signature appearance options
Dim options = New DigitalSignatureOptions With {
.ContactInfo = "John Doe",
.Location = "Seattle",
.Reason = "License Agreement",
.Rectangle = New XRect(36.0, 700.0, 400.0, 50.0),
.AppearanceHandler = New SignatureAppearanceHandler()
}
' Sign the document using BouncyCastle signer
Dim pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document, New PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options)
' Save the signed document
document.Save("PdfSharpSignature.pdf")
End Sub
Private Shared Function GetCertificate() As (X509Certificate2, X509Certificate2Collection)
' Locate the certificate file and read its data
Dim certFolder = "C:\Users\kyess\AppData\Roaming\Adobe\Acrobat\DC\Security"
Dim pfxFile = Path.Combine(certFolder, "IronSoftware.pfx")
Dim rawData = File.ReadAllBytes(pfxFile)
' Load the certificate using its password (example password)
Dim certificatePassword = "Passw0rd"
Dim certificate = New X509Certificate2(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
' Create and return the certificate collection
Dim collection = New X509Certificate2Collection()
collection.Import(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
Return (certificate, collection)
End Function
End ClassSaída

Como você pode ver aqui, embora tenha sido possível criar um campo de assinatura digital e aplicar o certificado ao nosso novo documento, o processo é extenso, manual e não muito eficiente de implementar quando comparado a bibliotecas como o IronPDF.
Adicionando uma assinatura digital com o IronPDF
O IronPDF oferece aos desenvolvedores um método conciso para assinar digitalmente documentos PDF.
using IronPdf;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
// Load the certificate with its password
var sig = new PdfSignature("IronSoftware.pfx", "your-password");
// Configure additional signature details
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimestampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
// Sign and save the PDF document
sig.SignPdfFile("output.pdf");
}
}Imports IronPdf
Imports System.Security.Cryptography.X509Certificates
Public Class Program
Shared Sub Main(ByVal args() As String)
' Load the certificate with its password
Dim sig = New PdfSignature("IronSoftware.pfx", "your-password")
' Configure additional signature details
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
sig.TimestampUrl = "http://timestamp.digicert.com"
sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 200, 200))
' Sign and save the PDF document
sig.SignPdfFile("output.pdf")
End Sub
End ClassSaída

Este código demonstra como assinar um documento PDF usando a classe PdfSignature do IronPDF. O programa primeiro cria um objeto PdfSignature, especificando a localização de um arquivo de certificado .pfx e sua senha. Em seguida, define propriedades adicionais da assinatura, como o algoritmo de hash (SHA256), o URL de registro de data e hora e uma imagem personalizada para a assinatura (IronPDF.png).
Por fim, o método SignPdfFile é chamado para aplicar a assinatura digital ao documento PDF e salvá-lo como output.pdf. Este processo garante a integridade e a autenticidade do PDF, incorporando a assinatura digital juntamente com um registro de data e hora e uma imagem.
PDFSharp:
- Código aberto sob licença MIT.
- Requer bibliotecas externas (por exemplo, BouncyCastle) para funcionalidades avançadas como assinatura digital.
IronPDF:
- licença comercial com preços baseados em desenvolvedores e instâncias de implantação.
- avaliacao gratuita disponível
- Gratuito para uso em desenvolvimento
Conclusão: IronPDF vs PDFSharp para Assinaturas Digitais em C#
Ao comparar IronPDF e PDFSharp para adicionar assinaturas digitais a PDFs em C#, ambas as bibliotecas oferecem vantagens distintas, dependendo das necessidades do seu projeto.
-
O IronPDF é ideal para desenvolvedores, sejam eles freelancers independentes ou funcionários de empresas, que buscam uma API simples e fácil de usar para aplicar assinaturas digitais a PDFs, e vem com recursos modernos. Sua integração perfeita com aplicativos de assinatura digital, conversão de HTML para PDF e outras funcionalidades de PDF o torna uma ótima opção para projetos comerciais que priorizam a facilidade de uso e a rápida implementação. Com suporte pago e uma estrutura de licenciamento comercial clara, o IronPDF é ideal para empresas que necessitam de uma solução simples e confiável.
-
PDFSharp é excelente na criação e manipulação básica de PDFs, mas não possui os recursos avançados e suporte direto para assinaturas digitais que o IronPDF oferece. Enquanto o PDFSharp é de código aberto e gratuito para uso, sua API é menos intuitiva para trabalhar com assinaturas digitais em comparação com o IronPDF, e os desenvolvedores podem precisar empregar soluções adicionais ou bibliotecas de terceiros para lidar com esses recursos.
Em resumo, o IronPDF é a melhor opção para desenvolvedores que buscam uma solução simples e rápida para assinaturas digitais e tarefas relacionadas a PDFs, especialmente em ambientes comerciais. PDFSharp é mais adequado para tarefas básicas de PDF, mas não possui a mesma facilidade de uso e conjunto de recursos para assinaturas digitais, tornando-o mais adequado para projetos mais simples ou aqueles com necessidades adicionais de personalização.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados

