PDFsharp PDF-Dokumente digital signieren vs IronPDF (Code-Beispiel)
Eine digitale Signatur ist eine mathematische Technik, die die Authentizität und Integrität eines elektronischen Dokuments überprüft. Sie dient als elektronische Signatur, um Dokumente in mehreren Gerichtsbarkeiten digital zu signieren und so eine hohe Sicherheit und rechtliche Gültigkeit zu gewährleisten.
Digitale Signaturen werden mit einem privaten Schlüssel erstellt, der nur dem Unterzeichner bekannt ist. Dieser private Schlüssel stellt eine eindeutige digitale Signatur her, die mit dem Dokument verknüpft ist, wenn es signiert wird. Die Signatur enthält den Namen, die E-Mail-Adresse und andere persönliche Informationen des Unterzeichners. Um die Authentizität eines digital signierten Dokuments zu bestätigen, benötigt der Empfänger Zugriff auf den öffentlichen Schlüssel des Unterzeichners. Die Legitimität der Signatur wird durch Entschlüsselung mit dem öffentlichen Schlüssel überprüft.
In diesem Tutorial vergleichen wir, wie digitale Signaturen zu PDF-Dokumenten mit PDFsharp und IronPDF hinzugefügt werden. Digitale Signaturen sind essentiell, um die Authentizität von Dokumenten zu überprüfen, und PDF-Dateien sind ein beliebtes Format für solche Vorgänge.
PDFsharp ist eine bekannte Open-Source-Bibliothek zur Erstellung und Bearbeitung von PDF-Dateien, während IronPDF eine robuste .NET-PDF-Bibliothek ist, die ähnliche Funktionen mit zusätzlichen fortgeschrittenen Funktionalitäten bietet.
Diese Anleitung umfasst das Signieren eines PDF-Dokuments mit einem privaten Schlüssel und die Überprüfung der Signatur, zusammen mit Beispielquellcode für beide Bibliotheken.
Warum sind digitale Signaturen wichtig?
Digitale Signaturen gewährleisten die Integrität von Dokumenten und bieten eine hohe Sicherheit. Sie werden häufig für Verträge, Vereinbarungen und andere rechtliche Dokumente verwendet.
Wichtige Vorteile:
- Sicherer und manipulationssicherer als herkömmliche Signaturen.
- Elektronisch verifiziert, wodurch der manuelle Verifikationsaufwand reduziert wird.
- Ermöglichen das Remote-Signieren von Dokumenten weltweit.
- Bieten eine höhere Sicherheit als herkömmliche Signaturen.
PDFsharp Überblick
PDFSharp ist eine Open-Source-C#-Bibliothek, die hauptsächlich für die Erstellung und Bearbeitung von PDF-Dokumenten entwickelt wurde. Sie wird häufig für grundlegende PDF-Aufgaben verwendet, wie das Erstellen einfacher PDF-Dateien, Bearbeiten bestehender Dokumente und Rendern von Grafiken. Ihre native Unterstützung für fortgeschrittene Funktionen wie digitale Signaturen ist jedoch begrenzt, und Entwickler müssen oft auf Drittanbieterbibliotheken wie BouncyCastle zurückgreifen, um solche Funktionen zu integrieren. PDFsharp ist Open-Source, unter der MIT-Lizenz, was es zu einer guten Wahl für Projekte macht, bei denen Kosten und Flexibilität Priorität haben.
Hauptmerkmale
- Open-Source und kostenlos unter der MIT-Lizenz.
- Grundlegende PDF-Erstellung und -Manipulation.
- Kann mit externen Bibliotheken wie BouncyCastle für digitale Signaturen erweitert werden.
- Fehlt die native Unterstützung für fortgeschrittene PDF-Funktionen wie HTML-zu-PDF-Konvertierung und komplexe Formularverarbeitung.
IronPDF Überblick

