Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE
Vergleich von IronPDF mit iTextSharp in C#

iTextSharp C# HTML zu PDF Alternative für .NET Core

Für Entwickler, die mit PDFs arbeiten, ist es unerlässlich, über eine zuverlässige Bibliothek für die PDF-Erstellung und -Bearbeitung zu verfügen. Im .NET-Ökosystem kann es Dutzende von C#-PDF-Bibliotheken zur Auswahl geben, also wie wählen Sie diejenige aus, die am besten zu Ihren Anforderungen passt?

Die Auswahl der passenden Bibliothek ist entscheidend für eine effiziente Entwicklung bei der Arbeit mit PDF-Funktionen in .NET-Anwendungen. Dieser Artikel bietet einen detaillierten Vergleich zwischen zwei führenden C#-PDF-Bibliotheken: IronPDF und iText 7 (ehemals bekannt als iTextSharp). Wir werden ihre Funktionen, Leistung, Lizenzierung und Eignung für verschiedene Projektanforderungen untersuchen, um Ihnen zu helfen, eine fundierte Entscheidung zu treffen.

Warum eine .NET PDF-Bibliothek wählen?

PDFs werden weit verbreitet in Berichten, Rechnungen und juristischen Dokumenten eingesetzt, was die PDF-Erstellung und -Manipulation für viele Anwendungen unerlässlich macht. Bei der Auswahl einer Bibliothek sind folgende Schlüsselfaktoren zu berücksichtigen:

  • Einfachheit der Integration – Wie schnell können Sie PDF-Funktionen implementieren?
  • Unterstützung für HTML-zu-PDF – Ermöglicht es eine einfache Konvertierung von Webinhalten?
  • Lizenzierung und Kosten – Ist es kostenlos oder erfordert es eine kommerzielle Lizenz?
  • Funktionsumfang – Unterstützt es Textextraktion, Signierung oder Bearbeitung?
  • Leistung – Wie schnell generiert oder verarbeitet es PDFs?

Ein Überblick über IronPDF und iText7

Einführung in IronPDF

IronPDF ist eine kommerzielle PDF-Bibliothek, die speziell für .NET-Entwickler entwickelt wurde. Es vereinfacht die PDF-Erstellung, -Manipulation und -Konvertierung, was es zu einer der am einfachsten zu verwendenden Bibliotheken in C#-Anwendungen macht.

IronPDF unterstützt .NET Core, .NET Framework und .NET Standard und gewährleistet dadurch Kompatibilität über verschiedene .NET-Umgebungen hinweg. Seine hohe plattformübergreifende Kompatibilität macht es zu einer idealen Wahl für Teams, die in verschiedenen App-Umgebungen arbeiten, und es integriert sich nahtlos in IDEs wie Visual Studio. Neben seiner .NET-Version ist IronPDF auch in Java, Python und Node.js verfügbar.

Wichtige Funktionen:

  • Integrierte HTML-zu-PDF-Unterstützung – Konvertiert Webseiten, HTML, CSS und JavaScript in PDFs ohne zusätzliche Add-ons.
  • PDF-Bearbeitung – Bearbeiten Sie vorhandene PDFs durch Hinzufügen von Text, Bildern, Kopf- und Fußzeilen.
  • PDF-Sicherheit – Verschlüsseln Sie PDFs, setzen Sie Passwortschutz, und verwalten Sie Berechtigungen für Ansicht, Druck oder Bearbeitung.
  • Wasserzeichen und Anmerkungen – Wenden Sie ganz einfach Text- und Bild-Wasserzeichen, Stempel oder Kommentare auf Dokumente an.
  • Formularausfüllung und Datenerfassung – Füllen Sie interaktive PDF-Formulare programmatisch aus und extrahieren Sie Formulardaten.

Am besten für: Entwickler, die eine unkomplizierte, All-in-One-Lösung ohne zusätzlichen Aufwand für Add-ons oder komplizierte Lizenzierung suchen.

Einführung in iText7

iText 7 ist eine leistungsstarke und flexible PDF-Bibliothek, die umfangreiche PDF-Manipulationsmöglichkeiten bietet, darunter Dokumentenerstellung, Verschlüsselung und Signierung. Allerdings unterstützt die Kernbibliothek die HTML-zu-PDF-Konvertierung nicht nativ.

Hauptmerkmale

  • Niedrigstufige PDF-Anpassung – Bietet detaillierte Kontrolle über die PDF-Struktur, Metadaten und das Rendering.
  • Zugänglichkeit & Konformität: Generiert PDF/A, PDF/UA und PDF/X für die Langzeitarchivierung und Zugänglichkeitskonformität.
  • HTML-zu-PDF-Konvertierung: Das kostenpflichtige pdfHTML-Add-on ermöglicht die Konvertierung von HTML-Inhalten in PDFs.
  • Java- & .NET-Unterstützung: Primär für Java entwickelt, mit C#-Unterstützung über iText 7 für .NET.
  • PDF-Formularverwaltung: Erstellen und Bearbeiten von AcroForms und XFA-Formularen für interaktive PDF-Formulare.

