PRODUKT-VERGLEICHE

PDFsharp Signieren von PDF-Dokumenten digital vs. IronPDF (Beispielcode)

Jordi Bardia
Jordi Bardia
19. Februar 2025
Teilen Sie:

Einführung

Eine digitale Signatur ist eine mathematische Technik, die die Authentizität und Integrität eines elektronischen Dokuments überprüft. Es wird als elektronische Signatur verwendet, um Dokumente in mehreren Gerichtsbarkeiten digital zu signieren und dabei hohe Sicherheit und rechtliche Gültigkeit zu gewährleisten.

Ein privater Schlüssel, der nur dem Unterzeichner bekannt ist, wird verwendet, um eine einzigartige digitale Signatur zu erstellen und sie mit dem Dokument zu verbinden, wenn es digital signiert wird. Der Name, die E-Mail-Adresse und andere persönliche Informationen des Unterzeichners sind in dieser Signatur enthalten. Die Authentizität eines digital signierten Dokuments kann nur bestätigt werden, wenn der Empfänger Zugriff auf den öffentlichen Schlüssel des Unterzeichners hat. Die Legitimität der Signatur wird durch Entschlüsselung mit öffentlichen Schlüsseln bestätigt.

In diesem Tutorial vergleichen wir, wie man digitale Signaturen zu PDF-Dokumenten hinzufügt mitPDFSharp undIronPDF. Digitale Signaturen sind entscheidend für die Überprüfung der Echtheit von Dokumenten, und PDF-Dateien sind ein beliebtes Format für solche Operationen.

PDFsharp ist eine bekannte Open-Source-Bibliothek zur Erstellung und Bearbeitung von PDFs, während IronPDF eine robuste .NET-PDF-Bibliothek ist, die ähnliche Funktionen mit zusätzlichen erweiterten Funktionalitäten bietet.

Dieser Leitfaden behandelt das Signieren eines PDF-Dokuments mit einem privaten Schlüssel und das Überprüfen der Signatur sowie Beispiele für Quellcodes für beide Bibliotheken.

Warum sind digitale Signaturen wichtig?

Digitale Signaturen gewährleisten die Integrität von Dokumenten und bieten robuste Sicherheit. Sie werden häufig für Verträge, Vereinbarungen und andere juristische Dokumente verwendet.

Wichtige Vorteile:

  • Sicherer und manipulationssicherer als herkömmliche Unterschriften.
  • Elektronisch verifiziert, wodurch manuelle Überprüfungsaufwände reduziert werden.
  • Ermöglichen Sie die Remote-Signatur von Dokumenten weltweit.
  • Bieten Sie mehr Sicherheit als herkömmliche Signaturen.

PDFsharp Übersicht

PDFSharp ist eine Open-Source C#-Bibliothek, die hauptsächlich für das Erstellen und Bearbeiten von PDF-Dokumenten entwickelt wurde. Es wird häufig für grundlegende PDF-Aufgaben verwendet, wie das Erstellen einfacher PDF-Dateien, das Bearbeiten vorhandener Dokumente und das Rendern von Grafiken. Allerdings ist die native Unterstützung für fortgeschrittene Funktionen wie digitale Signaturen begrenzt, und Entwickler müssen häufig auf Drittanbieterbibliotheken, wie zum Beispiel BouncyCastle, zurückgreifen, um solche Funktionalitäten zu integrieren. PDFsharp ist Open-Source und steht unter der MIT-Lizenz, was es zu einer guten Wahl für Projekte macht, bei denen Kosten und Flexibilität Priorität haben.

Wesentliche Merkmale

  • Open-Source und kostenlos unter der MIT-Lizenz.
  • Grundlegende PDF-Erstellung und -Bearbeitung.
  • Kann mit externen Bibliotheken wie BouncyCastle für digitale Signaturen erweitert werden.
  • Fehlt eine sofort einsatzbereite Unterstützung für erweiterte PDF-Funktionen wie HTML-zu-PDF-Konvertierung und komplexe Formularverarbeitung.

IronPDF Überblick

PDFsharp Signieren Sie PDF-Dokumente digital vs. IronPDF (Codebeispiel): Abbildung 1 - image.png

IronPDF ist eine robuste .NET PDF-Bibliothek, die eine einfache und leistungsstarke API zum Erstellen, Bearbeiten und Verarbeiten von PDFs bietet. Eine seiner herausragenden Funktionen ist die einfache Implementierung digitaler Signaturen durch Entwickler, die für die Überprüfung der Dokumentenauthentizität unerlässlich sind. Neben digitalen Signaturen unterstützt IronPDF erweiterte Funktionen wie HTML-zu-PDF-Konvertierung, Wasserzeichen und Formularbearbeitung. Es ist besonders wertvoll für Entwickler, die an kommerziellen Projekten arbeiten, bei denen schnelle Implementierung und robuste Funktionen eine Priorität sind.

Wesentliche Merkmale

  • Kommerzielle Lizenz mit bezahltem Support und eine kostenlose Testversion verfügbar.
  • Benutzerfreundliche API mit modernen Funktionen fürDigitales Signierenund Dokumentenmanipulation.
  • Beinhaltet integrierte Unterstützung für die Umwandlung von HTML in PDF-Format,FormularverarbeitungundPDF-Anmerkungen (wie Anhangsbemerkungen).
  • N nahtlose Integration mit erweiterten Funktionen wie Zeitstempelung, visuellen Signaturbildern undverschlüsselung.

Hinzufügen einer digitalen Signatur programmgesteuert mit PDFsharp

