iText gegen IronPDF: Leitfaden für einen technischen Vergleich
Dieser Vergleich betrachtet beide Bibliotheken unter relevanten technischen Aspekten, um Entwickler und Architekten bei der Entscheidungsfindung für ihre .NET PDF-Anforderungen zu unterstützen.
Überblick über iText/ iTextSharp
iText ist eine PDF-Bibliothek mit doppelter Lizenz, die es ermöglicht, PDFs von Grund auf neu zu erstellen, bestehende Dokumente zu bearbeiten und Aufgaben wie das Hinzufügen von Text, Bildern und Sicherheitsfunktionen durchzuführen. Die Bibliothek verwendet einen programmatischen API-Ansatz, bei dem Entwickler PDF-Inhalte mithilfe von Klassen wie PdfWriter, PdfDocument, Dokument, Absatz, Tabelleund Zelleerstellen.
iText 7 verwendet Namespaces wie iText.Kernel.Pdf , iText.Layout , iText.Layout.Element und iText.Html2pdf . Die PDF-Erstellung umfasst das Erstellen eines PdfWriter, das Einbetten dieses PdfDocumentund anschließend das Erstellen eines Dokumentfür das Inhaltslayout. Text wird über Paragraph-Objekte hinzugefügt, Tabellen über Table- und Cell-Objekte und Bilder über die Klasse Bildmit ImageDataFactory.
Für die HTML-zu-PDF-Konvertierung benötigt iTextdas separate pdfHTML-Add-on, das über den iText.Html2pdf-Namensraum mit der Methode HtmlConverter.ConvertToPdf()verfügbar ist. Dieses Zusatzmodul ist separat gegen Aufpreis erhältlich.
iText ist unter der AGPL-Lizenz verfügbar, die vorschreibt, dass jede Software, die AGPL-Code in einer Webanwendung enthält, ebenfalls als Open Source veröffentlicht werden muss, oder dass der Entwickler eine kommerzielle Lizenz erwerben muss. iTexthat die unbefristete Lizenzierung abgeschafft und verlangt für die kommerzielle Nutzung eine jährliche Verlängerung des Abonnements.
Überblick über IronPDF
IronPDF ist eine kommerzielle PDF-Bibliothek für .NET-Entwickler, die lieber mit HTML und CSS als mit programmatischer PDF-Erstellung arbeiten. Die Bibliothek verwendet eine moderne Chromium-Rendering-Engine, die eine genaue Darstellung von HTML5, CSS3, JavaScript und modernen Layout-Systemen wie Flexbox und Grid ermöglicht.
IronPDF verwendet die Klasse ChromePdfRendererals primären PDF-Erzeugungsmechanismus mit Methoden wie RenderHtmlAsPdf(), RenderUrlAsPdf() und RenderHtmlFileAsPdf(). Die Bibliothek liefert PdfDocument-Objekte, die mit SaveAs() gespeichert oder als BinaryData abgerufen werden können. Die Konfiguration verwendet RenderingOptions-Eigenschaften für Papiergröße, Ränder, Kopf- und Fußzeilen.
IronPDF bietet sowohl unbefristete als auch Abonnementlizenzen an, wobei keine virale Lizenzierung erforderlich ist. Die HTML-zu-PDF-Konvertierung ist in das Basisprodukt integriert, ohne dass separate Add-ons erforderlich sind.
Vergleich von Lizenzen und Geschäftsmodellen
Der wichtigste Unterschied zwischen diesen Bibliotheken betrifft die Lizenzierung und die geschäftlichen Auswirkungen.
| Feature | iText7 / iTextSharp | IronPDF |
|---|---|---|
| Lizenz | AGPL (viral) oder teures Abonnement | Kommerzielle, unbefristete Option |
| HTML-zu-PDF | Separates pdfHTML-Add-on (zusätzliche Kosten) | Eingebauter Chromium-Renderer |
| Open-Source-Risiko | Muss Open-Source-Webanwendungen unter AGPL | Keine viralen Anforderungen |
| Preismodell | Nur Abonnement | Unbefristet oder Abonnement |
| Dauerhafte Option | Eliminiert | Verfügbar |
Die AGPL-Lizenzfalle ist für kommerzielle Webanwendungen besonders problematisch. Wenn Sie iTextin einer Webanwendung verwenden, ohne eine kommerzielle Lizenz zu erwerben, verlangt die AGPL, dass Sie Ihre gesamte Anwendung als Open Source zur Verfügung stellen - nicht nur den PDF-Code, sondern Ihre gesamte Codebasis.
API-Paradigma-Vergleich
Die grundlegende Philosophie des API-Designs unterscheidet sich erheblich zwischen den Bibliotheken.
| Aspekt | iText | IronPDF |
|---|---|---|
| API-Paradigma | Programmatisch (Absatz, Tabelle, Zelle) | HTML-first mit CSS |
| CSS-Unterstützung | Grundlegende CSS-Kenntnisse (über pdfHTML-Add-on) | Vollständig CSS3, Flexbox, Grid |
| JavaScript | Keine | Vollständige Ausführung |
| Lernkurve | Steil (PDF-Koordinatensystem) | Webentwicklerfreundlich |
| Inhaltserstellung | Manuelle Low-Level-Objekte | HTML-Vorlagen |
iText erstellt PDFs programmatisch mit expliziter Objektkonstruktion.IronPDFverwendet HTML/CSS, so dass Webentwickler ihre vorhandenen Kenntnisse direkt anwenden können.
Code-Vergleich: Gängige PDF-Operationen
HTML-zu-PDF-Konvertierung
Der grundlegendste Vorgang demonstriert die verschiedenen Ansätze und Zusatzanforderungen.
iText (erfordert pdfHTML-Add-on):
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
iText benötigt den separaten iText.Html2pdf-Namensraum (aus dem pdfHTML-Add-on), erstellt manuell einen FileStream und ruft HtmlConverter.ConvertToPdf()auf, um direkt in den Stream zu schreiben.
IronPDF erstellt einen ChromePdfRenderer, ruft RenderHtmlAsPdf() mit dem HTML-String auf und speichert mit SaveAs(). Die Chromium-Engine bietet vollständige CSS3- und JavaScript-Unterstützung ohne zusätzliche Add-ons.
Für fortgeschrittene HTML-Rendering-Optionen lesen Sie bitte den Leitfaden zur Konvertierung von HTML in PDF.
Erstellen von PDFs mit Text und Bildern
Der programmatische PDF-Aufbau zeigt den Paradigmenwechsel am deutlichsten.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
iText erfordert die Erstellung eines PdfWriter, dessen Einbettung in ein PdfDocument, die Erstellung eines Dokumentfür das Layout und das Hinzufügen von Paragraph-Objekten und Image-Objekten, die über die ImageDataFactory erstellt werden. Jedes Element muss explizit konstruiert und konfiguriert werden.
IronPDF verwendet Standard-HTML, d. h. Überschriften, Absätze und <img>-Tags, die alle mit bekannten HTML-Attributen oder CSS gestaltet werden. Das Rendering wird von der Chromium-Engine übernommen, die mit deutlich weniger Code das gleiche Ergebnis liefert.
Mehrere PDFs zusammenführen
Die Zusammenführung von Dokumenten verdeutlicht die Unterschiede in der API-Komplexität.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
iText erfordert die Erstellung eines PdfWriterfür die Ausgabe, die Erstellung eines PdfDocumentals Ziel, die Erstellung eines PdfMerger, die Iteration durch die Quelldateien zur Erstellung von PdfReader- und PdfDocument-Instanzen, den Aufruf von merger.Merge() mit Seitenbereichen und die Verwaltung der Entsorgung aller Objekte.
IronPDF lädt Dokumente mit PdfDocument.FromFile(), erstellt eine Liste und ruft die statische Methode PdfDocument.Merge()auf. Die Bedienung ist deutlich prägnanter.
Erfahren Sie mehr über die PDF-Bearbeitung in den IronPDF-Tutorials.
API-Mapping-Referenz
Für Entwickler, die eine iText-Migration evaluieren oder Funktionen vergleichen, zeigt dieses Mapping gleichwertige Operationen:
Klassenzuordnung
| iText7 Klasse | iTextSharp-Klasse | IronPDF-Äquivalent |
|---|---|---|
PdfWriter |
PdfWriter |
ChromePdfRenderer |
PdfDocument |
Dokument |
PdfDocument |
Dokument |
Dokument |
ChromePdfRenderer.RenderHtmlAsPdf() |
Absatz |
Absatz |
HTML <p>, <h1>, usw. |
Tabelle |
PdfPTabelle |
HTML <table> |
Zelle |
PdfPCell |
HTML <td>, <th> |
Bild |
Bild |
HTML <img> |
Liste |
Liste |
HTML <ul>, <ol> |
ListItem |
ListItem |
HTML <li> |
PdfReader |
PdfReader |
PdfDocument.FromFile() |
PdfMerger |
Nicht anwendbar | PdfDocument.Merge() |
PdfTextExtractor |
PdfTextExtractor |
pdf.ExtractAllText() |
Methoden-Mapping
| Aufgabe | iText7 | IronPDF |
|---|---|---|
| PDF aus HTML erstellen | HtmlConverter.ConvertToPdf() |
renderer.RenderHtmlAsPdf() |
| PDF aus URL erstellen | HTML herunterladen + konvertieren | renderer.RenderUrlAsPdf() |
| PDF aus Datei erstellen | HtmlConverter.ConvertToPdf(File.ReadAllText()) |
renderer.RenderHtmlFileAsPdf() |
| In Datei speichern | document.Close() (über Stream) |
pdf.SaveAs() |
| In Bytes speichern | memoryStream.ToArray() |
pdf.BinaryData |
| Vorhandene PDF-Datei öffnen | new PdfDocument(new PdfReader(path)) |
PdfDocument.FromFile() |
| PDFs zusammenführen | PdfMerger.Merge() |
PdfDocument.Merge() |
| Text extrahieren | PdfTextExtractor.GetTextFromPage() |
pdf.ExtractAllText() |
Styling-Zuordnung
| iText7 Methode | IronPDF-Äquivalent |
|---|---|
SetTextAlignment(TextAlignment.CENTER) |
CSS text-align: center |
SetFontSize(12) |
CSS Schriftgröße: 12px |
SetBold() |
CSS Schriftgewicht: fett |
Hintergrundfarbe setzen() |
CSS Hintergrundfarbe |
SetBorder() |
CSS Bordüre |
Zusammenfassung des Funktionsvergleichs
| Feature | iText | IronPDF |
|---|---|---|
| Programmatische PDF-Erstellung | ✅(Primärer Ansatz) | ⚠️ (Über HTML) |
| HTML-zu-PDF | ⚠️ (Erfordert pdfHTML-Zusatzmodul) | ✅(Eingebaut) |
| CSS3-Unterstützung | ⚠️ (Grundlegend über pdfHTML) | ✅(Vollständig) |
| Flexbox/Grid | ❌ | ✅ |
| JavaScript-Ausführung | ❌ | ✅ |
| PDF-Zusammenführung | ✅(PdfMerger) |
✅(PdfDocument.Merge()) |
| Textextraktion | ✅(PdfTextExtractor) |
✅(ExtractAllText()) |
| Unbefristete Lizenz | ❌(gestrichen) | ✅ |
| Kein AGPL-Risiko | ❌(AGPL oder Abonnement) | ✅ |
| Community-Unterstützung | ✅(umfangreich) | ✅ |
Wenn Teams den Wechsel von iTextzuIronPDFerwägen
Entwicklungsteams erwägen den Umstieg von iTextaufIronPDFaus mehreren Gründen:
AGPL-Lizenzfalle: Die AGPL-Lizenz ist für kommerzielle Webanwendungen sehr restriktiv. Wenn Sie iTextin einer Webanwendung verwenden, ohne eine kommerzielle Lizenz zu erwerben, verlangt die AGPL, dass Sie Ihre gesamte Anwendung als Open Source zur Verfügung stellen - nicht nur den PDF-Code, sondern Ihre gesamte Codebasis. Teams, die proprietäre Software entwickeln, können diese virale Lizenzierungsanforderung oft nicht akzeptieren.
Kommerzielle Lizenzierung nur mit Abonnement: iTexthat die unbefristete Lizenzierung abgeschafft; für die kommerzielle Nutzung ist eine jährliche Abonnementverlängerung erforderlich. Für Teams, die einmalige Käufe bevorzugen, ist die unbefristete Lizenzoption vonIronPDFfür die Budgetplanung besser geeignet.
Kosten des pdfHTML-Add-ons: Um HTML mit iTextin PDF zu konvertieren, müssen Entwickler in das separate pdfHTML-Add-on investieren, was die Kosten und die Komplexität erhöht.IronPDFbeinhaltet die HTML-zu-PDF-Konvertierung im Basisprodukt mit einer modernen Chromium-Rendering-Engine.
Programmatische API-Komplexität: iTexterfordert die manuelle Erstellung von PDFs auf niedriger Ebene mit Absatz, Tabelle, Zelleund anderen Objekten. Teams mit Erfahrung in der Webentwicklung finden den HTML/CSS-Ansatz vonIronPDFintuitiver und produktiver.
Moderne Webstandards: Selbst mit pdfHTML bietet iTextnur eingeschränkte Unterstützung für komplexes CSS und JavaScript. Die Chromium-Engine vonIronPDFbietet die vollständige Ausführung von CSS3, Flexbox, Grid und JavaScript für moderne Webinhalte.
Vereinfachte Codebasis: Die Umstellung von iTexts programmatischem Ansatz auf IronPDFs HTML-First-Paradigma führt oft zu deutlich weniger Code. Berichtstabellen, die Dutzende von Zeilen mit den Objekten Table, Zelleund Absatzerfordern, werden zu einfachen HTML-Tabellen mit CSS-Styling.
Stärken und Überlegungen
iTextStärken
- Umfassender Funktionsumfang: Umfangreiche PDF-Bearbeitungsmöglichkeiten
- Weit verbreitete Akzeptanz: Große Community und umfangreiche Dokumentation
- Plattformübergreifend: Funktioniert auf verschiedenen .NET-Plattformen
- Feingranulare Steuerung: Direkte PDF-Objektmanipulation für spezielle Anforderungen
iText-Überlegungen
- AGPL-Lizenz: Die Viral-Lizenz erfordert Open-Source-Webanwendungen oder ein kommerzielles Abonnement.
- Nur Abonnement: Dauerlizenzierung entfällt
- pdfHTML-Add-on: Die HTML-zu-PDF-Konvertierung erfordert einen separaten Kauf
- Programmatische Komplexität: Steile Lernkurve mit dem PDF-Koordinatensystem
- Eingeschränktes modernes CSS: Grundlegende CSS-Unterstützung auch mit pdfHTML
- Kein JavaScript: JavaScript kann im HTML-Inhalt nicht ausgeführt werden
IronPDFStärken
- Dauerlizenz: Option für einen einmaligen Kauf Kein AGPL-Risiko: Proprietärer Code bleibt Closed-Source
- Integrierte HTML-zu-PDF-Konvertierung: Kein separates Add-on erforderlich
- Chromium-Engine: Volle Unterstützung für CSS3, Flexbox, Grid und JavaScript
- Webentwicklerfreundlich: Nutzt gängige HTML/CSS-Kenntnisse
- Einfachere API: Prägnante Methoden für häufige Operationen
- Umfassende Ressourcen: Ausführliche Tutorials und Dokumentation
IronPDFÜberlegungen
- Kommerzielle Lizenz: Für die Produktionsnutzung erforderlich
- HTML-First-Paradigma: Ein anderer Ansatz als die programmatische Konstruktion
Abschluss
iText undIronPDFstellen grundlegend unterschiedliche Ansätze für die PDF-Erzeugung in .NET-Anwendungen dar. iTextbietet eine umfassende programmatische PDF-Konstruktion mit Klassen wie Paragraph, Tabelleund Cell, ist aber mit erheblichen Lizenzierungsproblemen behaftet - die AGPL erfordert das Open-Sourcing von Webanwendungen, die unbefristete Lizenzierung wurde abgeschafft, und für HTML-zu-PDFmuss ein separates pdfHTML-Add-on erworben werden.
IronPDF bietet eine moderne Alternative mit integrierter HTML-zu-PDF-Konvertierung unter Verwendung einer Chromium-Engine, unbefristeten Lizenzierungsoptionen und keinen viralen Lizenzierungsanforderungen. Der HTML-first-Ansatz ermöglicht es Webentwicklern, vorhandene Kenntnisse direkt anzuwenden, was oft zu einfacherem, besser wartbarem Code führt.
Da Unternehmen für .NET 10, C# 14 und die Anwendungsentwicklung bis 2026 planen, hat die Wahl zwischen AGPL-lizenzierter programmatischer PDF-Konstruktion und kommerziell lizenziertem HTML-basiertem Rendering erhebliche Auswirkungen auf die Einhaltung der gesetzlichen Bestimmungen und die Entwicklungsproduktivität. Teams, die das AGPL-Risiko ausschalten, die Komplexität der Lizenzierung reduzieren oder Webentwicklungskenntnisse für die PDF-Generierung nutzen möchten, finden inIronPDFeine effektive Lösung für diese Anforderungen.
Testen SieIronPDFmit einer kostenlosen Testversion und lesen Sie die umfassende Dokumentation, um die Eignung für Ihre spezifischen Anforderungen zu prüfen.