Leitfaden 2025: Beste C# PDF-Bibliotheken (Zuerst kostenlos, bezahlt wenn nötig)
Wenn die meisten Menschen an PDF (Portable Document Format) denken, denken sie an eine Datei voller Informationen. Und damit haben sie Recht, denn PDFs sind derzeit das am häufigsten verwendete Dateiformat zum Informationsaustausch und haben sich zu einem Standard entwickelt. Doch wenn Programmierer die PDFs ansehen, sehen sie nicht nur Informationen; Sie analysieren das Format, die Art des Inhalts und andere technische Aspekte.
Bei der programmatischen Erstellung von PDF-Dateien ist die Beibehaltung der Inhaltsstruktur die wichtigste Aufgabe. Und es ist keine so einfache Aufgabe, wie es scheint, denn wenn wir von Inhalten sprechen, meinen wir nicht nur Text, sondern auch Bilder, Grafiken, Audio und sogar Videos. Auch die programmatische Bearbeitung von PDFs ist mittlerweile eine gängige Anforderung.
Im Zeitalter der KI wollen wir die vollständige Kontrolle über die PDFs haben. Manchmal müssen wir Texte aufgrund von Richtlinien schwärzen, PDFs schützen, um sensible Dateien zu sichern, Daten zur Weiterverarbeitung extrahieren oder Berichte dynamisch generieren. Für diese Prozesse gibt es viele Anwendungsfälle. Dies sind häufige Probleme, mit denen Entwickler bei der programmatischen Verarbeitung von PDF-Dateien konfrontiert werden:
-
Wie behält man ein formatiertes Layout für ein PDF-Dokument bei, wenn man alle Arten von Medien als Inhalt verarbeitet?
-
Text in der richtigen Reihenfolge extrahieren, insbesondere wenn der Text in Spalten angeordnet ist.
-
Speicherbeschränkungen bei der Verarbeitung von PDF-Dokumenten mit vielen Seiten
-
Die Formularverarbeitung stellt ein großes Problem für Entwickler dar.
- Konvertierung von PDF-Dateien in andere geeignete Dokumenttypen
Um diese Aufgabe zu erleichtern, kommen PDF-Bibliotheken zum Einsatz. In diesem Artikel werden wir verschiedene C# PDF-Bibliotheken wie IronPDF und Aspose.PDF sowie deren Preismodelle besprechen. Wir werden uns mit den praktischen Anwendungsfällen befassen und verstehen, wie diese Bibliotheken die Erstellung und Bearbeitung von PDFs programmatisch vereinfachen und in wenigen Schritten produktionsreif machen.
1. IronPDF: C# PDF-Bibliothek
IronPDF ist eine umfassende .NET PDF-Bibliothek, mit der Entwickler PDF-Dokumente erstellen, bearbeiten, in beliebige andere Formate konvertieren und viele weitere PDF-Operationen durchführen können. Es benötigt beim Verarbeiten großer PDF-Dateien nur sehr wenig Speicherplatz. Es funktioniert vollständig auf Ihrem lokalen Rechner, sodass Sie nicht auf die Verarbeitung auf Serverebene angewiesen sind.
Diese Bibliothek ist auch mit dem neuesten .NET Framework kompatibel und lässt sich sehr reibungslos in .NET-Projekte integrieren. Sie müssen lediglich den folgenden Befehl im NuGet-Paketmanager ausführen, und IronPDF ist im Projekt einsatzbereit:
Install-Package IronPdf
Sie müssen keine weiteren Bibliotheken installieren, da es völlig unabhängig von externen Abhängigkeiten ist. Bei der Installation dieser Bibliothek werden automatisch alle erforderlichen Abhängigkeiten gleichzeitig installiert.
Das wichtigste Merkmal von IronPDF ist seine Fähigkeit, HTML pixelgenau in PDF zu konvertieren . IronPDF bietet verschiedene Methoden zur Erstellung von PDF-Dokumenten aus HTML-Inhalten. Sie können eine HTML-Zeichenkette, eine HTML-Datei oder eine URL direkt in PDF konvertieren. Es unterstützt auch CSS und JavaScript, um sicherzustellen, dass die generierten PDF-Dokumente die ursprüngliche HTML-Darstellung genau widerspiegeln.
Über die grundlegenden Funktionen hinaus unterstützt IronPDF PDF-Formulare, Verschlüsselung auf allen Ebenen und das Hinzufügen digitaler Signaturen. Sie können Bilder und Texte aus PDF-Dateien extrahieren. Sie können außerdem Text- oder HTML-Kopf- und Fußzeilen hinzufügen, PDFs zusammenführen und aufteilen, mehrere Textabschnitte bearbeiten sowie Text suchen und ersetzen. IronPDF unterstützt nicht nur die Erstellung von PDFs aus HTML, sondern auch die Konvertierung von DOCX-, RTF-, MD- und Bilddateien in das PDF-Format. Diese Bibliothek ist sehr leichtgewichtig und sehr speichereffizient ( für grundlegende Operationen werden weniger als 10 MB Speicher benötigt ). IronPDF dokumentiert seine Meilensteine in Bezug auf Stabilität und Leistung, die Sie hier abrufen können.
IronPDF bietet Support auf verschiedenen Ebenen. Sie können die Ingenieure per Live-Chat, Ticket-Erstellung oder E-Mail erreichen. Das Support-Team steht Ihnen rund um die Uhr zur Verfügung. IronPDF bietet außerdem ausführliche Tutorials und Dokumentationen, die nahezu alle Themen abdecken, die Sie verstehen möchten oder zu denen Sie Fragen haben.
IronPDF ist eine produktionsreife Bibliothek, die von vielen bekannten Unternehmen für ihre Live-Produkte getestet, optimiert und als zuverlässig erwiesen wurde. Damit ist sie eine der besten PDF-Bibliotheken für die Durchführung von PDF-Operationen in Ihren Projekten. Werfen wir einen Blick auf die Codebeispiele der IronPDF-Bibliothek.
Code-Beispiele
Konvertieren Sie HTML in PDF
using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");
// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
"<img src='logo.png'><link rel='stylesheet' href='style.css'>",
@"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");
// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");
// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Text und Bilder aus PDFs extrahieren
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");
// 1. Extract All Text
string allText = pdf.ExtractAllText();
// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0);
// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
}
// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}
// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);
// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}
// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
string text = pdf.ExtractTextFromPage(i);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);
Console.WriteLine($"Page {i + 1}: {text}");
Console.WriteLine($"Found {images.Count} images");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDF-Dokumente bearbeiten: Kopf- und Fußzeilen
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();
// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
MaxHeight = 15, // mm
DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;
// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<img src='logo.png'>",
MaxHeight = 20, // mm
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;
// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Formularverarbeitung
using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");
using IronPdf;
// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");
// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";
// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";
// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";
// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";
// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";
// Save filled form
pdf.SaveAs("FilledForm.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Wie Sie den obigen Beispielen entnehmen können, lassen sich mit IronPDF beliebige Operationen an einer PDF-Datei mit nur wenigen Zeilen Code durchführen. Es ist ganz einfach und unkompliziert. Methodennamen sind leicht verständlich und implementierbar.
Lizenz
IronPDF kann für Entwicklungszwecke kostenlos genutzt werden, und Sie können auch die kostenlose Testversion herunterladen. Für die Produktion benötigen Sie jedoch eine Lizenz für IronPDF. Das Lizenzmodell von IronPDF ist flexibel, da es zwei Arten von Lizenzen anbietet:
-
Abonnementlizenz
- Dauerlizenz
Die Abonnementlizenz kostet 59 US-Dollar pro Monat (jährliche Abrechnung) und beinhaltet 1 Entwickler, 1 Projekt und 15.000 API-Aufrufe pro Jahr. Zusätzliche API-Aufrufe kosten jeweils 0,03 $, nachdem Ihr Kontingent überschritten wurde.
Die unbefristete Lizenz ist ab 749 US-Dollar erhältlich und bietet verschiedene Optionen, aus denen Sie je nach Ihren Bedürfnissen wählen können. Das Beste an dieser Lizenz ist, dass sie zeitbasiert bezahlt wird. Für die Nutzung von IronPDF müssen Sie nicht erneut bezahlen.

2. Aspose.PDF für .NET
Aspose.PDF ist eine C# PDF-Bibliothek, die von Aspose als Teil ihrer .NET-Bibliothekssuite entwickelt wurde und kommerziell für PDF-bezogene Aufgaben wie die Erstellung komplexer Berichte und vertraulicher Dokumente, die Anpassung von PDF-Dokumenten und vieles mehr weit verbreitet ist. Es handelt sich um eine der am häufigsten verwendeten PDF-Bibliotheken für C#. Es unterstützt außerdem das neueste .NET Framework.
Aspose.PDF kann PDF-Dokumente nicht nur aus HTML-Inhalten erstellen, sondern unterstützt auch das Extrahieren von Daten aus XML-Dateien, um die realen Daten anstelle der Erstellung statischer Dateien bereitzustellen. Diese Funktion ist sehr hilfreich für die Erstellung komplexer Berichte. Ähnlich wie bei IronPDF können Sie auch hier Text, Bilder, Grafiken und viele andere Arten von Inhalten in PDF-Dateien einfügen. Aspose.PDF bietet außerdem die Möglichkeit, digitale Signaturen einzubetten, Anmerkungen zu verarbeiten, Kopf- und Fußzeilen hinzuzufügen und Text aus den PDF-Dateien zu extrahieren. Sie können die strukturierten Daten aus einer PDF-Datei extrahieren. Diese Bibliothek eignet sich dank der genannten Funktionen hervorragend für die PDF-Bearbeitung.
Neben diesen Vorteilen der Aspose.PDF-Bibliothek gibt es auch mehrere Nachteile. Der größte Nachteil dieser Bibliothek ist ihr sehr hoher Preis (ab 1679 US-Dollar) und ihr Preismodell ist sehr komplex und schwer verständlich. Im Gegensatz zu IronPDF müssen Sie das Modell für jeden Prozess separat erwerben, beispielsweise für die Entwicklung und die Bereitstellung. Darüber hinaus ist diese Bibliothek sehr ressourcenintensiv ( übersteigt 2 GB beim Generieren von PDFs mit mehr als 400 Bildern ). Die Bearbeitung der PDF-Dateien erfordert viel Speicherplatz und ist wirklich frustrierend. Diese Bibliothek ist zweifellos gut in dem, was sie tut, aber die Lernkurve ist sehr steil. Der Code ist nicht leicht zu verstehen und erfordert eine sehr detaillierte Einarbeitung, um ihn zu begreifen.
Codebeispiel
PDF-Dokumente mit Text, Bildern und Tabellen erstellen
using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}
using Aspose.Pdf;
using Aspose.Pdf.Text;
using (var document = new Document())
{
// Add page objects
var page = document.Pages.Add();
// Add image - requires Rectangle positioning (You can add tiff images as well)
page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));
// Add text - requires manual positioning
var header = new TextFragment("Company Report");
header.TextState.Font = FontRepository.FindFont("Arial");
header.TextState.FontSize = 24;
header.HorizontalAlignment = HorizontalAlignment.Center;
header.Position = new Position(130, 720);
page.Paragraphs.Add(header);
// Add table - extensive configuration required
var table = new Table
{
ColumnWidths = "100 100 100",
Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
};
// Add header row
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Name");
headerRow.Cells.Add("Age");
headerRow.Cells.Add("City");
// Style each header cell individually
foreach (Cell cell in headerRow.Cells)
{
cell.BackgroundColor = Color.LightGray;
cell.DefaultCellTextState.FontSize = 12;
}
// Add data row
var dataRow = table.Rows.Add();
dataRow.Cells.Add("John Doe");
dataRow.Cells.Add("30");
dataRow.Cells.Add("New York");
page.Paragraphs.Add(table);
// Save document
document.Save("Report.pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Man kann sehen, dass der von Aspose.PDF benötigte Code zum Erstellen neuer PDF-Dokumente sehr komplex ist. Sie müssen jede Koordinate manuell im Code selbst festlegen. Sie müssen jedes PDF-Objektelement manuell formatieren, was sehr zeitaufwändig und ineffizient ist. Es bietet jedoch eine detaillierte Kontrolle über die PDF-Dokumente.
Lizenz
Aspose.PDF bietet verschiedene Lizenzierungsoptionen an, die meisten davon basieren jedoch auf dem Pay-as-you-go-Prinzip. Der Lizenzpreis beginnt bei 1679 US-Dollar. Im Vergleich zu den IronPDF-Lizenzoptionen (ab 749 US-Dollar) ist er sehr teuer.

3. iTextSuite für .NET
iTextSuite (allgemein bekannt als iText7 & iTextSharp) ist das SDK für die PDF-Entwicklung, das von Apryse angeboten wird. Es handelt sich um eine umfassende Suite, die alle notwendigen Werkzeuge enthält, die wir für PDF-Operationen in .NET-Anwendungen benötigen. Ähnlich wie bei den oben genannten Bibliotheken können Sie PDF-Dokumente erstellen, bearbeiten, schwärzen, verschlüsseln und viele andere Operationen an ihnen durchführen.
iTextSuite bewältigt alle Aufgaben der PDF-Erstellung und -Bearbeitung hervorragend, egal ob es sich um die Erstellung einfacher Rechnungen oder um komplexe Layouts von Berichten im Zusammenhang mit Finanzmodulen handelt. Es ist zudem nicht ressourcenintensiv und funktioniert auch mit großen Dokumenten einwandfrei. Es verarbeitet Dokumente schnell und liefert Ergebnisse ohne nennenswerte Verzögerung.
Neben all diesen positiven Eigenschaften weist die iTextSuite auch einige Nachteile auf, die Sie kennen sollten, bevor Sie diese Bibliothek in Betracht ziehen. Die Kosten dieser Bibliothek sind im Vergleich zu den auf dem Markt erhältlichen Alternativen angeblich sehr hoch. Die Originalpreise sind auf der Preisseite nicht verfügbar. Um ein Angebot zu erhalten, müssen Sie sich an den Kundendienst wenden. Es bietet auch eine AGPL-Lizenz an, verlangt aber, dass Sie Ihr Produkt als Open Source veröffentlichen, wenn Sie die AGPL-lizenzierte iTextSuite verwenden. Ähnlich wie Aspose hat auch diese Software eine steile Lernkurve und ist nicht anfängerfreundlich. Für die fortgeschrittene Bearbeitung von PDFs ist ein detailliertes Verständnis von PDF und der Struktur der Bibliothek erforderlich.
Codebeispiel
Erstellen Sie eine PDF-Dokumenttabelle mit Formatierung und Farben
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public void CreateStyledTable(string dest)
{
using var writer = new PdfWriter(dest);
using var pdf = new PdfDocument(writer);
var document = new Document(pdf);
// Create a 2-column table
Table table = new Table(2, false);
// Header cells with gray background
Cell cell11 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("State"));
Cell cell12 = new Cell(1, 1)
.SetBackgroundColor(ColorConstants.GRAY)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Capital"));
// Data cells
Cell cell21 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New York"));
Cell cell22 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Albany"));
Cell cell31 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("New Jersey"));
Cell cell32 = new Cell(1, 1)
.SetTextAlignment(TextAlignment.CENTER)
.Add(new Paragraph("Trenton"));
// Add all cells to table
table.AddCell(cell11);
table.AddCell(cell12);
table.AddCell(cell21);
table.AddCell(cell22);
table.AddCell(cell31);
table.AddCell(cell32);
document.Add(table);
document.Close();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Anhand des obigen Beispiels lässt sich die Komplexität des Codes für iTextSuite erkennen. Dies erhöht die Entwicklungszeit und den Aufwand für die Erstellung großer Anwendungen.
Lizenz
iTextSuite bietet zwei Lizenzmodelle an. Die eine ist kommerziell, die andere unter der AGPL-Lizenz. Sie können iTextSuite im Produktiveinsatz kostenlos unter der AGPL-Lizenz verwenden, müssen Ihr Produkt aber auch als Open Source veröffentlichen. Bezüglich der kommerziellen Lizenz ist auf der Lizenzseite kein Preis angegeben. Sie müssen ein Angebot anfordern oder können sich an den Kundendienst wenden.