Am besten für: Entwickler, die eine hochgradig anpassbare PDF-Lösung benötigen und bereit sind, zusätzliche Add-ons für erweiterte Funktionen zu erwerben.

Merkmale und Vorteile

Bevor wir uns die Funktionen und die dazugehörigen Codebeispiele ansehen, werfen wir zunächst einen Blick auf einen der größten funktionalen Unterschiede zwischen IronPDF und iText 7, die HTML-zu-PDF-Konvertierung.

  • IronPDF unterstützt nativ die HTML-, CSS- und JavaScript-Darstellung, ohne dass zusätzliche Komponenten erforderlich sind.
  • iText 7 benötigt hingegen das pdfHTML-Add-on, das eine kostenpflichtige Funktion unter kommerzieller Lizenzierung ist. Dies erhöht die Kosten für Entwickler, die Webbasiertes-zu-PDF-Funktionalität benötigen.

HTML-zu-PDF-Vergleichsdiagramm

Fazit: Wenn Sie HTML-zu-PDF-Konvertierung benötigen, ist IronPDF die kostengünstigere Lösung, da dieses Feature out of the box enthalten ist.

IronPDF Hauptmerkmale (mit Codebeispielen)

IronPDF bietet eine Vielzahl von Funktionen zur Arbeit mit PDF-Dokumenten. Diese reichen von der PDF-Erstellung bis zur PDF-Manipulation und -Sicherheit. Um eine klarere Vorstellung von der umfangreichen Funktionsvielfalt dieser Bibliothek zu bekommen, werden wir uns einige ausgewählte Hauptfunktionen ansehen.

HTML zu PDF Konvertierung

Konvertieren Sie HTML-Inhalte in qualitativ hochwertige PDF-Dokumente mit dem leistungsstarken Rendering-Engine von IronPDF. Der Renderer von IronPDF konvertiert nicht einfach nur HTML-Inhalte; damit können Sie alle ursprünglichen CSS-Stile und JavaScript-Interaktivität beibehalten.

using IronPdf;