IronPDF ist eine robuste .NET-PDF-Bibliothek, die eine einfache und leistungsstarke API für die Erstellung, Bearbeitung und Manipulation von PDFs bietet. Eine ihrer herausragenden Funktionen ist die leichte Implementierung digitaler Signaturen durch Entwickler, die wesentlich für die Überprüfung der Dokumentenautentizität sind. Zusätzlich zu digitalen Signaturen unterstützt IronPDF fortgeschrittene Funktionalitäten wie HTML-zu-PDF-Konvertierung, Wasserzeichen und Formularverarbeitung. Es ist besonders wertvoll für Entwickler, die an kommerziellen Projekten arbeiten, bei denen schnelle Implementierung und robuste Funktionen Priorität haben.
Hauptmerkmale
- Kommerzielle Lizenz mit bezahltem Support und eine kostenlose Testversion verfügbar.
- Einfach zu bedienende API mit modernen Funktionen für digitale Signaturen und Dokumentenmanipulation.
- Enthält integrierte Unterstützung für die Konvertierung von HTML-zu-PDF-Formaten, Formularverarbeitung und PDF-Anmerkungen (wie Anhangsanmerkungen).
- Nahtlose Integration mit fortgeschrittenen Funktionen wie Zeitstempelung, visuellen Signaturbildern und Verschlüsselung.
Programmgesteuertes Hinzufügen einer digitalen Signatur mit PDFsharp
PDFsharp ist eine Open-Source-Bibliothek, die für die Erstellung und Bearbeitung von PDFs in C# entwickelt wurde. Zwar bietet sie Unterstützung für das Hinzufügen einer Signatur, aber Sie müssen ein Drittanbietertool wie BouncyCastle integrieren, um eine sichere, präzise digitale Signierung von PDF-Dokumenten sicherzustellen.
Schritte zum Hinzufügen einer digitalen Signatur mit PDFsharp
- Installieren Sie PDFsharp und BouncyCastle über NuGet.
- Erstellen Sie ein digitales Zertifikat mit X509Certificate2.
- Signieren Sie das PDF mit BouncyCastle.
Beispielcode
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);
}
}
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 Class
Ausgabe

Wie Sie hier sehen können, war es zwar möglich, ein digitales Signaturfeld zu erstellen und das Zertifikat auf unser neues Dokument anzuwenden, aber der Prozess ist umfangreich, manuell und nicht besonders effizient im Vergleich zu Bibliotheken wie IronPDF.
Hinzufügen einer digitalen Signatur mit IronPDF
IronPDF bietet Entwicklern eine prägnante Methode zum digitalen Signieren von PDF-Dokumenten.
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");
}
}
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 Class
Ausgabe