4. PDFSharp
PDFsharp ist eine Open-Source-Lösung in C# für PDF-Probleme, mit denen Entwickler bei der programmatischen Durchführung von PDF-Operationen konfrontiert sind. Es unterstützt die neuesten .NET-Frameworks, einschließlich .NET Core. Es handelt sich um eine leichtgewichtige Lösung, die alle grundlegenden Bedürfnisse eines Entwicklers in Bezug auf PDFs abdeckt.
PDFSharp kann die meisten gängigen PDF-Operationen problemlos ausführen. Sie können Dokumente erstellen, Bilder einfügen, Formen zeichnen und Schriftarten und -größen bearbeiten. Sie können alles an jeder beliebigen Position platzieren, da PDFSharp Ihnen die volle Kontrolle über das PDF gibt.
PDFSharp hat jedoch gewisse Einschränkungen, die Sie kennen sollten. Es unterstützt keine native HTML-zu-PDF-Konvertierung, und das ist ein großer Nachteil für Entwickler, da HTML das Styling und die Positionierung in PDFs sehr einfach macht. Die Leistungsfähigkeit wird beeinträchtigt, wenn mehrere große Dateien verarbeitet werden müssen. Komplexe Vorgänge wie Verschlüsselung und Formularausfüllung sind nicht möglich. Und es fehlen offizielle Unterstützungskanäle. Bei Problemen während der Arbeit mit dieser Bibliothek sind Sie ausschließlich auf die Unterstützung der Community oder Ihre eigenen Problemlösungsfähigkeiten angewiesen.
Codebeispiel
Erstellen einer PDF-Datei mit mehreren Textstilen
using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);
// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;
// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);
// Save document
document.Save("FormattedText.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
PDFSharp bleibt eine solide Wahl für Entwickler, die eine leichtgewichtige, kostenlose Lösung für die grundlegende PDF-Erstellung mit präziser Positionierungskontrolle benötigen. Seien Sie darauf vorbereitet, die Einschränkungen zu umgehen oder es für komplexere Anforderungen mit anderen Tools zu kombinieren.
Lizenz
PDFSharp wird unter der MIT-Lizenz vertrieben und ist völlig kostenlos nutzbar. Sie müssen lediglich den ursprünglichen Urheberrechtshinweis beifügen und die Lizenz in Ihrer Verbreitung erwähnen.
5. PDFPig
PDFPig ist eine weitere Open-Source-Bibliothek für .NET-Entwickler, mit der man Inhalte aus PDF-Dateien lesen und extrahieren kann. Diese Bibliothek extrahiert die Position und Größe einzelner Buchstaben aus PDF-Dokumenten. Es ruft Bilder ab, liest PDF-Anmerkungen und -Formulare, greift auf Hyperlinks zu und zeigt eingebettete Dokumente an. Sie können außerdem auf die Metadaten des Dokuments zugreifen und die interne PDF-Struktur einsehen.
Die Bibliothek schneidet in Benchmarks im Vergleich zu ähnlichen .NET-Tools gut ab und nutzt den Speicher effizient. Es bietet eine kostenlose Alternative zu kommerziellen Optionen. Es wird regelmäßig aktualisiert und verfügt über eine aktive GitHub-Dokumentation.
Die Bibliothek hat klare Einschränkungen, die Sie kennen sollten. Es konvertiert weder HTML noch andere Formate in PDF. Es kann keine Bilder aus PDF-Seiten generieren, obwohl separate Tools wie docnet oder PDFtoImage diese Lücke schließen können. PDF-Formulare sind schreibgeschützt; Sie können keine Formularwerte ändern oder hinzufügen. Für die Tabellenextraktion benötigen Sie externe Tools wie Tabula Sharp oder Camelot Sharp. Hyperlinks können beim Erstellen von Dokumenten weder hinzugefügt noch bearbeitet werden. Im Vergleich zu umfassenderen Bibliotheken wie IronPDF bietet PDFPig weniger Funktionen und eine weniger ausführliche Dokumentation.
Codebeispiel
Grundlegende Textextraktion
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
public static class Program
{
public static void Main()
{
using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
{
foreach (Page page in document.GetPages())
{
// Extract all letters
IReadOnlyList<Letter> letters = page.Letters;
string text = string.Join(string.Empty, letters.Select(x => x.Value));
// Extract words
IEnumerable<Word> words = page.GetWords();
// Extract images
IEnumerable<IPdfImage> images = page.GetImages();
}
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Lizenz
PDFPig wird unter der Apache 2.0 Lizenz vertrieben, die lediglich vorschreibt, dass Sie den ursprünglichen Urheberrechtshinweis und den Lizenztext in Ihre Vertriebsmaterialien aufnehmen müssen. Abgesehen von dieser Anforderung steht es Ihnen völlig frei, diese Bibliothek in jeglicher Weise zu nutzen.
Abschluss
Zusammenfassend wollen wir die Preis- und Lizenzmodelle dieser C# PDF-Bibliotheken vergleichen.
IronPDF bietet flexible Preispläne, die sich sowohl für Einzelpersonen als auch für Unternehmen eignen. Die Nutzung zu Entwicklungszwecken ist kostenlos und beinhaltet eine kostenlose Testversion . Die Preise sind sehr günstig und beginnen bereits bei 749 US-Dollar. Dank seines umfassenden Funktionsumfangs, des hervorragenden Supports und der produktionsreifen Stabilität bietet IronPDF ein optimales Preis-Leistungs-Verhältnis.
Aspose.PDF verfolgt ein Pay-as-you-go-Modell mit Lizenzen ab 1679 US-Dollar und ist damit deutlich teurer als Alternativen. Obwohl es eine detaillierte Steuerung ermöglicht, sind die steile Lernkurve und die hohen Kosten möglicherweise nicht für jedes Budget geeignet.
iTextSuite veröffentlicht keine transparenten Preise auf seiner Website. Sie müssen sich an das Support-Team wenden, um ein Angebot zu erhalten, weshalb die Preise je nach Fall variieren. Sie bieten zwar eine AGPL-Lizenz zur kostenlosen Nutzung an, dies setzt jedoch voraus, dass Sie Ihr gesamtes Produkt als Open Source veröffentlichen.
PDFSharp und PDFPig sind gemäß der MIT- bzw. Apache-2.0-Lizenz vollständig kostenlos. Allerdings ist ihre Funktionalität im Vergleich zu kommerziellen Alternativen eingeschränkt. PDFSharp bietet keine HTML-zu-PDF-Konvertierung und hat Probleme mit großen Dateien, während PDFPig in erster Linie eine reine Lesebibliothek ist.
Die Wahl der richtigen PDF-Bibliothek hängt von Ihren spezifischen Bedürfnissen und Ihrem Budget ab. Für grundlegende Funktionen und bei entsprechender technischer Expertise eignen sich Open-Source-Lösungen gut. Für umfangreiche, funktionsreiche Anwendungen, die fortschrittliche Funktionen, zuverlässigen Support und eine umfassende Dokumentation erfordern, erweist sich IronPDF jedoch als die kostengünstigste und funktionsreichste Lösung.