public class Program
{
    static void Main(string[] args)
    {
        // Create a new ChromePdfRenderer instance for rendering HTML to PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the specified HTML file as a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");

        // Save the rendered PDF to the specified file path
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
using IronPdf;

public class Program
{
    static void Main(string[] args)
    {
        // Create a new ChromePdfRenderer instance for rendering HTML to PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the specified HTML file as a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");

        // Save the rendered PDF to the specified file path
        pdf.SaveAs("HtmlToPdf.pdf");
    }
}
Imports IronPdf

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new ChromePdfRenderer instance for rendering HTML to PDF
		Dim renderer As New ChromePdfRenderer()

		' Render the specified HTML file as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("example.html")

		' Save the rendered PDF to the specified file path
		pdf.SaveAs("HtmlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Eingabe-HTML
HTML-Eingabeinhalt

Ausgabe-PDF
HTML-zu-PDF-Ausgabe mit IronPDF

In diesem Codebeispiel haben wir zuerst eine neue ChromePdfRenderer-Instanz erstellt, die uns Zugriff auf das leistungsstarke Rendering-Engine von IronPDF gibt, um HTML in PDF zu rendern. Dann übergeben wir eine HTML-Datei an die Methode RenderHtmlFileAsPdf(), die wiederum das HTML in ein PDF rendert, das im PdfDocument-Objekt gespeichert wird. Schließlich speichern wir das PDF am angegebenen Dateispeicherort.

URL zu PDF

Für Entwickler, die URL-Inhalte in PDFs konvertieren möchten, ist IronPDF die beste Wahl. Mit dieser Bibliothek können Sie pixelgenaue PDF-Dokumente mithilfe des ChromePdfRenderer-Rendering-Engines erstellen, das alle ursprünglichen Stile und Layouts beibehält, wenn es die URL in PDF rendert. Für dieses Beispiel verwenden wir diese URL, um zu demonstrieren, wie IronPDF komplexere CSS-Stilierungen verarbeiten kann.

using IronPdf;

public class Program
{
    static void Main(string[] args)
    {
        // Create a new ChromePdfRenderer instance
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the specified URL as a PDF document
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the rendered PDF to the specified file path
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
using IronPdf;

public class Program
{
    static void Main(string[] args)
    {
        // Create a new ChromePdfRenderer instance
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the specified URL as a PDF document
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the rendered PDF to the specified file path
        pdf.SaveAs("UrlToPdf.pdf");
    }
}
Imports IronPdf

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new ChromePdfRenderer instance
		Dim renderer As New ChromePdfRenderer()

		' Render the specified URL as a PDF document
		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")

		' Save the rendered PDF to the specified file path
		pdf.SaveAs("UrlToPdf.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

PDF-Ausgabe:
URL-zu-PDF-Ausgabe mit IronPDF

Ähnlich wie in unserem HTML-zu-PDF-Beispiel ist der erste Schritt zur Konvertierung einer beliebigen URL in PDF mit IronPDF das Erstellen einer neuen ChromePdfRenderer-Instanz. Sobald die Methode den URL-Inhalt im PDF-Format gerendert hat, speichert sie das resultierende PDF in einem neuen PdfDocument-Objekt, bevor wir die SaveAs-Methode verwenden, um das PDF zu speichern.

PDF-Signaturen

Stellen Sie die Authentizität Ihres PDF-Dokuments sicher, indem Sie eine digitale Signatur auf Ihre PDF-Dokumente anwenden. Es gibt verschiedene Methoden, mittels derer Entwickler digitale Signaturen anwenden könnten, wie zum Beispiel das digitale Signieren des PDFs mit einem sicheren Zertifikat, das Hinzufügen eines Bildes einer handschriftlichen Unterschrift zu einem PDF oder das Stempeln eines Bilds des Zertifikats auf das PDF selbst.

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate used for signing the PDF
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        // Create a PdfSignature instance and set the signature image
        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign the existing PDF file and save the signed version
        sig.SignPdfFile("product_report.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
using IronSoftware.Drawing;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate used for signing the PDF
        X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);

        // Create a PdfSignature instance and set the signature image
        var sig = new PdfSignature(cert);
        sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));

        // Sign the existing PDF file and save the signed version
        sig.SignPdfFile("product_report.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Imports IronSoftware.Drawing

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the certificate used for signing the PDF
		Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)

		' Create a PdfSignature instance and set the signature image
		Dim sig = New PdfSignature(cert)
		sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 350, 250))

		' Sign the existing PDF file and save the signed version
		sig.SignPdfFile("product_report.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Ausgabe-PDF
Digitale Signaturausgabe mit IronPDF

In diesem Beispiel haben wir unser Zertifikatsobjekt geladen, eine visuelle Darstellung der Signatur erstellt oder in unserem Fall das IronPDF-Bild und ein neues PdfSignature-Objekt erstellt, das für die Signierung des PDF-Dokuments selbst zuständig ist. Schließlich verwendeten wir die SignPdfFile-Methode, um unser PDF-Dokument zu signieren und zu speichern.

Wenn Sie mehr über die Funktionen erfahren möchten, die IronPDF zu bieten hat, besuchen Sie die informative Funktionsseite oder die How-to Guides, die detaillierte Codebeispiele für jede Funktion enthalten.

iText7 Hauptfunktionen (mit Codebeispielen)

iText7 bietet eine breite Palette an Funktionen zur Anpassung und Verbesserung Ihrer PDF-Dokumente. Mit umfassender Formatunterstützung für verschiedene PDF-Standards und fortgeschrittener PDF-Manipulation ist viel in dieser PDF-Bibliothek verpackt. Wie bereits erwähnt, kann es notwendig sein, zusätzliche Pakete zu erwerben, um bestimmte PDF-bezogene Aufgaben wie HTML in PDF durchzuführen.

HTML zu PDF Konvertierung

Obwohl iText7 von sich aus keine HTML-zu-PDF-Konvertierung durchführen kann, können wir den pdfHTML, ein kostenpflichtiges Add-on unter iText7's kommerzieller Lizenzierung, nutzen, um die HTML-Datei, die wir in unserem IronPDF-Beispiel verwendet haben, in ein PDF-Dokument zu konvertieren.

using iText.Html2pdf;
using System.IO;

public class Program
{
    static void Main(string[] args)
    {
        // Open the HTML file stream
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        // Create the output PDF file stream
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            // Initialize ConverterProperties for HTML to PDF conversion
            ConverterProperties converterProperties = new ConverterProperties();

            // Convert the HTML source to a PDF document
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);

            // Close the PDF file
            pdf.Close();
        }
    }
}
using iText.Html2pdf;
using System.IO;

public class Program
{
    static void Main(string[] args)
    {
        // Open the HTML file stream
        using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
        // Create the output PDF file stream
        using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
        {
            // Initialize ConverterProperties for HTML to PDF conversion
            ConverterProperties converterProperties = new ConverterProperties();

            // Convert the HTML source to a PDF document
            HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);

            // Close the PDF file
            pdf.Close();
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Open the HTML file stream
		Using htmlSource As FileStream = File.Open("example.html", FileMode.Open)
		' Create the output PDF file stream
		Using pdf As FileStream = File.Open("HtmlToPdfOutput.pdf", FileMode.Create)
			' Initialize ConverterProperties for HTML to PDF conversion
			Dim converterProperties As New ConverterProperties()

			' Convert the HTML source to a PDF document
			HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties)