Dieser Code zeigt, wie ein PDF-Dokument unter Verwendung der PdfSignature-Klasse von IronPDF signiert wird. Das Programm erstellt zuerst ein PdfSignature-Objekt, wobei die Position einer .pfx-Zertifikatsdatei und deren Passwort angegeben werden. Zusätzlich werden weitere Signaturattribute festgelegt, wie der Hash-Algorithmus (SHA256), die Zeitstempel-URL und ein benutzerdefiniertes Bild für die Signatur (IronPDF.png).
Schließlich wird die Methode SignPdfFile aufgerufen, um die digitale Signatur auf das PDF-Dokument anzuwenden und als output.pdf zu speichern. Dieser Prozess stellt die Integrität und Authentizität des PDFs durch Einbetten der digitalen Signatur zusammen mit einem Zeitstempel und einem visuellen Bild sicher.
PDFSharp:
- Open-Source unter der MIT-Lizenz.
- Erfordert externe Bibliotheken (z.B. BouncyCastle) für fortgeschrittene Funktionen wie digitales Signieren.
IronPDF:
- Kommerzielle Lizenz mit preisgünstigem Angebot für Entwickler und Bereitstellungsinstanzen.
- Kostenlose Testversion verfügbar
- Kostenlose Entwicklungsnutzung
Schlussfolgerung: IronPDF vs. PDFsharp für digitale Signaturen in C
Beim Vergleich von IronPDF und PDFsharp für das Hinzufügen von digitalen Signaturen zu PDFs in C# bieten beide Bibliotheken je nach Projektanforderungen unterschiedliche Vorteile.
-
IronPDF ist ideal für Entwickler, sei es unabhängige freiberufliche Softwareentwickler oder Entwickler, die für ein Unternehmen arbeiten und eine einfache, leicht zu verwendende API zum Anwenden digitaler Signaturen auf PDFs suchen, und bietet moderne Funktionen. Die nahtlose Integration mit der Anwendung digitaler Signaturen, HTML-zu-PDF-Konvertierung und anderen PDF-Funktionalitäten macht es zu einer ausgezeichneten Wahl für kommerzielle Projekte, die Benutzerfreundlichkeit und schnelle Implementierung priorisieren. Mit bezahltem Support und einer klaren kommerziellen Lizenzstruktur eignet sich IronPDF gut für Unternehmen, die eine unkomplizierte, zuverlässige Lösung benötigen.
- PDFsharp glänzt bei der grundlegenden PDF-Erstellung und -Bearbeitung, fehlt jedoch die fortgeschrittenen Funktionen und die direkte Unterstützung für digitale Signaturen, die IronPDF bietet. Obwohl PDFsharp Open-Source und kostenlos nutzbar ist, ist seine API weniger intuitiv für die Arbeit mit digitalen Signaturen im Vergleich zu IronPDF, und Entwickler müssen möglicherweise zusätzliche Lösungen oder Drittanbieterbibliotheken nutzen, um diese Funktionen zu bewältigen.
Zusammenfassend ist IronPDF die beste Wahl für Entwickler, die nach einer einfachen, schnellen Lösung für digitale Signaturen und damit verbundenen PDF-Aufgaben suchen, insbesondere in kommerziellen Umgebungen. PDFsharp ist eher für grundlegende PDF-Aufgaben geeignet, verfügt jedoch nicht über dieselbe Benutzerfreundlichkeit und Funktionsumfang für digitale Signaturen und ist daher besser für einfachere Projekte oder solche mit zusätzlichen Anpassungsbedarf geeignet.
Häufig gestellte Fragen
Wie stellen digitale Signaturen die Authentizität und Integrität von PDF-Dokumenten sicher?
Digitale Signaturen verwenden kryptografische Techniken, um zu überprüfen, dass ein PDF-Dokument nach dem Signieren nicht verändert wurde. Sie bestätigen die Identität des Unterzeichners und gewährleisten, dass der Inhalt des Dokuments unverändert bleibt, wodurch Sicherheit und rechtliche Gültigkeit gewährleistet werden.
Welche Herausforderungen könnten Entwickler bei der Verwendung von PDFsharp zur Hinzufügung digitaler Signaturen begegnen?
Bei der Verwendung von PDFsharp zur Hinzufügung digitaler Signaturen müssen Entwickler in der Regel Drittanbieter-Bibliotheken wie BouncyCastle integrieren. Diese Anforderung kann den Implementierungsprozess verkomplizieren, da Entwickler zusätzliche Abhängigkeiten verwalten müssen, um digitale Zertifikate zu erstellen und PDFs zu signieren.
Warum könnte ein Entwickler eine kommerzielle PDF-Bibliothek gegenüber einer Open-Source-Bibliothek für digitale Signaturen wählen?
Eine kommerzielle PDF-Bibliothek bietet erweiterte Funktionen, integrierte Unterstützung für digitale Signaturen und eine benutzerfreundliche API. Diese Eigenschaften machen sie für Entwickler geeignet, die eine schnelle, zuverlässige Lösung mit dediziertem Support suchen, insbesondere in kommerziellen Projekten, in denen Zeit und Effizienz entscheidend sind.
Wie kann HTML in einer .NET-Anwendung in ein PDF umgewandelt werden?
HTML kann in einer .NET-Anwendung in ein PDF umgewandelt werden, indem man eine Bibliothek wie IronPDF verwendet, die Methoden wie RenderHtmlAsPdf bereitstellt, um HTML-Strings oder -Dateien direkt in PDF-Dokumente zu transformieren, und verschiedene Styling- und Skripting-Optionen unterstützt.
Welche Vorteile bietet die Verwendung von IronPDF für die Handhabung von PDFs in kommerziellen Projekten?
IronPDF bietet eine umfassende Suite von Funktionen zur Handhabung von PDFs, einschließlich digitaler Signaturen, HTML-zu-PDF-Umwandlung und Formularverarbeitung. Sein robuster Support und die benutzerfreundliche API machen es ideal für kommerzielle Projekte, die fortschrittliche Funktionalität und schnelle Umsetzung priorisieren.
Kann man mit einer .NET-Bibliothek einen Zeitstempel zu einer PDF-Digitalsignatur hinzufügen?
Ja, mit einer Bibliothek wie IronPDF kann man einen Zeitstempel zu einer PDF-Digitalsignatur hinzufügen, indem man die URL des Zeitstempel-Servers in der Signaturkonfiguration angibt. Diese Funktion erhöht die Vertrauenswürdigkeit und rechtliche Konformität des signierten Dokuments.
Was sollte bei der Wahl einer PDF-Bibliothek für die Implementierung digitaler Signaturen berücksichtigt werden?
Bei der Wahl einer PDF-Bibliothek für digitale Signaturen sollten Faktoren wie Benutzerfreundlichkeit, Unterstützung für erweiterte Funktionen, Integrationsmöglichkeiten mit Drittanbieter-Tools und die Verfügbarkeit von dediziertem Kundensupport berücksichtigt werden, die in kommerziellen Bibliotheken wie IronPDF oft umfassender sind.



