Questa pagina può contenere testo tradotto automaticamente.
Firma documenti PDF in C# e VB.NET
Le firme digitali vengono utilizzate per autenticare l'identità di un utente e il contenuto del documento PDF. Le firme consentono di dimostrare che il documento PDF:
- Non è stato modificato da quando è stato firmato.
- È stato firmato digitalmente da una persona specifica.
Libreria .NET per firmare documenti PDF
Utilizzare la libreria Docotic.Pdf per firmare documenti PDF nelle applicazioni .NET Framework e .NET Core. Ottieni la libreria e una chiave di licenza gratuita a tempo limitato sulla pagina Scarica la libreria PDF C# .NET.
9.5.17664-dev Ne sono passati 14,820 Download totali di NuGet 4,998,853Docotic.Pdf può creare firme digitali utilizzando diversi algoritmi digest (SHA-1, SHA-256, SHA-384, SHA-512, RIPEMD-160) e diversi formati di firma (adbe.pkcs7.detached o ETSI.CAdES.detached). La libreria può anche verificare le firme PDF.
Aggiungi firma digitale al PDF in C#
Per firmare un documento PDF è necessario un certificato digitale PKCS#12 (file .pfx o .p12) emesso da un'autorità di certificazione (CA) valida. Ecco l'esempio di base che mostra come firmare un documento PDF in C#:
using BitMiracle.Docotic.Pdf;
using (var pdf = new PdfDocument("document_to_sign.pdf"))
{
var options = new PdfSigningOptions("your_cert.p12", "your_cert_password")
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.Pkcs7Detached,
Reason = "Testing digital signatures",
Location = "My workplace",
ContactInfo = "support@example.com"
};
pdf.SignAndSave(options, "signed.pdf");
}
Sostituisci "your_cert.p12" e "your_cert_password" con il file del certificato .p12 o .pfx e la password. Su GitHub è possibile scaricare e provare gli esempi completi di Firma documento PDF in C# e VB.NET.
Ci sono casi in cui è necessario firmare un documento già firmato. Oppure più persone dovrebbero firmare un modulo una dopo l'altra. Anche questo è possibile. I passaggi sono per lo più gli stessi. Assicurati solo di firmare e salvare in modo incrementale. Gli aggiornamenti incrementali non invalidano le firme digitali se si applicano solo le modifiche consentite.
Sono disponibili esempi di Firma di un documento PDF già firmato e Firma di un modulo PDF da parte di più persone in C# e VB.NET per questi casi.
Il codice sopra aggiunge implicitamente un campo firma invisibile al documento PDF e lo utilizza per la firma. Diamo un'occhiata a come aggiungere e personalizzare i campi firma in PDF.
Firma un documento PDF con un'immagine della firma scritta a mano
Spesso è necessario aggiungere un'immagine della firma scritta a mano al PDF oltre alla firma digitale. Questo esempio mostra come aggiungere una firma digitale con un'immagine associata in C#:
using (var pdf = new PdfDocument("document_to_sign.pdf"))
{
var options = new PdfSigningOptions("your_cert.p12", "your_cert_password")
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.Pkcs7Detached,
};
PdfSignatureField field = pdf.Pages[0].AddSignatureField(20, 20, 100, 50);
options.Field = field;
PdfImage image = pdf.AddImage("your_signature.jpg");
options.Appearance.Image = image;
options.Appearance.HideAllText();
pdf.SignAndSave(options, "signed.pdf");
}
Questo codice aggiunge un campo firma, associa il campo alle opzioni di firma e personalizza l'aspetto del campo. Puoi mostrare testo, immagine o entrambi nei campi della firma. Per ulteriori dettagli, consulta gli esempi di classe PdfSignatureAppearanceOptions e Firma un campo firma utilizzando uno stile personalizzato.
Blocca i campi del modulo PDF con un campo firma
Un campo firma può essere utilizzato per bloccare i campi del modulo PDF dopo la firma. Questo esempio mostra come bloccare campi modulo specifici dopo l'accesso in C#:
var first = page.AddSignatureField("first", 100, 100, 200, 50);
// quando il campo "first" è firmato, i campi con i nomi
// "some_text_field" e "some_checkbox" verranno bloccati per la modifica
first.Lock = PdfSignatureFieldLock.CreateLockFields("some_text_field", "some_checkbox");
E il codice seguente mostra come bloccare tutti i campi del modulo dopo la firma:
var second = page.AddSignatureField("second", 100, 200, 200, 50);
// quando il "second" campo viene firmato,
// tutti i campi verranno bloccati per la modifica
second.Lock = PdfSignatureFieldLock.CreateLockAll();
Puoi anche bloccare tutti i campi modulo nel documento PDF tranne i campi specifici. Utilizzare il metodo PdfSignatureFieldLock.CreateLockAllExceptFields per questo.
Scarica e prova gli esempi completi di Firma campo firma con lucchetto in C# e VB.NET da GitHub.
Incorpora il timestamp in una firma digitale
Puoi aggiungere ulteriore sicurezza a una firma digitale incorporando un timestamp. A tale scopo, specificare l'URL dell'autorità timestamp come una delle opzioni di firma. Se richiesto, è inoltre possibile fornire un nome utente e una password.
Al momento della firma, la biblioteca riceverà un timestamp dalla Timestamp Authority e lo incorporerà nella firma.
Per motivi di compatibilità, ti consigliamo di utilizzare uno degli algoritmi digest SHA per le firme con timestamp.
// Sostituisci il seguente URL di test con l'URL dell'autorità timestamp
options.Timestamp.AuthorityUrl = new Uri("http://tsa.starfieldtech.com/");
// Specifica nome utente e password se la tua autorità di timestamp
// richiede l'autenticazione
options.Timestamp.Username = null;
options.Timestamp.Password = null;