PDFsharp ist eine Open-Source-Bibliothek, die zur Erstellung und Bearbeitung von PDFs in C# entwickelt wurde. Allerdings, obwohl es Unterstützung zum Hinzufügen einer Signatur bietet, müssen Sie ein Drittanbieter-Tool wie BouncyCastle integrieren, um eine sichere, präzise digitale Signierung von PDF-Dokumenten zu gewährleisten.

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.

Beispiel Code

using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
    static void Main(string[] args)
    {
        var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
        var document = new PdfSharp.Pdf.PdfDocument();
        var pdfPage = document.AddPage();
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
        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()
        };
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
    new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
        document.Save("PdfSharpSignature.pdf");
    }
    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);
        // This code is for demonstration only. Do not use password literals for real certificates in source code.
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData,
            certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
    static void Main(string[] args)
    {
        var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
        var document = new PdfSharp.Pdf.PdfDocument();
        var pdfPage = document.AddPage();
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
        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()
        };
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
    new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
        document.Save("PdfSharpSignature.pdf");
    }
    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);
        // This code is for demonstration only. Do not use password literals for real certificates in source code.
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData,
            certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}

Ausgabe

PDFsharp Signieren Sie PDF-Dokumente digital vs IronPDF (Beispielcode): Abbildung 2

Wie Sie hier sehen können, obwohl es möglich war, ein digitales Signaturfeld zu erstellen und das Zertifikat auf unser neues Dokument anzuwenden, ist der Prozess umfangreich, manuell und im Vergleich zu Bibliotheken wie IronPDF nicht besonders effizient zu implementieren.

Hinzufügen einer digitalen Signatur mit IronPDF

IronPDF bietet Entwicklern eine prägnante Methode fürdigital signieren PDF-Dokumente.

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
    static void Main(string[] args)
    {
        // Create PdfSignature object
    var sig = new PdfSignature("IronSoftware.pfx", "your-password");
    // Add granular information
    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 PDF document
    sig.SignPdfFile("output.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
    static void Main(string[] args)
    {
        // Create PdfSignature object
    var sig = new PdfSignature("IronSoftware.pfx", "your-password");
    // Add granular information
    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 PDF document
    sig.SignPdfFile("output.pdf");
    }
}

Ausgabe

PDFsharp Signieren von PDF-Dokumenten Digital vs IronPDF (Codebeispiel): Abbildung 3

Dieser Code zeigt, wie man ein PDF-Dokument mit der PdfSignature-Klasse von IronPDF signiert. Das Programm erstellt zuerst ein PdfSignature-Objekt, indem es den Speicherort einer .pfx-Zertifikatsdatei und deren Passwort angibt. Dann werden weitere Signatur-Eigenschaften festgelegt, wie zum Beispiel der Hash-Algorithmus(SHA256), timestamp URL (http://timestamp.digicert.com)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 es als output.pdf zu speichern. Dieser Prozess gewährleistet die Integrität und Authentizität des PDFs, indem die digitale Signatur zusammen mit einem Zeitstempel und einem visuellen Bild eingebettet wird.

PDFSharp

  • Open-Source unter MIT-Lizenz.
  • Benötigt externe Bibliotheken(z.B. BouncyCastle)für erweiterte Funktionen wie das digitale Signieren.

    IronPDF:

  • Kommerzielle Lizenzmit Preisen, die auf Entwicklern und Bereitstellungsinstanzen basieren.
  • Free Trialverfügbar
  • Kostenlos für die Entwicklungsnutzung

Fazit: IronPDF vs PDFsharp für digitale Signaturen in C

Beim Vergleich von IronPDF und PDFsharp für das Hinzufügendigitale Signaturenin 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 die eine einfache, benutzerfreundliche API zur Anwendung digitaler Signaturen auf PDFs suchen. Es bietet moderne Funktionen. Nahtlose Integration mit der digitalen Signaturanwendung,HTML-zu-PDF-Konvertierungund andere PDF-Funktionen machen es zu einer hervorragenden Wahl für kommerzielle Projekte, die Benutzerfreundlichkeit und schnelle Implementierung priorisieren. Mit bezahltem Support und einer klaren kommerziellen Lizenzstruktur ist IronPDF gut geeignet für Unternehmen, die eine einfache und zuverlässige Lösung benötigen.
  • PDFsharp glänzt bei der grundlegenden Erstellung und Bearbeitung von PDFs, verfügt jedoch nicht über die erweiterten Funktionen und die direkte Unterstützung für digitale Signaturen, die IronPDF bietet. Obwohl PDFsharp quelloffen und frei 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 Drittanbieter-Bibliotheken einsetzen, um diese Funktionen zu handhaben.

    Zusammengefasst,IronPDFist die beste Wahl für Entwickler, die eine einfache, schnelle Lösung für digitale Signaturen und verwandte PDF-Aufgaben suchen, insbesondere in kommerziellen Umgebungen. PDFsharpist besser für grundlegende PDF-Aufgaben geeignet, bietet aber nicht die gleiche Benutzerfreundlichkeit und den gleichen Funktionsumfang für digitale Signaturen, was es eher für einfachere Projekte oder solche mit zusätzlichen Anpassungsbedarfen geeignet macht.

Jordi Bardia
Software-Ingenieur
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS
IronPDF vs. PDFsharp PDF-zu-Bild-Konvertierung (Code-Beispiel)
NÄCHSTES >
PDFsharp Text aus PDF extrahieren vs. IronPDF (Beispiel)