using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
iTextSharp C# HTML zu PDF Alternative für .NET Core
Chipego Kalinda
19. Februar 2025
Teilen Sie:
Für Entwickler, die mit PDFs arbeiten, ist eine zuverlässige Bibliothek zur Erstellung und Bearbeitung von PDFs unerlässlich. Im .NET-Ökosystem gibt es Dutzende von C# PDF-Bibliotheken zur Auswahl. Wie wählen Sie also diejenige aus, die am besten zu Ihren Anforderungen passt?
Die Auswahl der geeigneten Bibliothek ist entscheidend für eine effiziente Entwicklung, wenn man mit PDF-Funktionen in .NET-Anwendungen arbeitet. Dieser Artikel bietet einen detaillierten Vergleich zwischen zwei herausragenden C# PDF-Bibliotheken: IronPDF und iText 7 (früher bekannt als iTextSharp). Wir werden ihre Funktionen, Leistung, Lizenzierung und Eignung für verschiedene Projektanforderungen untersuchen, um Ihnen bei der Entscheidungsfindung zu helfen.
Warum eine .NET PDF-Bibliothek wählen?
PDFs werden häufig in Berichten, Rechnungen und juristischen Dokumenten verwendet, was die PDF-Erstellung und -Bearbeitung für viele Anwendungen unerlässlich macht. Beim Auswählen 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 Umwandlung 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 werden PDFs generiert oder verarbeitet?
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-Generierung, -Manipulation und -Konvertierung und macht es zu einer der einfachsten Bibliotheken für den Einsatz in C#-Anwendungen.
IronPDF unterstützt .NET Core, .NET Framework und .NET Standard und gewährleistet 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. Über seine .NET-Version hinaus ist IronPDF auch in Java, Python und Node.js verfügbar.
🔹 Hauptmerkmale:
Eingebaute HTML-zu-PDF-Unterstützung – Konvertieren Sie Webseiten, HTML, CSS und JavaScript in PDFs ohne zusätzliche Add-ons.
PDF-Sicherheit – Verschlüsseln Sie PDFs, setzen Sie Passwortschutz und verwalten Sie Berechtigungen für das Anzeigen, Drucken oder Bearbeiten.
Wasserzeichen und Anmerkungen – Einfach Text- und Bild-Wasserzeichen, Stempel oder Kommentare zu Dokumenten hinzufügen.
Formularausfüllung und Datenauswertung – Interaktive PDF-Formulare programmgesteuert ausfüllen und Formulardaten extrahieren.
📌 Am besten geeignet für: Entwickler, die nach einer unkomplizierten All-in-One-Lösung ohne den Aufwand zusätzlicher Add-Ons oder komplexer Lizenzen suchen.
Einführung in iText7
iText 7 ist eine leistungsstarke und flexible PDF-Bibliothek, die umfangreiche PDF-Manipulationsmöglichkeiten bietet, einschließlich Dokumentenerstellung, Verschlüsselung und Signierung. Jedoch unterstützt seine Kernbibliothek die native HTML-zu-PDF-Konvertierung nicht.
🔹 Hauptmerkmale:
Niedrig-Level-PDF-Anpassung – Bietet detaillierte Kontrolle über die PDF-Struktur, Metadaten und das Rendering.
Barrierefreiheit & Compliance: Generiert PDF/A, PDF/UA und PDF/X für die langfristige Archivierung und die Einhaltung von Barrierefreiheitsanforderungen.
HTML-zu-PDF Konvertierung: Das kostenpflichtige pdfHTML-Add-on ermöglicht die Umwandlung von HTML-Inhalten in PDFs.
Java- und .NET-Unterstützung: Hauptsächlich 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 geeignet für: Entwickler, die eine hochgradig anpassbare PDF-Lösung benötigen und bereit sind, zusätzliche Add-ons für erweiterte Funktionen zu kaufen.
Funktionen und Vorteile
Bevor wir uns mit den Funktionen und den dazugehörigen Codebeispielen befassen, werfen wir zunächst einen Blick auf einen der größten funktionalen Unterschiede zwischen IronPDF und iText 7, HTML-zu-PDF-Konvertierung.
IronPDF unterstützt nativ die Darstellung von HTML, CSS und JavaScript, ohne dass zusätzliche Komponenten erforderlich sind.
iText 7 hingegen erfordert das pdfHTML-Add-on, das eine kostenpflichtige Funktion unter kommerzieller Lizenzierung ist. Dies erhöht die Kosten für Entwickler, die Web-zu-PDF-Funktionalität benötigen.
Vergleichsflussdiagramm für HTML zu PDF
📌 Fazit: Wenn Sie HTML-zu-PDF-Konvertierung benötigen, ist IronPDF die kostengünstigere Lösung, da diese Funktion out of the box enthalten ist.
Hauptfunktionen von IronPDF (mit Codebeispielen)
IronPDF bietet eine umfangreiche Funktionsausstattung für die Arbeit mit PDF-Dokumenten. Diese reichen von der PDF-Erstellung über die PDF-Bearbeitung bis hin zur Sicherheit. Um einen klareren Eindruck von der umfangreichen Palette an Funktionen zu bekommen, die diese Bibliothek zu bieten hat, werden wir uns einige ausgewählte Schlüsselfunktionen ansehen.
HTML-zu-PDF-Konvertierung:
Wandeln Sie HTML-Inhalte in hochwertige PDF-Dokumente mit dem leistungsstarken Rendering-Engine von IronPDF um. Der Renderer von IronPDF konvertiert HTML-Inhalte nicht nur, sondern ermöglicht es Ihnen, alle ursprünglichen CSS-Stile und die JavaScript-Interaktivität beizubehalten.
using IronPdf;
public class Program
{
static void Main(string[] args)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
pdf.SaveAs("HtmlToPdf.pdf");
}
}
using IronPdf;
public class Program
{
static void Main(string[] args)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("example.html");
pdf.SaveAs("HtmlToPdf.pdf");
}
}
Imports IronPdf
Public Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("example.html")
pdf.SaveAs("HtmlToPdf.pdf")
End Sub
End Class
Eingabe-HTML
Eingabe-HTML-Inhalt
PDF erstellen
HTML-zu-PDF-Ausgabe mit IronPDF
In diesem Codebeispiel haben wir zuerst eine neue ChromePdfRenderer-Instanz erstellt, die uns Zugriff auf die leistungsstarke Rendering-Engine von IronPDF gibt, mit der HTML in PDF gerendert wird. Dann übergeben wir eine HTML-Datei an die RenderHtmlFileAsPdf()-Methode, die wiederum das HTML in ein PDF rendert, das im PdfDocument-Objekt gespeichert wird. Schließlich werden wir das PDF an dem angegebenen Dateispeicherort speichern.
URL zu PDF:
Für Entwickler, die URL-Inhalte in PDFs umwandeln möchten, ist IronPDF die ideale Lösung. Mit dieser Bibliothek können Sie pixelgenaue PDF-Dokumente mit Hilfe der ChromePdfRenderer-Rendering-Engine erstellen, die beim Rendern der URL zu PDF alle originalen Stile und Layouts beibehalten wird. In diesem Beispiel verwenden wir diese URL, um zu demonstrieren, wie IronPDF komplexere CSS-Stile verarbeiten kann.
using IronPdf;
public class Program
{
static void Main(string[] args)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
pdf.SaveAs("UrlToPdf.pdf");
}
}
using IronPdf;
public class Program
{
static void Main(string[] args)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
pdf.SaveAs("UrlToPdf.pdf");
}
}
Imports IronPdf
Public Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
pdf.SaveAs("UrlToPdf.pdf")
End Sub
End Class
PDF-Ausgabe:
URL-zu-PDF-Ausgabe mit IronPDF
Ähnlich wie in unserem HTML-zu-PDF-Beispiel besteht der erste Schritt zum Konvertieren einer URL zu PDF mit IronPDF darin, zunächst eine neue ChromePdfRenderer-Instanz zu erstellen. Sobald die Methode die URL-Inhalte in ein PDF-Format gerendert hat, mit RenderUrlAsPdf, 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, die Entwickler in Betracht ziehen könnten, um digitale Signaturen anzuwenden, wie beispielsweise das digitale Signieren des PDFs mit einem sicheren Zertifikat, das Hinzufügen eines Bildes einer handschriftlichen Signatur zu einem PDF oder das Stempeln eines Bildes 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)
{
// Create PdfSignature object
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));
// Sign and save PDF document
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)
{
// Create PdfSignature object
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 350, 250));
// Sign and save PDF document
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)
' Create PdfSignature object
Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)
Dim sig = New PdfSignature(cert)
sig.SignatureImage = New PdfSignatureImage("IronPdf.png", 0, New Rectangle(150, 100, 350, 250))
' Sign and save PDF document
sig.SignPdfFile("product_report.pdf")
End Sub
End Class
PDF erstellen
Ausgabe der digitalen Signatur 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 die Signierung des PDF-Dokuments selbst übernimmt. Schließlich haben wir die SignPdfFile verwendet, um unser PDF-Dokument zu signieren und zu speichern.
Wenn Sie mehr über die Funktionen von IronPDF erfahren möchten, sollten Sie unbedingt die informative Funktionen-Seite oder die Anleitungen besuchen, die ausführliche Codebeispiele für jede Funktion enthalten.
iText7 Hauptmerkmale (Mit Codebeispielen)
iText7 bietet eine breite Palette an Funktionen zur Anpassung und Verbesserung Ihrer PDF-Dokumente. Mit umfassender Unterstützung für verschiedene PDF-Standards und fortschrittliche PDF-Bearbeitung ist diese PDF-Bibliothek vollgepackt. Wie bereits erwähnt, kann iText7 zusätzliche Pakete benötigen, um bestimmte PDF-bezogene Aufgaben wie HTML zu PDF auszuführen.
HTML-zu-PDF-Konvertierung:
Obwohl iText7 selbst HTML-zu-PDF-Konvertierungen nicht verarbeiten kann, können wir 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;
public class Program
{
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
pdf.Close();
}
}
}
using iText.Html2pdf;
public class Program
{
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("example.html", FileMode.Open))
using (FileStream pdf = File.Open("HtmlToPdfOutput.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties);
pdf.Close();
}
}
}
Imports iText.Html2pdf
Public Class Program
Shared Sub Main(ByVal args() As String)
Using htmlSource As FileStream = File.Open("example.html", FileMode.Open)
Using pdf As FileStream = File.Open("HtmlToPdfOutput.pdf", FileMode.Create)
Dim converterProperties As New ConverterProperties()
HtmlConverter.ConvertToPdf(htmlSource, pdf, converterProperties)
pdf.Close()
End Using
End Using
End Sub
End Class
PDF erstellen
iText7 HTML-zu-PDF-Ausgabe
In diesem Beispiel haben wir die HTML-Datei geladen und den Speicherort für die Speicherung der gerenderten PDF-Datei angegeben. Dann können wir mit der ConvertToPdf-Methode die HTML-Datei problemlos in ein PDF-Dokument umwandeln.
URL zu PDF:
Nun ist es an der Zeit zu vergleichen, wie iText7 im Vergleich zu IronPDF abschneidet, wenn es darum geht, URLs in PDFs zu konvertieren. Hierfür werden wir genau dieselbe URL wie zuvor verwenden, 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
PDF erstellen
iText7 URL zu PDF-Ausgabe
Wie hier zu sehen ist, ist der Ansatz von iText7 zur Konvertierung von URL zu PDF manueller und komplexer. Zuerst müssen wir den HTML-Inhalt von der URL herunterladen, bevor wir ähnliche Schritte wie im HTML-zu-PDF-Beispiel ausführen, 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, viel vom ursprünglichen Stil und Layout 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;
public partial 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);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Convert BouncyCastle certificate to iText certificate
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;
public partial 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);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Convert BouncyCastle certificate to iText certificate
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
Partial 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
'INSTANT VB WARNING: Nullable reference types have no equivalent in VB:
'ORIGINAL LINE: string? alias = null;
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])
Dim cert As New X509Certificate2(chain(0).Certificate.GetEncoded())
' Convert BouncyCastle certificate to iText certificate
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
PDF erstellen
iText7-Digital Signature-Ausgabe
Wie Sie sehen können, ist iText7 zwar in der Lage, PDF-Dokumente digital zu signieren, aber der Prozess ist tendenziell viel komplexer als mit IronPDF. Dieser Code lädt ein PFX-Zertifikat und verwendet es, um ein PDF digital zu signieren. Es extrahiert den privaten Schlüssel und das Zertifikat, richtet den Unterzeichner ein und fügt eine separate Signatur zum PDF hinzu, dann wird das signierte Dokument gespeichert.
Wettbewerbsanalyse
Leistung und Benutzerfreundlichkeit
Wichtige Vorteile 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 die Umwandlung von HTML in PDF vereinfacht. Es bietet Methoden auf hoher Ebene, die komplexe PDF-Verarbeitungsaufgaben abstrahieren, sodass Entwickler PDFs mit minimalem Code erstellen, bearbeiten und manipulieren können. Für Multi-Threading oder großangelegte Dokumentenverarbeitung unterstützt IronPDF die parallele Ausführung.
✅ Einfach zu verwendende API – Hochrangige Methoden vereinfachen häufige Aufgaben wie die HTML-zu-PDF-Konvertierung.
✅ Minimaler Einrichtungsaufwand erforderlich – Lässt sich einfach in .NET-Projekte integrieren.
✅ Eingebaute Parallelverarbeitung – Optimiert für die Handhabung von massenhafter PDF-Erstellung und -Konvertierung.
✅ Vereinfachte API – Benötigt weniger Codezeilen, um Ergebnisse zu erzielen.
iText 7 - Mächtig, aber komplex
iText 7 bietet hingegen eine detailliertere und granularere Kontrolle, was für Entwickler von Vorteil 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 oft mehr Code, um ähnliche Ergebnisse wie bei IronPDF zu erreichen.
✅ Granulare PDF-Steuerung – Ideal für Unternehmensanwendungen, die strenge Compliance 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.
❌ Code-intensiver – Häufige Aufgaben erfordern oft längere Implementierungen.
Lizenzierung und Kosten
Bei der Auswahl einer PDF-Bibliothek für ein .NET-Projekt sind Lizenz- und Kostenüberlegungen entscheidend. Sowohl IronPDF als auch iText 7 folgen unterschiedlichen Lizenzmodellen, und die Wahl des richtigen Modells hängt von den Anforderungen Ihres Projekts, Ihrem Budget und Ihren Compliance-Bedürfnissen ab.
IronPDF-Lizenzierung und Kosten
IronPDF folgt einem kommerziellen Lizenzmodell, was bedeutet, dass es zwar eine kostenlose Testversion für kommerzielle Lizenzen anbietet und für Entwicklung und Bewertung kostenlos ist, aber eine bezahlte Lizenz für den vollständigen Produktionseinsatz erforderlich ist. Die Preisgestaltung ist transparent und hängt von Faktoren wie Nutzungsskalierung, Anzahl der Entwickler und Projekttyp ab.
✅ Übersichtliche Preisgestaltung basierend auf Entwickler- oder Teamlizenzen.
✅ Keine zusätzlichen Kosten für HTML-zu-PDF, PDF-Sicherheit oder andere Kernfunktionen.
✅ Am besten für Unternehmen geeignet, die eine einfache, kostengünstige PDF-Lösung benötigen.
📌 Fazit: IronPDF enthält 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 arbeitet unter einem Dual-Lizenzmodell, das Folgendes umfasst:
AGPL (GNU Affero General Public License) – Kostenlos für Open-Source-Projekte, erfordert jedoch, dass das gesamte Projekt, das iText7 verwendet, Open-Source ist und der AGPL entspricht. Dies bedeutet, dass alle Änderungen oder Ergänzungen, die am Projekt vorgenommen werden, ebenfalls öffentlich geteilt werden müssen.
Kommerzielle Lizenz – Erforderlich für jede proprietäre Software oder kommerzielle Anwendungen, die ihren Quellcode nicht offenlegen möchten. Die Preisstruktur variiert je nach Nutzung, Unterstützungsstufe und Umfang der Bereitstellung.
Für Unternehmen, die iText 7 in proprietäre Software integrieren möchten, ist eine kommerzielle Lizenz obligatorisch. Die Kosten können erheblich sein, insbesondere für Lösungen auf Unternehmensebene, da sie auf einer Abrechnung pro Entwickler basieren, aber sie bieten Zugang zu professionellem Support und gewährleisten rechtliche Compliance.
🔹 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 (Kostenpflichtig) – Erforderlich für die HTML-zu-PDF-Konvertierung.
pdfOCR (Kostenpflichtig) – Erforderlich für Texterkennung aus Bildern.
pdfCalligraph (Kostenpflichtig) – Verbessert die Textdarstellung und Schriftartunterstützung.
pdf2Data (Kostenpflichtig) – Extrahiert strukturierte Daten aus PDFs.
Unternehmensausgaben können schnell steigen, wenn mehrere Funktionen und Entwickler benötigt werden.
📌 Fazit: Wenn Ihr Team mehrere Entwickler und Schlüsselmerkmale wie HTML-zu-PDF und OCR benötigt, kann iText 7 erheblich teurer sein als IronPDF, das diese Funktionen ohne zusätzliche Kosten bietet.
Anwendungsszenarien
Kleine vs. Unternehmensprojekte
Für kleine bis mittelgroße Projekte, die eine schnelle Implementierung von PDF-Funktionalitäten mit minimaler Konfiguration erfordern, ist IronPDF aufgrund seiner benutzerfreundlichen API und des umfassenden Funktionsumfangs eine überzeugende Wahl. Unternehmensprojekte, die umfangreiche Anpassungen und die Einhaltung spezifischer PDF-Standards erfordern, können von den erweiterten Fähigkeiten von iText7 profitieren. IronPDF erweist sich jedoch ebenfalls als starke Option für diese Art von Arbeit aufgrund seiner hohen Leistung, Lizenzierungsoptionen und Benutzerfreundlichkeit.
Akademische und kommerzielle Nutzung
In akademischen Umgebungen oder Open-Source-Projekten erlaubt die AGPL-Lizenz von iText 7 eine kostenlose Nutzung, vorausgesetzt, die Lizenz des Projekts ist kompatibel. Für kommerzielle Anwendungen erfordern sowohl IronPDF als auch iText 7 den Erwerb einer kommerziellen Lizenz. Es ist ratsam, die Lizenzbedingungen jeder Bibliothek zu überprüfen, um die Einhaltung der Ziele Ihres Projekts sicherzustellen.
Schlussfolgerung
Die Wahl der richtigen PDF-Bibliothek für Ihr .NET-Projekt ist eine entscheidende Entscheidung, die von Faktoren wie Benutzerfreundlichkeit, Funktionsumfang und Lizenzierungsanforderungen abhängt. Sowohl IronPDF als auch iText 7 bieten leistungsstarke PDF-Funktionen, richten sich jedoch an unterschiedliche Anforderungen. Abgesehen von diesen beiden Bibliotheken bieten Konkurrenten wie Aspose, Syncfusion und PDFSharp ebenfalls wettbewerbsfähige .NET PDF-Bibliotheken an. Jedoch führt IronPDF konstant in der PDF-Branche mit seiner benutzerfreundlichen API, umfassendem Funktionsumfang und Kosteneffizienz.
Unten haben wir ein überzeugendes Argument zusammengefasst, warum IronPDF eine ausgezeichnete Wahl für all Ihre .NET PDF-Bibliotheksanforderungen ist.
IronPDF vs iText7 Vergleichszusammenfassung
Vorteile von IronPDF
Benutzerfreundlichkeit: IronPDF ist auf Einfachheit ausgelegt und stellt somit eine ideale Wahl für Entwickler dar, die PDF-Funktionen schnell in ihre .NET-Anwendungen integrieren müssen. Die intuitive API verringert die Lernkurve und beschleunigt die Entwicklungszeit.
Umfassende Dokumentation und Support: IronPDF bietet detaillierte Dokumentation und reaktionsschnellen Kundensupport, was sicherstellt, dass Entwickler schnell auf den neuesten Stand kommen und Probleme effektiv beheben können.
N nahtlose HTML-zu-PDF-Konvertierung: IronPDF beherrscht die Konvertierung von HTML, einschließlich CSS und JavaScript, in hochwertige PDFs. Dies ist besonders vorteilhaft für Projekte, die PDFs dynamisch aus webbasiertem Inhalt erzeugen müssen.
Kommerzielle Lizenzierung: Für kommerzielle Anwendungen bietet IronPDF flexible Lizenzierungsoptionen an, die die Einhaltung sicherstellen, ohne die Einschränkungen, die möglicherweise mit Open-Source-Lizenzen verbunden sind.
iText-Einschränkungen
Komplexität: Während iText 7 fortgeschrittene Funktionen und Anpassungsmöglichkeiten bietet, kann seine API für Entwickler, die neu in der PDF-Bearbeitung sind, komplex sein. Dies kann zu längeren Entwicklungszeiten für allgemeine Aufgaben führen im Vergleich zum einfacheren Ansatz von IronPDF.
Lizenzkosten für kommerzielle Nutzung: Die AGPL-Lizenz von iText 7 erfordert, dass alle abgeleiteten Werke quelloffen sein müssen, es sei denn, Sie erwerben eine kommerzielle Lizenz. Dies könnte eine Einschränkung für proprietäre Anwendungen sein, die den AGPL-Bedingungen nicht entsprechen können.
Java-zentrierte Funktionen: Obwohl iText 7 für .NET verfügbar ist, können seine Wurzeln im Java-Ökosystem es manchmal für C#-Entwickler weniger nativ erscheinen lassen, insbesondere bei plattformübergreifenden Problemen oder der Integration mit Java-basierten Tools.
Abschließende Gedanken
Wenn Ihr Projekt eine schnelle PDF-Erstellung erfordert, insbesondere aus Webinhalten, und Sie eine benutzerfreundliche Lösung suchen, ist IronPDF wahrscheinlich die bessere Wahl. Wenn Ihre Anwendung jedoch eine erweiterte PDF-Bearbeitung oder strikte Einhaltung von PDF-Standards erfordert und Sie die Flexibilität benötigen, umfangreich anzupassen, könnte iText7 besser geeignet sein. Berücksichtigen Sie die spezifischen Anforderungen und Lizenzbeschränkungen Ihres Projekts, um die beste Bibliothek für Ihre Bedürfnisse zu bestimmen.
🎯 Probieren Sie IronPDF heute aus: Laden Sie die kostenlose Testversion herunter, um die leistungsstarken Funktionen von IronPDF selbst zu erkunden!
Beginnen Sie noch heute mit der Verwendung von IronPDF in Ihrem Projekt mit einer kostenlosen Testversion.
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.