VERGLEICH

iText gegen IronPDF: Leitfaden für einen technischen Vergleich

In diesem Vergleich werden beide Bibliotheken in Bezug auf relevante technische Aspekte untersucht, um Entwicklern und Architekten dabei zu helfen, fundierte Entscheidungen für ihre .NET-PDF-Anforderungen zu treffen.

Überblick über iText/ iTextSharp

iText ist eine zweifach lizenzierte PDF-Bibliothek, die es ermöglicht, PDFs von Grund auf zu erstellen, bestehende Dokumente zu ändern und Aufgaben wie das Hinzufügen von Text, Bildern und Sicherheitsfunktionen auszuführen. Die Bibliothek verwendet einen programmatischen API-Ansatz, bei dem Entwickler PDF-Inhalte mithilfe von Klassen wie PdfWriter, PdfDocument, Document, Paragraph, Table und Cell erstellen.

iText 7 verwendet Namensräume wie iText.Kernel.Pdf, iText.Layout, iText.Layout.Element und iText.Html2pdf. Die PDF-Erstellung beinhaltet das Erstellen eines PdfWriter, das Einbetten in ein PdfDocument und anschließend das Erstellen eines Document für das Inhaltslayout. Text wird über Paragraph Objekte hinzugefügt, Tabellen über Table und Cell Objekte und Bilder über die Image Klasse mit ImageDataFactory.

Für die HTML-zu-PDF-Konvertierung benötigt iTextdas separate Add-on pdfHTML, das über den Namespace iText.Html2pdf mit der Methode HtmlConverter.ConvertToPdf() verfügbar ist. Dieses Add-on ist separat zu einem Aufpreis erhältlich.

iText ist unter der AGPL-Lizenz erhältlich, die verlangt, dass jede Software, die AGPL-Code in einer Webanwendung enthält, auch als Open Source veröffentlicht wird, oder der Entwickler muss eine kommerzielle Lizenz erwerben. 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 for .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 ChromePdfRenderer als primären PDF-Generierungsmechanismus mit Methoden wie RenderHtmlAsPdf(), RenderUrlAsPdf() und RenderHtmlFileAsPdf(). Die Bibliothek gibt PdfDocument Objekte zurück, die mit SaveAs() gespeichert oder mit BinaryData aufgerufen werden können. Die Konfiguration verwendet RenderingOptions Eigenschaften für Papierformat, 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);
        }
    }
}
$vbLabelText   $csharpLabel

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

iText benötigt den separaten Namespace iText.Html2pdf (aus dem pdfHTML-Add-on), erstellt manuell einen FileStream und ruft HtmlConverter.ConvertToPdf() auf, um direkt in den Stream zu schreiben.

IronPDF erstellt ein ChromePdfRenderer, ruft RenderHtmlAsPdf() mit der HTML-Zeichenkette 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);
        }
    }
}
$vbLabelText   $csharpLabel

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

iText erfordert das Erstellen eines PdfWriter, das Einschließen in ein PdfDocument, das Erstellen eines Document für das Layout und das Hinzufügen von Paragraph-Objekten und Image-Objekten, die über ImageDataFactory erstellt wurden. Jedes Element muss explizit konstruiert und konfiguriert werden.

IronPDF verwendet Standard-HTML – Überschriften, Absätze und <img>-Tags – die alle mit bekannten HTML-Attributen oder CSS formatiert sind. 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());
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

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

iText erfordert das Erstellen eines PdfWriter für die Ausgabe, das Erstellen eines Ziels PdfDocument, das Erstellen eines PdfMerger, das Durchlaufen der Quelldateien, um PdfReader und PdfDocument Instanzen zu erstellen, 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 Document PdfDocument
Document Document ChromePdfRenderer.RenderHtmlAsPdf()
Paragraph Paragraph HTML <p>, <h1>, etc.
Table PdfPTable HTML <table>
Cell PdfPCell HTML <td>, <th>
Image Image HTML <img>
List List 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() (via 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 font-size: 12px
SetBold() CSS font-weight: bold
SetBackgroundColor() CSS background-color
SetBorder() CSS border

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 auf Abonnementbasis: iTexthat die unbefristete Lizenzierung abgeschafft und verlangt für die kommerzielle Nutzung eine jährliche Abonnementverlängerung. Für Teams, die einmalige Käufe bevorzugen, ist die unbefristete Lizenzoption vonIronPDFfür die Budgetplanung besser geeignet.

pdfHTML Add-On Kosten: Um HTML mit iTextin PDF zu konvertieren, müssen Entwickler in das separate pdfHTML Add-On investieren, was Kosten und 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 Paragraph, Table, Cell und anderen Objekten. Teams mit Erfahrung in der Webentwicklung finden den HTML/CSS-Ansatz vonIronPDFintuitiver und produktiver.

Moderne Webstandards: Selbst mit pdfHTML hat iTextnur begrenzte 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 vom programmatischen Ansatz von iTextauf das HTML-first-Paradigma vonIronPDFführt häufig zu deutlich weniger Code. Berichtstabellen, die Dutzende von Zeilen mit Table, Cell und Paragraph-Objekten erfordern, werden zu einfachen HTML-Tabellen mit CSS-Styling.

Stärken und Überlegungen

iTextStärken

  • Umfassende Funktionen: Umfassende PDF-Bearbeitungsfunktionen
  • Weite Verbreitung: Große Gemeinschaft und umfangreiche Dokumentation
  • Plattformübergreifend: Funktioniert auf verschiedenen .NET-Plattformen
  • Feingranulare Steuerung: Direkte PDF-Objektmanipulation für spezielle Anforderungen

iText-Überlegungen

  • AGPL-Lizenz: Virale Lizenz erfordert Open-Sourcing-Webanwendungen oder kommerzielles Abonnement
  • Nur Abonnement: Unbefristete Lizenzierung ausgeschlossen
  • pdfHTML Add-On: HTML-zu-PDFmuss separat erworben werden
  • Programmatische Komplexität: Steile Lernkurve mit PDF-Koordinatensystem
  • Eingeschränktes modernes CSS: Grundlegende CSS-Unterstützung auch mit pdfHTML
  • Kein JavaScript: Kann kein JavaScript in HTML-Inhalten ausführen

IronPDFStärken

  • Dauerlizenzierung: Option zum einmaligen Kauf
  • Kein AGPL-Risiko: Behalten Sie proprietären Code als geschlossene Quelle
  • Eingebautes HTML-zu-PDF: Kein separates Add-on erforderlich
  • Chromium Engine: Vollständige Unterstützung von CSS3, Flexbox, Grid und JavaScript
  • Freundlich für Webentwickler: Verwendet vertraute HTML/CSS-Kenntnisse
  • Einfache API: Prägnante Methoden für gängige Operationen
  • Umfassende Ressourcen: Umfangreiche Tutorials und Dokumentation

IronPDFÜberlegungen

  • Gewerbliche Lizenz: Erforderlich für die produktive Nutzung
  • HTML-First-Paradigma: Unterschiedlicher Ansatz zum programmatischen Aufbau

Abschluss

iText undIronPDFstellen grundlegend unterschiedliche Ansätze für die PDF-Erzeugung in .NET-Anwendungen dar. iTextbietet umfassende programmatische PDF-Erstellung mit Klassen wie Paragraph, Table und Cell, birgt aber erhebliche Lizenzprobleme – die AGPL verlangt Open-Source-Webanwendungen, eine unbefristete Lizenz wurde abgeschafft, und für die HTML-zu-PDF-Konvertierung ist der separate Kauf des pdfHTML-Add-ons erforderlich.

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 for .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.