			' Close the PDF file
			pdf.Close()
		End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Ausgabe-PDF
iText7 HTML-zu-PDF-Ausgabe

In diesem Beispiel haben wir die HTML-Datei geladen und den Dateispeicherort angegeben, um das gerenderte PDF zu speichern. Dann können wir mit der Methode ConvertToPdf die HTML-Datei ganz einfach in ein PDF-Dokument konvertieren.

URL zu PDF

Jetzt ist es an der Zeit zu vergleichen, wie iText7 sich im Vergleich zu IronPDF schlägt, wenn es um die Umwandlung von URLs in PDF geht. Dafür verwenden wir die exakt gleiche URL wie zuvor, um einen fairen Vergleich zu gewährleisten.

using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;

public class Program
{
    public static async System.Threading.Tasks.Task Main(string[] args)
    {
        string url = "https://www.apple.com";  // Replace with your target URL
        string outputPdfPath = "output.pdf";

        try
        {
            // Download HTML content from the URL
            using (HttpClient client = new HttpClient())
            {
                string htmlContent = await client.GetStringAsync(url);

                // Convert HTML to PDF
                using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
                {
                    ConverterProperties properties = new ConverterProperties();
                    HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
                }
            }

            Console.WriteLine("PDF created successfully: " + outputPdfPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
using System;
using System.Net.Http;
using System.IO;
using iText.Html2pdf;

public class Program
{
    public static async System.Threading.Tasks.Task Main(string[] args)
    {
        string url = "https://www.apple.com";  // Replace with your target URL
        string outputPdfPath = "output.pdf";

        try
        {
            // Download HTML content from the URL
            using (HttpClient client = new HttpClient())
            {
                string htmlContent = await client.GetStringAsync(url);

                // Convert HTML to PDF
                using (FileStream pdfStream = new FileStream(outputPdfPath, FileMode.Create))
                {
                    ConverterProperties properties = new ConverterProperties();
                    HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties);
                }
            }

            Console.WriteLine("PDF created successfully: " + outputPdfPath);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.IO
Imports iText.Html2pdf

Public Class Program
	Public Shared Async Function Main(ByVal args() As String) As System.Threading.Tasks.Task
		Dim url As String = "https://www.apple.com" ' Replace with your target URL
		Dim outputPdfPath As String = "output.pdf"

		Try
			' Download HTML content from the URL
			Using client As New HttpClient()
				Dim htmlContent As String = Await client.GetStringAsync(url)

				' Convert HTML to PDF
				Using pdfStream As New FileStream(outputPdfPath, FileMode.Create)
					Dim properties As New ConverterProperties()
					HtmlConverter.ConvertToPdf(htmlContent, pdfStream, properties)
				End Using
			End Using

			Console.WriteLine("PDF created successfully: " & outputPdfPath)
		Catch ex As Exception
			Console.WriteLine("Error: " & ex.Message)
		End Try
	End Function
End Class
$vbLabelText   $csharpLabel

Ausgabe-PDF
iText7 URL-zu-PDF-Ausgabe

Wie hier zu sehen ist, ist der Ansatz von iText7 zur URL-zu-PDF-Konvertierung manueller und komplexer. Zunächst müssen wir den HTML-Inhalt von der URL herunterladen, bevor wir ähnliche Schritte wie im HTML-zu-PDF-Beispiel befolgen, um unseren URL-Inhalt in ein PDF-Dokument zu rendern und zu speichern. Wie Sie im Ausgabebild sehen können, war iText7 nicht in der Lage, viele der ursprünglichen Stile und Layouts beizubehalten, im Gegensatz zu IronPDF.

PDF-Signaturen

using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;
using System.IO;

public class Program
{
    static void Main(string[] args)
    {
        string inputPdf = "input.pdf";       // PDF to be signed
        string outputPdf = "signed_output.pdf";  // Signed PDF output
        string pfxFile = "IronSoftware.pfx";  // Path to your PFX certificate
        string password = "Passw0rd";   // Password for PFX file

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
            using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
            {
                ks.Load(fs, password.ToCharArray());
            }

            string alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }

            if (alias == null)
            {
                throw new Exception("Alias not found in the PFX file.");
            }

            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);

            // Convert BouncyCastle certificates to iText certificates
            var itextCertChain = new IX509Certificate[chain.Length];
            for (int i = 0; i < chain.Length; i++)
            {
                itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
            }

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(inputPdf))
            using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
            {
                PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());

                // Set up the external signature (private key + digest algorithm)
                IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
                IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
                IExternalDigest digest = new BouncyCastleDigest();

                // Perform the signing (detached signature)
                signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
            }

            Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
using System.Security.Cryptography.X509Certificates;
using iText.Kernel.Pdf;
using iText.Signatures;
using iText.Bouncycastle.Crypto;
using iText.Commons.Bouncycastle.Cert;
using iText.Commons.Bouncycastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using iText.Bouncycastle.X509;
using iText.Kernel.Crypto;
using System.IO;

public class Program
{
    static void Main(string[] args)
    {
        string inputPdf = "input.pdf";       // PDF to be signed
        string outputPdf = "signed_output.pdf";  // Signed PDF output
        string pfxFile = "IronSoftware.pfx";  // Path to your PFX certificate
        string password = "Passw0rd";   // Password for PFX file

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12StoreBuilder().Build();
            using (FileStream fs = new FileStream(pfxFile, FileMode.Open, FileAccess.Read))
            {
                ks.Load(fs, password.ToCharArray());
            }

            string alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }

            if (alias == null)
            {
                throw new Exception("Alias not found in the PFX file.");
            }

            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);

            // Convert BouncyCastle certificates to iText certificates
            var itextCertChain = new IX509Certificate[chain.Length];
            for (int i = 0; i < chain.Length; i++)
            {
                itextCertChain[i] = new X509CertificateBC(chain[i].Certificate);
            }

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(inputPdf))
            using (FileStream os = new FileStream(outputPdf, FileMode.Create, FileAccess.Write))
            {
                PdfSigner signer = new PdfSigner(reader, os, new StampingProperties().UseAppendMode());

                // Set up the external signature (private key + digest algorithm)
                IPrivateKey iTextPrivateKey = new PrivateKeyBC(pk);
                IExternalSignature pks = new PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256);
                IExternalDigest digest = new BouncyCastleDigest();

                // Perform the signing (detached signature)
                signer.SignDetached(digest, pks, itextCertChain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
            }

            Console.WriteLine($"PDF digitally signed successfully: {outputPdf}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
Imports System.Security.Cryptography.X509Certificates
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports iText.Bouncycastle.Crypto
Imports iText.Commons.Bouncycastle.Cert
Imports iText.Commons.Bouncycastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.Crypto
Imports iText.Bouncycastle.X509
Imports iText.Kernel.Crypto
Imports System.IO

Public Class Program
	Shared Sub Main(ByVal args() As String)
		Dim inputPdf As String = "input.pdf" ' PDF to be signed
		Dim outputPdf As String = "signed_output.pdf" ' Signed PDF output
		Dim pfxFile As String = "IronSoftware.pfx" ' Path to your PFX certificate
		Dim password As String = "Passw0rd" ' Password for PFX file

		Try
			' Load your certificate
			Dim ks As Pkcs12Store = (New Pkcs12StoreBuilder()).Build()
			Using fs As New FileStream(pfxFile, FileMode.Open, FileAccess.Read)
				ks.Load(fs, password.ToCharArray())
			End Using

			Dim [alias] As String = Nothing
			For Each al As String In ks.Aliases
				If ks.IsKeyEntry(al) Then
					[alias] = al
					Exit For
				End If
			Next al

			If [alias] Is Nothing Then
				Throw New Exception("Alias not found in the PFX file.")
			End If

			Dim pk As ICipherParameters = ks.GetKey([alias]).Key
			Dim chain() As X509CertificateEntry = ks.GetCertificateChain([alias])

			' Convert BouncyCastle certificates to iText certificates
			Dim itextCertChain = New IX509Certificate(chain.Length - 1){}
			For i As Integer = 0 To chain.Length - 1
				itextCertChain(i) = New X509CertificateBC(chain(i).Certificate)
			Next i

			' Create output PDF with signed content
			Using reader As New PdfReader(inputPdf)
			Using os As New FileStream(outputPdf, FileMode.Create, FileAccess.Write)
				Dim signer As New PdfSigner(reader, os, (New StampingProperties()).UseAppendMode())

				' Set up the external signature (private key + digest algorithm)
				Dim iTextPrivateKey As IPrivateKey = New PrivateKeyBC(pk)
				Dim pks As IExternalSignature = New PrivateKeySignature(iTextPrivateKey, DigestAlgorithms.SHA256)
				Dim digest As IExternalDigest = New BouncyCastleDigest()

				' Perform the signing (detached signature)
				signer.SignDetached(digest, pks, itextCertChain, Nothing, Nothing, Nothing, 0, PdfSigner.CryptoStandard.CMS)
			End Using
			End Using

			Console.WriteLine($"PDF digitally signed successfully: {outputPdf}")
		Catch ex As Exception
			Console.WriteLine($"Error signing PDF: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Ausgabe-PDF
iText7 Digitale Signatur Ausgabe

Wie zu sehen ist, kann iText7 zwar PDF-Dokumente digital signieren, aber der Prozess ist meist um einiges komplexer als mit IronPDF. Dieser Code lädt ein PFX-Zertifikat und verwendet es, um ein PDF digital zu signieren. Er extrahiert den privaten Schlüssel und das Zertifikat, richtet den Signierer ein und fügt dem PDF eine abgelöste Signatur hinzu, um das signierte Dokument dann zu speichern.

Wettbewerbsanalyse

Leistung und Benutzerfreundlichkeit

Schlüsselvorteile von IronPDF

IronPDF ist bekannt für seine Benutzerfreundlichkeit und Optimierung für hohe Leistung und bietet eine einfachere API, die häufige Aufgaben wie HTML-zu-PDF-Konvertierung vereinfacht. Es bietet hochrangige Methoden, die komplexe PDF-Verarbeitungsaufgaben abstrahieren und Entwicklern ermöglichen, PDFs mit minimalem Code zu erstellen, zu bearbeiten und zu manipulieren. Für Multithreading- oder großangelegte Dokumentenverarbeitung unterstützt IronPDF parallele Ausführung.

  • Einfach zu verwendende API – Hochrangige Methoden vereinfachen häufige Aufgaben wie HTML-zu-PDF-Konvertierung.
  • Minimal erforderliche Einrichtung – Lässt sich einfach in .NET-Projekte integrieren.
  • Integrierte parallele Ausführung – Optimiert für die Verarbeitung von Massen-PDF-Erstellung und -Konvertierung.
  • Vereinfachte API – Benötigt weniger Codezeilen, um Ergebnisse zu erzielen.

iText 7 - Leistungsstark aber komplex

iText 7 hingegen bietet eine detailliertere und granularere Kontrolle, was für Entwickler vorteilhaft sein kann, die umfangreiche Anpassungen benötigen. Es bietet eine robuste API für die Arbeit mit niedrigstufigen PDF-Operationen. Aufgrund seiner Komplexität erfordert iText 7 jedoch häufig mehr Code, um ähnliche Ergebnisse zu erzielen, verglichen mit IronPDF.

  • Granulare PDF-Steuerung – Ideal für Unternehmensanwendungen, die strikte Konformität erfordern (z. B. PDF/A, PDF/UA, digitale Signaturen).
  • Hochgradig anpassbar – Bietet niedrigstufige PDF-Manipulation für fortgeschrittene Anwendungsfälle.
  • Steilere Lernkurve – Erfordert mehr Einrichtung und Konfiguration im Vergleich zu IronPDF.
  • Codeintensiver – Häufige Aufgaben erfordern oft längere Implementierungen.

Lizenzen und Kosten

Bei der Auswahl einer PDF-Bibliothek für ein .NET-Projekt sind Überlegungen zu Lizenzierung und Kosten von entscheidender Bedeutung. Sowohl IronPDF als auch iText 7 folgen unterschiedlichen Lizenzierungsmodellen, und die richtige Wahl hängt von den Anforderungen Ihres Projekts, Ihrem Budget und Ihren Compliance-Anforderungen ab.

IronPDF-Lizenzierung und Kosten

IronPDF folgt einem kommerziellen Lizenzierungsmodell, was bedeutet, dass es zwar eine kostenlose Testversion für kommerzielle Lizenzierung bietet und für Entwicklung und Bewertung kostenlos ist, jedoch eine kostenpflichtige Lizenz für die volle Produktionsnutzung erforderlich ist. Die Preisgestaltung ist transparent und hängt von Faktoren wie Nutzungsumfang, Anzahl der Entwickler und Projekttyp ab.

IronPDF-Lizenzierung:

  • Kommerzielle Lizenzierungsmodell (Keine Open-Source-Beschränkungen).
  • Einfache Preisgestaltung auf Basis von Entwickler- oder Teamlizenzen.
  • Keine zusätzlichen Kosten für HTML-zu-PDF, PDF-Sicherheit oder andere Hauptfunktionen.
  • Am besten für Unternehmen, die eine einfache, kostengünstige PDF-Lösung benötigen.

Fazit: IronPDF beinhaltet alle wichtigen Funktionen in einer einzigen Lizenz, was es zu einer kostengünstigen Wahl für Teams und Unternehmen macht.

iText7-Lizenzierung und Kosten

iText7 operiert unter einem Dual-Lizenzierungsmodell, das Folgendes umfasst:

  1. AGPL (GNU Affero General Public License) – Kostenlos für Open-Source-Projekte, erfordert jedoch, dass das gesamte Projekt, das iText7 verwendet, Open Source und AGPL-konform ist. Das bedeutet, dass alle Modifikationen oder Ergänzungen des Projekts ebenfalls öffentlich geteilt werden müssen.
  2. Kommerzielle Lizenz – Erforderlich für jede proprietäre Software oder kommerzielle Anwendungen, die ihren Quellcode nicht offenlegen möchten. Die Preisgestaltung variiert je nach Nutzung, Unterstützungsniveau und Einsatzmaßstab.

Für Unternehmen, die iText 7 in proprietäre Software integrieren möchten, ist eine kommerzielle Lizenz zwingend erforderlich. Die Kosten können erheblich sein, insbesondere für Lösungen auf Unternehmensebene, da sie auf einer Pro-Entwickler-Basis berechnet wird, aber sie bietet Zugang zu professioneller Unterstützung und sichert die rechtliche Konformität.

Warum iText 7 teurer sein kann:

  • Preisgestaltung pro Entwickler – Jeder Entwickler benötigt eine separate Lizenz, was die Gesamtkosten für Teams erhöht.
  • Wesentliche Funktionen erfordern teure Add-ons:
    • pdfHTML (Bezahlt) – Erforderlich für HTML-zu-PDF-Konvertierung.
    • pdfOCR (Bezahlt) – Wird benötigt für Texterkennung aus Bildern.
    • pdfCalligraph (Bezahlt) – Verbessert die Textrenderung und Schriftunterstützung.
    • pdfRender (Bezahlt) – Fügt PDF-zu-Bild-Konvertierung hinzu.
    • pdf2Data (Bezahlt) – Extrahiert strukturierte Daten aus PDFs.
  • Unternehmenskosten können schnell steigen, wenn mehrere Funktionen und Entwickler benötigt werden.

Fazit: Wenn Ihr Team mehrere Entwickler und wesentliche Funktionen wie HTML-zu-PDF und OCR benötigt, kann iText 7 erheblich teurer sein als IronPDF, das diese Funktionen ohne zusätzliche Kosten bietet.

Benutzungsfall-Szenarien

Kleine vs. große Projekte

Für kleine bis mittelgroße Projekte, die eine schnelle Implementierung von PDF-Funktionen mit minimaler Konfiguration erfordern, ist IronPDF eine überzeugende Wahl aufgrund seiner benutzerfreundlichen API und umfassenden Funktionsvielfalt. Projekte auf Unternehmensebene, die umfangreiche Anpassungen und die Einhaltung spezifischer PDF-Standards erfordern, können von den erweiterten Fähigkeiten von iText7 profitieren, jedoch stellt auch IronPDF für dieses Arbeitslevel eine starke Kandidatur aufgrund seiner hohen Leistung, Lizenzierungsoptionen und Benutzerfreundlichkeit dar.

Akademische und kommerzielle Nutzung

In akademischen Umgebungen oder Open-Source-Projekten erlaubt die AGPL-Lizenz von iText7 die kostenlose Nutzung, sofern die Lizenz des Projekts kompatibel ist. Für kommerzielle Anwendungen erfordern sowohl IronPDF als auch iText7 den Kauf einer kommerziellen Lizenz. Es wird empfohlen, die Lizenzbedingungen jeder Bibliothek zu überprüfen, um sicherzustellen, dass sie mit den Zielen Ihres Projekts übereinstimmen.

Abschluss

Die Wahl der richtigen PDF-Bibliothek für Ihr .NET-Projekt ist eine entscheidende Entscheidung, die von Faktoren wie Benutzerfreundlichkeit, Funktionsvielfalt und Lizenzierungsbedarf abhängt. Sowohl IronPDF als auch iText 7 bieten leistungsstarke PDF-Funktionen, aber sie richten sich an unterschiedliche Anforderungen. Über diese beiden Bibliotheken hinaus bieten Wettbewerber wie Aspose, Syncfusion und PDFSharp alle wettbewerbsfähige .NET PDF-Bibliotheken an. IronPDF führt jedoch kontinuierlich in der PDF-Industrie mit seiner einfach zu verwendenden API, dem umfassenden Funktionsumfang und der Kosteneffizienz.

Im Folgenden haben wir ein überzeugendes Argument zusammengefasst, warum IronPDF eine großartige Wahl für alle Ihre .NET-PDF-Bibliotheksbedürfnisse ist.

IronPDF vs iText7 Vergleichsübersicht

Vorteile von IronPDF

  • Einfachheit: IronPDF ist auf Einfachheit ausgelegt und damit eine ideale Wahl für Entwickler, die schnell PDF-Funktionen in ihre .NET-Anwendungen integrieren müssen. Seine intuitive API verringert die Lernkurve und beschleunigt die Entwicklungszeiten.
  • Umfassende Dokumentation und Unterstützung: IronPDF bietet detaillierte Dokumentation und reaktionsschnellen Kundensupport, um sicherzustellen, dass Entwickler sich schnell zurechtfinden und Probleme effektiv beheben können.
  • Naflose HTML-zu-PDF-Konvertierung: IronPDF zeichnet sich durch die Konvertierung von HTML, einschließlich CSS und JavaScript, in qualitativ hochwertige PDFs aus. Dies ist besonders vorteilhaft für Projekte, die dynamisch PDFs aus webbasierenden Inhalten erzeugen müssen.
  • Kommerzielle Lizenzierung: Für kommerzielle Anwendungen bietet IronPDF flexible Lizenzierungsoptionen, die die Einhaltung der Vorschriften ohne die Einschränkungen, die mit Open-Source-Lizenzen einhergehen können, gewährleisten.

iText Beschränkungen

  • Komplexität: Während iText 7 fortschrittliche Funktionen und Anpassungsmöglichkeiten bietet, kann seine API für Entwickler, die neu in der PDF-Manipulation sind, komplex sein. Dies kann zu längeren Entwicklungszeiten für häufige Aufgaben führen, verglichen mit dem einfacheren Ansatz von IronPDF.
  • Lizenzierungskosten für kommerzielle Nutzung: Die AGPL-Lizenz von iText 7 verlangt, dass jegliche abgeleitete Werke Open Source sein müssen, es sei denn, Sie erwerben eine kommerzielle Lizenz. Dies könnte eine Einschränkung für proprietäre Anwendungen sein, die nicht den AGPL-Bedingungen entsprechen können.
  • Java-zentrierte Funktionen: Während iText 7 für .NET verfügbar ist, fühlt es sich aufgrund seiner Wurzeln im Java-Ökosystem manchmal weniger nativ für C#-Entwickler an, insbesondere wenn es um plattformübergreifende Probleme oder die Integration mit auf Java basierenden Werkzeugen geht.

Abschließende Überlegungen

Wenn Ihr Projekt eine schnelle PDF-Erstellung, insbesondere aus Web-Inhalten, erfordert und Sie nach einer einfach zu verwendenden Lösung suchen, ist IronPDF wahrscheinlich die bessere Wahl. Wenn Ihre Anwendung jedoch fortgeschrittene PDF-Manipulation oder strikte Einhaltung von PDF-Standards erfordert und Sie erheblichen Anpassungsbedarf haben, könnte iText7 besser geeignet sein. Berücksichtigen Sie die spezifischen Anforderungen und Lizenzierungsbeschränkungen Ihres Projekts, um die beste Bibliothek für Ihre Bedürfnisse zu bestimmen.

Testen Sie IronPDF heute: Laden Sie die kostenlose Testversion herunter, um die leistungsstarken Funktionen von IronPDF selbst zu erkunden!

Hinweis:iText 7 ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist nicht verbunden mit, wird nicht unterstützt von oder gesponsert von iText 7. Alle Produktnamen, Logos und Marken sind das Eigentum ihrer jeweiligen Inhaber. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Wie kann ich HTML in PDF in C# konvertieren?

Verwenden Sie die RenderHtmlAsPdf-Methode von IronPDF, um HTML-Strings in PDFs zu konvertieren. Ebenso können Sie HTML-Dateien mit RenderHtmlFileAsPdf in PDFs umwandeln.

Was sind die wesentlichen Unterschiede zwischen IronPDF und iTextSharp?

IronPDF bietet eine nahtlose HTML-zu-PDF-Konvertierung und ein einfaches kommerzielles Lizenzmodell, während iTextSharp ein kostenpflichtiges Add-on für HTML-zu-PDF-Konvertierung erfordert und einem dualen Lizenzmodell folgt. IronPDF ist für seine Benutzerfreundlichkeit bekannt, während iTextSharp erweiterte PDF-Manipulation bietet, aber eine steilere Lernkurve aufweist.

Warum sollte ich mich für IronPDF für meine .NET-Projekte entscheiden?

IronPDF ist ideal für schnelle und kosteneffektive PDF-Implementierungen, bietet Benutzerfreundlichkeit, umfassende Dokumentation und integrierte HTML-zu-PDF-Konvertierung ohne zusätzliche Kosten. Es unterstützt mehrere .NET-Versionen und bietet umfangreiche Funktionen wie PDF-Bearbeitung und Sicherheit.

Ist IronPDF geeignet, um komplexe PDF-Dokumente zu erzeugen?

Ja, IronPDF unterstützt die Erzeugung komplexer PDF-Dokumente mit Funktionen wie Formularfüllung, Anmerkungen und Datenauszug. Seine umfangreichen Fähigkeiten machen es geeignet für eine Vielzahl von professionellen PDF-Anwendungen.

Welche Lizenzoptionen gibt es für IronPDF?

IronPDF folgt einem kommerziellen Lizenzmodell, das eine kostenpflichtige Lizenz für den Produktionseinsatz erfordert. Dieses einfache Modell eliminiert die Komplexität, die mit dualen Lizenzsystemen wie denen von iTextSharp verbunden ist.

Kann IronPDF in .NET Core-Projekte integriert werden?

Ja, IronPDF kann in .NET Core-Projekte integriert werden. Es unterstützt .NET Core, .NET Framework und .NET Standard und ist damit vielseitig für verschiedene Entwicklungsumgebungen.

Wie handhabt IronPDF PDF-Sicherheitsfunktionen?

IronPDF bietet robuste PDF-Sicherheitsfunktionen, einschließlich Verschlüsselung, Passwortschutz und digitale Signaturen, die helfen, sensible Dokumentinformationen zu sichern.

Was macht IronPDF benutzerfreundlich im Vergleich zu anderen Bibliotheken?

IronPDF gilt als benutzerfreundlich aufgrund seiner einfachen API, minimaler Einrichtungsanforderungen und umfassender Dokumentation, was es einfach macht, auch für Entwickler mit begrenzter Erfahrung in der PDF-Erstellung zu implementieren.

Gibt es zusätzliche Kosten für die Verwendung der HTML-zu-PDF-Konvertierung in IronPDF?

Nein, IronPDF enthält integrierte HTML-zu-PDF-Konvertierungsfähigkeiten, die keine zusätzlichen Komponenten oder Kosten erfordern, im Gegensatz zu einigen anderen PDF-Bibliotheken, die kostenpflichtige Add-ons erfordern.

Wie vergleicht sich IronPDF in Bezug auf Leistung und Geschwindigkeit?

IronPDF ist optimiert für Leistung und Geschwindigkeit, bietet schnelle und zuverlässige PDF-Erzeugung und -Manipulation, was entscheidend für Anwendungen ist, die große Mengen an PDF-Verarbeitung handhaben.

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