Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

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

PDFsharp Sign PDF documents Digitally vs IronPDF (Code Example): Figure 1 - image.png

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

  1. Installieren Sie PDFsharp und BouncyCastle über NuGet.
  2. Erstellen Sie ein digitales Zertifikat mit X509Certificate2.
  3. 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);
    }
}
$vbLabelText   $csharpLabel

Ausgabe

PDFsharp Sign PDF documents Digitally vs IronPDF (Code Example): Figure 2

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");
    }
}
$vbLabelText   $csharpLabel

Ausgabe

PDFsharp Sign PDF documents Digitally vs IronPDF (Code Example): Figure 3

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:

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.

pDFsharp und BouncyCastle sind eingetragene Warenzeichen ihrer jeweiligen Eigentümer. Diese Seite ist nicht mit PDFsharp oder BouncyCastle verbunden, unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt des Schreibens wider.)}]

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.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen