Diese Seite kann automatisch übersetzten Text enthalten.

PDF-Dokumente in C# und VB.NET signieren

Digitale Signaturen werden verwendet, um die Identität eines Benutzers und den Inhalt des PDF-Dokuments zu authentifizieren. Signaturen ermöglichen den Nachweis, dass das PDF-Dokument:

  • Seit der Signierung nicht geändert wurde.
  • Von einer bestimmten Person digital signiert wurde.

Digitale Signatur in PDF in C# und VB.NET hinzufügen

.NET-Bibliothek zum Signieren von PDF-Dokumenten

Verwenden Sie die Docotic.Pdf-Bibliothek, um PDF-Dokumente in .NET Framework- und .NET Core-Anwendungen zu signieren. Holen Sie sich die Bibliothek und einen kostenlosen, zeitlich begrenzten Lizenzschlüssel auf der C# .NET-PDF-Bibliothek herunterladen-Seite.

Docotic.Pdf kann digitale Signaturen mit verschiedenen Digest-Algorithmen (SHA-1, SHA-256, SHA-384, SHA-512, RIPEMD-160) und verschiedenen Signaturformaten (adbe.pkcs7.detached oder ETSI.CAdES.detached) erstellen. Die Bibliothek kann auch PDF-Signaturen überprüfen.

Digitale Signatur zu PDF in C# hinzufügen

Sie benötigen ein digitales PKCS#12-Zertifikat (.pfx- oder .p12-Datei), das von einer gültigen Zertifizierungsstelle (CA) ausgestellt wurde, um ein PDF-Dokument zu signieren. Hier ist das grundlegende Beispiel, das zeigt, wie Sie ein PDF-Dokument in C# signieren:

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");

Ersetzen Sie "your_cert.p12" und "your_cert_password" durch Ihre eigene .p12- oder .pfx-Zertifikatsdatei und das zugehörige Passwort. Auf GitHub können Sie die vollständigen Beispiele zum Signieren eines PDF-Dokuments in C# und VB.NET herunterladen und ausprobieren.

Es gibt Fälle, in denen Sie ein bereits signiertes Dokument signieren müssen. Oder mehrere Personen sollen ein Formular nacheinander signieren. Auch das ist möglich. Die Schritte sind im Wesentlichen dieselben. Stellen Sie nur sicher, dass Sie inkrementell signieren und speichern. Inkrementelle Aktualisierungen machen digitale Signaturen nicht ungültig, wenn Sie nur zulässige Änderungen anwenden.

Es gibt für diese Fälle Beispiele zum Signieren eines bereits signierten PDF-Dokuments und Beispiele zum Signieren eines PDF-Formulars durch mehrere Personen in C# und VB.NET.

Der obige Code fügt dem PDF-Dokument implizit ein unsichtbares Signaturfeld hinzu und verwendet es zum Signieren. Sehen wir uns an, wie Sie Signaturfelder in PDF hinzufügen und anpassen.

PDF-Dokument mit einem handschriftlichen Signaturbild signieren

Oft müssen Sie zusätzlich zur digitalen Signatur ein Bild einer handschriftlichen Signatur in PDF hinzufügen. Dieses Beispiel zeigt, wie Sie in C# eine digitale Signatur mit zugehörigem Bild hinzufügen:

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.CreateImage("your_signature.jpg");
options.Appearance.Image = image;
options.Appearance.HideAllText();

pdf.SignAndSave(options, "signed.pdf");

Dieser Code fügt ein Signaturfeld hinzu, verknüpft das Feld mit den Signaturoptionen und passt die Darstellung des Felds an. Sie können in Signaturfeldern Text, ein Bild oder beides anzeigen. Weitere Details finden Sie in der PdfSignatureAppearanceOptions-Klasse und in den Beispielen Signieren eines Signaturfelds mit benutzerdefiniertem Stil.

PDF-Formularfelder mit einem Signaturfeld sperren

Ein Signaturfeld kann verwendet werden, um PDF-Formularfelder nach der Signierung zu sperren. Dieses Beispiel zeigt, wie Sie bestimmte Formularfelder nach dem Signieren in C# sperren:

var first = page.AddSignatureField("first", 100, 100, 200, 50);

// wenn das erste Feld signiert ist, werden Felder mit den Namen "some_text_field" und
// "some_checkbox" für die Bearbeitung gesperrt
first.Lock = PdfSignatureFieldLock.CreateLockFields("some_text_field", "some_checkbox");

Und der folgende Code zeigt, wie Sie alle Formularfelder nach dem Signieren sperren:

var second = page.AddSignatureField("second", 100, 200, 200, 50);

// wenn das zweite Feld signiert ist, werden alle Felder für die Bearbeitung gesperrt
second.Lock = PdfSignatureFieldLock.CreateLockAll();

Sie können auch alle Formularfelder im PDF-Dokument außer bestimmten Feldern sperren. Verwenden Sie dafür die Methode PdfSignatureFieldLock.CreateLockAllExceptFields.

Laden Sie die vollständigen Beispiele zum Signieren eines Signaturfelds mit Sperre in C# und VB.NET von GitHub herunter und testen Sie sie.

Zeitstempel in eine digitale Signatur einbetten

Sie können einer digitalen Signatur zusätzliche Sicherheit hinzufügen, indem Sie einen Zeitstempel einbetten. Geben Sie dazu die URL der Timestamp Authority als eine der Signaturoptionen an. Falls erforderlich, können Sie auch einen Benutzernamen und ein Passwort angeben.

Beim Signieren ruft die Bibliothek einen Zeitstempel von der Timestamp Authority ab und bettet ihn in die Signatur ein.

Aus Kompatibilitätsgründen empfehlen wir für signierte Zeitstempel einen der SHA-Digest-Algorithmen zu verwenden.

// Ersetzen Sie die folgende Test-URL durch Ihre URL der Timestamp Authority
options.Timestamp.AuthorityUrl = new Uri("http://tsa.starfieldtech.com/");

// Geben Sie Benutzername und Passwort an, wenn Ihre Timestamp Authority Authentifizierung erfordert
options.Timestamp.Username = null;
options.Timestamp.Password = null;