Digitales Signieren eines PDF-Dokuments
Wichtige Disambiguierung: Signieren einer PDF-Datei
Entwickler fragen häufig, wie sie mit IronPDF programmatisch eine Signatur zu einem PDF-Dokument hinzufügen können. Im Allgemeinen bedeutet Signieren für verschiedene Entwickler unterschiedliche Dinge:
- Um ein Signaturformularfeld zu einem PDF hinzuzufügen, das einige Betrachter zur Signierung auffordern kann.
Erste Schritte mit IronPDF
Beginnen Sie noch heute mit der Verwendung von IronPDF in Ihrem Projekt mit einer kostenlosen Testversion.
Signieren einer PDF-Datei in C#

- Installieren Sie die IronPDF-Bibliothek, um PDF-Dokumente zu signieren
- Fügen Sie granulare Details hinzu und signieren Sie PDF mit
X509Certificate2
- Fügen Sie ein visuelles Bild hinzu, um die digitale Signatur auf verschiedene Weise darzustellen
- Fügen Sie eine handschriftliche Unterschrift in eine PDF-Datei ein
- Signaturfeld in C# hinzufügen
Signieren einer PDF-Datei mit einem digitalen Zertifikat
IronPDF unterstützt viele Möglichkeiten, eine PDF-Datei mit einem digitalen Signaturzertifikat der Formate .pfx
und .p12
zu signieren. In diesem How-To-Leitfaden werden Sie durch alle drei Hauptmethoden geführt, die verwendet werden, um PDF-Dokumente digital zu signieren:
Signing Method | Description |
---|---|
Sign | Sign a PDF with a PdfSignature object |
SignWithFile | Sign PDF with a digital signature certificate(.pfx or .p12) on disk |
SignWithStore | Signs the PDF with digital signature extracted from your computer's signature storage. Based on a thumbprint ID |
Unterstützte Zertifikatsdateien für digitale Signaturen
Wir entsprechen offiziell dem X509Certificate2
-Standard und unterstützen .pfx
- und .p12
-Signaturen. Wenn Ihre Signatur nicht direkt in den Signiermethoden von IronPDF angewendet werden kann, müssen Sie ein X509Certificate2
-Zertifikat erstellen. Anleitungen dazu finden Sie in der Microsoft-Dokumentation.
Signieren: PdfSignatur aus X509Certificate2 erstellen
Die Signiermethoden von IronPDF akzeptieren X509Certificate2
-Objekte mit X509KeyStorageFlags, die auf Exportable gesetzt sind.
Bitte beachten Sie
IronPDF unterstützt nur X509KeyStorageFlags.Exportable. Bei einigen Zertifikaten ist KeyStorageFlags standardmäßig auf Exportable gesetzt. Der Versuch, andere KeyStorageFlags zu verwenden, führt zu einer Ausnahme => Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: 'The requested operation is not supported.'
:path=/static-assets/pdf/content-code-examples/how-to/signing-X509Certificate2-with-privatekey.cs
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Unterschreiben: PdfSignature detaillierte Informationen hinzufügen
Während oder nach der Instanziierung von PdfSignature können dem PdfSignature-Objekt nützliche Informationen hinzugefügt werden, wie z. B. Datum, unterzeichnender Kontakt, Ort, Grund für die Unterzeichnung, Zeitstempel und das Hinzufügen eines Bildes als visuelles Erscheinungsbild im PDF-Dokument.
Tipps
:path=/static-assets/pdf/content-code-examples/how-to/signing-add-granular-information.cs
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
pdf.SaveAs("signed.pdf");
// Create PdfSignature object
var sig = new PdfSignature("IronSoftware.pfx", "123456");
// Add granular information
sig.SignatureDate = new DateTime(2000, 12, 02);
sig.SigningContact = "IronSoftware";
sig.SigningLocation = "Chicago";
sig.SigningReason = "How to guide";
sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
sig.TimeStampUrl = "http://timestamp.digicert.com";
sig.SignatureImage = new PdfSignatureImage("IronSoftware.png", 0, new Rectangle(0, 600, 100, 100));
// Sign and save PDF document
sig.SignPdfFile("signed.pdf");
Demonstration
Möglicherweise sehen Sie ein Ausrufezeichen oder ein Warnzeichen anstelle eines Häkchens. Dies geschieht, weil Adobe die Authentizität und Integrität des Dokuments nicht bestätigen kann, da das Zertifikat nicht vorhanden ist. Um das Häkchen zu erhalten, fügen Sie bitte das Zertifikat zu Adobe hinzu und öffnen Sie das Dokument erneut.
Verschiedene Möglichkeiten zum Hinzufügen von Bildern
Ein Bild kann auf viele Arten einbezogen werden:
- Setzen Sie die SignatureImage-Eigenschaft auf ein neues PdfSignatureImage-Objekt.
- Verwenden Sie die Methode
LoadSignatureImageFromFile
, um ein Bild aus einer Datei zu laden. Die LoadSignatureImageFromFile unterstützt verschiedene Bildformate. - Verwenden Sie die Methode
LoadSignatureImageFromStream
, um das Bild aus dem Stream zu laden. Der Bildstrom kann aus anderen Bibliotheken erzeugt werden, solange er die Formate TGA, PBM, TIFF, BMP, GIF, PNG, JPEG, Webp hat.
:path=/static-assets/pdf/content-code-examples/how-to/signing-add-image.cs
using IronPdf.Signing;
using IronSoftware.Drawing;
// Create PdfSignature object
var sig = new PdfSignature("IronSoftware.pfx", "123456");
// Add image by property
sig.SignatureImage = new PdfSignatureImage("IronSoftware.png", 0, new Rectangle(0, 600, 100, 100));
// Add image by LoadSignatureImageFromFile method
sig.LoadSignatureImageFromFile("IronSoftware.png", 0, new Rectangle(0, 600, 100, 100));
// Import image using IronSoftware.Drawing
AnyBitmap image = AnyBitmap.FromFile("IronSoftware.png");
sig.LoadSignatureImageFromStream(image.ToStream(), 0, new Rectangle(0, 600, 100, 100));
Unterschriftsberechtigungen
Sie können ausdrücklich Bedingungen angeben, unter denen Ihr Zertifikat gültig bleibt. Wenn Sie möchten, dass Ihre Unterschrift bei jeder Änderung ungültig wird, oder nur Änderungen an Formularfeldern zulassen, usw., verwenden Sie bitte die folgende Tabelle, um die Optionen zu sehen:
Keine Änderungen erlaubtDieser Parameter ist optional und wenn er nicht gesetzt wird, wird eine Signatur angewendet, die eine bestimmte Revision beglaubigt und nicht ungültig gemacht werden kann.
Speichern und Signieren einer PDF-Revisionswiederholung
Im folgenden Beispiel öffnen wir eine PDF-Datei, nehmen verschiedene Bearbeitungen vor und signieren sie, bevor wir sie speichern. Für die Unterschriftsberechtigung werden wir nur das Ausfüllen von Formularen als zukünftige Bearbeitung zulassen; andernfalls wird die Signatur durch eine andere Bearbeitung ungültig.
Wir werden dann SaveAsRevision
aufrufen, um die Revision in der Historie zu speichern, und anschließend unser neues Dokument auf der Festplatte speichern.
:path=/static-assets/pdf/content-code-examples/how-to/signing-revision.cs
using IronPdf;
using IronPdf.Rendering;
// Import PDF and enable TrackChanges
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf", TrackChanges: ChangeTrackingModes.EnableChangeTracking);
// ... various edits ...
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, IronPdf.Signing.SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
pdfWithRevision.SaveAs("annual_census_2.pdf");
Verständnis des inkrementellen Speicherns für Signaturen
Während einige Viewer wie Chrome-Browser nur eine Version anzeigen, haben PDF-Dateien die Möglichkeit, frühere Versionen des Dokuments zu speichern, ähnlich wie ein Git-Commit-Verlauf. Sie sehen dies in fortgeschritteneren PDF-Viewern wie Adobe Acrobat.
Beim Umgang mit PDF-Signaturen ist es wichtig, dies zu wissen, da sich das Signieren einer PDF-Datei auf die aktuelle Iteration der Datei bezieht. Ihre PDF-Datei enthält möglicherweise Signaturen für ältere Versionen oder einige nicht signierte Versionen. Wir können uns ein Beispiel wie folgt vorstellen:
PDF Document Iteration | Certificate A | Certificate B | Certificate C | Certificate D |
---|---|---|---|---|
0 (first save) | ✅ | |||
1 | ||||
2 | ||||
3 | ✅ (form field edits only) | ✅ (form field edits only) | ||
4 (only form fields edited) | ✅ | |||
5 | ✅ (no further edits allowed) | ✅ (no further edits allowed) | ✅ (no further edits allowed) |
Oben haben wir Dokumente, die 6 verschiedene Iterationen durchlaufen haben. Dieses Dokument wird möglicherweise in verschiedenen Abteilungen eines Unternehmens zur Genehmigung weitergereicht, bis es in Iteration 3 fertiggestellt wird. In dieser Iteration haben sowohl Person A als auch Person B das Dokument mit der Berechtigung "Nur Formularfeldbearbeitungen" unterzeichnet. Das bedeutet, dass das Ausfüllen von Formularfeldern im PDF-Dokument erlaubt ist, aber jede andere Änderung des Dokuments macht ihre Unterschrift ungültig.
Im obigen Beispiel können wir davon ausgehen, dass Person C das Formular ausgefüllt und an Person A, B und D zurückgeschickt hat, die alle das Dokument ein letztes Mal mit der Erlaubnis "Keine Änderungen erlaubt" unterzeichnet haben. Da in diesem Dokument keine ungültigen Aktionen durchgeführt wurden, erhalten wir beim Ausführen der Signaturmethode von IronPDF true.
Zurück zu einer alten Revision
Um auf eine frühere Revision eines PDFs zurückzugehen, können Sie die GetRevision
-Methode verwenden. Dadurch werden alle seit dieser Revision vorgenommenen Änderungen, einschließlich neuerer Signaturen, vergessen. Verwenden Sie dazu:
:path=/static-assets/pdf/content-code-examples/how-to/signing-revert-revision.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("report.pdf");
int versions = pdf.RevisionCount; // total revisions
PdfDocument rolledBackPdf = pdf.GetRevision(2);
rolledBackPdf.SaveAs("report-draft.pdf");
Signaturen entfernen
IronPDF verfügt über eine Methode RemoveSignatures
, die alle Signaturen jeder Revision eines PDF-Dokuments entfernen wird. Die Verwendung ist wie folgt:
:path=/static-assets/pdf/content-code-examples/how-to/signing-remove-signature.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");
pdf.RemoveSignatures();
Alle Signaturen in einer PDF-Datei prüfen
Der Aufruf der Methode verify signatures für ein PDF-Dokument prüft alle Signaturen aus allen Dokument-Iterationen und stellt sicher, dass sie alle noch gültig sind. Dies wird ein bool
mit dem Wert true
zurückgeben, wenn alle gültig sind.
:path=/static-assets/pdf/content-code-examples/how-to/signing-verify-signatures.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
bool isValid = pdf.VerifyPdfSignatures();
Eine Signatur auf eine PDF-Datei stempeln
Zunächst werde ich mit einer PDF-Datei beginnen, die ich unterschreiben möchte. Ich werde diese Beispielrechnung verwenden:
Wir werden eine handschriftliche Unterschrift, die als .png
-Bild vorliegt, auf unser PDF anwenden. Dies kann eine handschriftliche Unterschrift oder das Bild sein, das bei der Erstellung einer Zertifikatsdatei verwendet wurde. Dies ist die Beispielsignatur, die wir verwenden werden:

Code
Dazu werden wir den folgenden Code verwenden, um die handschriftliche Unterschrift als Wasserzeichen in die PDF-Datei zu stempeln:
:path=/static-assets/pdf/content-code-examples/how-to/signing-handwritten.cs
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.ApplyWatermark("<img src='signature.png'/>", 90, VerticalAlignment.Bottom, HorizontalAlignment.Right);
pdf.SaveAs("official_invoice.pdf");
Ausgabe Ergebnis
Nachdem dieser Code ausgeführt wurde, haben wir diese Ausgabedatei, die unten rechts unsere Signatur trägt:
Hinzufügen eines unsignierten Unterschriftsfeldes zu einer PDF-Datei
Um ein unsigniertes oder leeres Signaturfeld hinzuzufügen, müssen Sie zunächst das Signaturfeld erstellen, indem Sie das Signaturobjekt instanziieren. Als Nächstes greifen Sie im Ziel-PDF-Dokument auf die Form-Eigenschaft zu und übergeben das neu erstellte Signaturobjekt an die Add
-Methode. Schließlich exportieren Sie das PDF mit dem leeren Signaturformular.
:path=/static-assets/pdf/content-code-examples/how-to/signing-unsigned-signature.cs
using IronPdf;
using IronSoftware.Forms;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");
// Configure required parameters
string name = "cert";
uint pageIndex = 0;
double x = 100;
double y = 600;
double width = 300;
double height = 100;
// Create signature
SignatureFormField signature = new SignatureFormField(name, pageIndex, x, y, width, height);
// Add signature
pdf.Form.Add(signature);
pdf.SaveAs("signature.pdf");

Sie können mehr über IronPDF und die unterstützten Formulare im Artikel Wie man PDF-Formulare erstellt lesen.