Ir para o conteúdo do rodapé
COMPARAçãO DE PRODUTOS

Migre do Aspose PDF para o IronPDF

"Assinatura" significa três coisas diferentes no IronPDF, e elas não são intercambiáveis: uma assinatura digital à prova de adulteração suportada por um certificado, um carimbo visual de uma imagem manuscrita e um campo interativo para um usuário assinar posteriormente. Suas propriedades de segurança diferem, então os casos de uso se dividem ao longo dessa linha. O núcleo criptográfico é a classe PdfSignature com um X509Certificate2 carregado de um arquivo .pfx ou .p12, aplicado com pdf.Sign(...). Isso vincula a identidade ao conteúdo, para que qualquer edição posterior quebre a assinatura.

Contratos e Acordos Evidentes a Alterações

O que a maioria das equipes busca primeiro. Uma assinatura de certificado prova que o documento é autêntico e inalterado, e permite que você incorpore um rastro de auditoria (motivo, localização, contato, data) e um carimbo de tempo confiável:

using IronPdf;
using IronPdf.Signing;
using System;

var pdf = PdfDocument.FromFile("contract.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Contractual Agreement",
    SigningLocation = "Chicago, USA",
    SignatureDate = DateTime.Now,
    TimeStampUrl = new Uri("http://timestamp.digicert.com"),
    TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
};
pdf.Sign(signature);
pdf.SaveAs("contract-signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System;

var pdf = PdfDocument.FromFile("contract.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Contractual Agreement",
    SigningLocation = "Chicago, USA",
    SignatureDate = DateTime.Now,
    TimeStampUrl = new Uri("http://timestamp.digicert.com"),
    TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
};
pdf.Sign(signature);
pdf.SaveAs("contract-signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System

Dim pdf = PdfDocument.FromFile("contract.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningReason = "Contractual Agreement",
    .SigningLocation = "Chicago, USA",
    .SignatureDate = DateTime.Now,
    .TimeStampUrl = New Uri("http://timestamp.digicert.com"),
    .TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
}
pdf.Sign(signature)
pdf.SaveAs("contract-signed.pdf")
$vbLabelText   $csharpLabel

Um carimbo de tempo de uma autoridade confiável fornece prova criptográfica de quando um documento foi assinado, independentemente do relógio local — o que é importante para arquivamentos e submissões regulamentadas.

Bloqueando documentos após a assinatura

A configuração SignaturePermissions controla o que é permitido posteriormente: NoChangesAllowed bloqueia o documento, FormFillingAllowed permite apenas a entrada de campo e AnnotationsAndFormFillingAllowed também permite anotações. Qualquer ação não permitida invalida a assinatura, o que atende a certificados emitidos, políticas aprovadas e declarações finalizadas.

Fluxos de Trabalho de Aprovação Multiparte

Porque PDFs suportam salvamento incremental, uma assinatura se aplica a uma revisão específica. Cada aprovador assina seu próprio, e o histórico registra quem assinou o quê, quando e o que mudou. Isso cobre co-assinatura e aprovação sequencial.

Verificação e Portões de Auditoria

Um pipeline pode recusar qualquer documento que falhar em verificar, então reverter ou remover assinaturas:

var pdf = PdfDocument.FromFile("signed-report.pdf");
bool valid = pdf.VerifySignatures();

if (!valid)
{
    pdf.RemoveSignatures();
    pdf.SaveAs("report-unsigned.pdf");
}
var pdf = PdfDocument.FromFile("signed-report.pdf");
bool valid = pdf.VerifySignatures();

if (!valid)
{
    pdf.RemoveSignatures();
    pdf.SaveAs("report-unsigned.pdf");
}
Dim pdf = PdfDocument.FromFile("signed-report.pdf")
Dim valid As Boolean = pdf.VerifySignatures()

If Not valid Then
    pdf.RemoveSignatures()
    pdf.SaveAs("report-unsigned.pdf")
End If
$vbLabelText   $csharpLabel

Aprovação Visível sem Criptografia

Quando você só precisa da aparência de uma assinatura, não de não repudiação legal, carimbe uma imagem manuscrita escaneada com o recurso de carimbo ou marca d'água. Ótimo para aprovações internas, desde que você deixe claro o que é.

Carimbo ou Certificado, e Dois Pegadinhas

Nunca deixe uma imagem carimbada substituir uma assinatura de certificado. Um carimbo são pixels em uma página: copiável, não verificável, sem garantia de que o documento é inalterado. Uma assinatura de certificado é à prova de adulterações e vincula identidade ao conteúdo criptograficamente. Use o carimbo para aparência, o certificado para prova.

Duas coisas que pegam as pessoas desprevenidas. Carregue o certificado com X509KeyStorageFlags.Exportable, ou a chave privada não poderá ser usada e a assinatura falhará. E se um visualizador mostrar um aviso em vez de um tique verde, o certificado não está na loja de confiança desse visualizador; a assinatura ainda é válida, mas a confiança deve ser estabelecida separadamente.

Perguntas frequentes

Quais são os três tipos de assinatura de PDF no IronPDF?

O IronPDF suporta: (1) assinaturas digitais criptográficas respaldadas por um certificado X.509 que vinculam identidade ao conteúdo e se invalidam em caso de adulteração; (2) carimbos de imagem visual que colocam uma imagem de assinatura manuscrita na página sem prova criptográfica; e (3) campos de assinatura interativos onde o usuário assina posteriormente dentro de um visualizador de PDF.

Como adiciono uma assinatura digital que evidencia adulterações em um PDF em C#?

Carregue um certificado X.509 de um arquivo .pfx ou .p12 em um objeto PdfSignature, defina o motivo da assinatura, localização, data e opcionalmente uma URL de carimbo de hora confiável, depois chame pdf.Sign(signature) e salve.

Qual é a diferença entre uma assinatura digital de PDF e um carimbo visual?

Uma assinatura digital vincula criptograficamente uma identidade de certificado ao conteúdo do documento — qualquer edição posterior a quebra. Um carimbo visual é apenas uma imagem na página: copiável, não verificável, e não garante que o documento não foi alterado. Use carimbos para aparência; certificados para prova legal.

Por que o IronPDF falha ao assinar com 'chave privada não acessível'?

Carregue o certificado X.509 com a flag X509KeyStorageFlags.Exportable. Sem ela, a chave privada não pode ser acessada para assinatura.

Como verifico e removo assinaturas de um PDF no IronPDF?

Chame pdf.VerifySignatures() para verificar se todas as assinaturas são válidas. Se o resultado for falso, chame pdf.RemoveSignatures() para removê-las antes de reprocessar ou re-assinar.

Curtis Chau
Redator Técnico

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 ...

Leia mais

Equipe de Suporte Iron

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim