PDF-Generierung in C# (.NET): Vollständiger Überblick über Bibliotheken und Tools
Die Erstellung von PDF-Dokumenten ist eine der häufigsten Aufgaben in der Unternehmensentwicklung. Berichte, Rechnungen, Lieferscheine, Verträge – all dies erfordert ein zuverlässiges Tool zur Generierung. Im C# (.NET)-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, jede mit ihren eigenen Besonderheiten. In diesem Artikel analysieren wir die beliebtesten Optionen, ihre Vor- und Nachteile und geben Codebeispiele.
1. iTextSharp / iText 7 für .NET
iText ist der De-facto-Standard in der Welt der PDF-Generierung. Die Bibliothek existiert seit dem Jahr 2000 und wird aktiv weiterentwickelt. Für .NET ist die Version iText 7 verfügbar (NuGet-Paket itext7).
Funktionen:
- Vollständige Kontrolle über den Inhalt: Text, Tabellen, Bilder, Anmerkungen.
- Arbeit mit Formularen (AcroForms), digitalen Signaturen, Verschlüsselung.
- Unterstützung für PDF/A (Archivierung).
- Hohe Leistung.
Nachteile:
- Komplexe API (niedrigschwellige Arbeit mit Koordinaten).
- Für die kommerzielle Nutzung ist eine kostenpflichtige Lizenz erforderlich (AGPL für Open-Source).
Beispiel zur Erstellung eines einfachen PDFs:
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreatePdf(string filePath){ using (var writer = new PdfWriter(filePath)) using (var pdf = new PdfDocument(writer)) using (var document = new Document(pdf)) { document.Add(new Paragraph("Hallo, Welt!")); document.Add(new Paragraph("Dies ist ein PDF, erstellt mit iText 7.")); }}2. PDFsharp
PDFsharp ist eine leichtgewichtige Open-Source-Bibliothek für .NET (es gibt auch eine Version für GDI+). Sie eignet sich hervorragend für einfache Aufgaben: Erstellung von Dokumenten mit Text, Tabellen, Bildern.
Funktionen:
- Einfache und intuitive API.
- Unterstützung für Schriftarten (einschließlich Kyrillisch).
- Arbeit mit grafischen Primitiven (Linien, Formen).
- Kostenlos (MIT-Lizenz).
Nachteile:
- Eingeschränkte Unterstützung für komplexe Elemente (Formulare, Lesezeichen).
- Langsamer als iText bei großen Datenmengen.
Beispiel:
using PdfSharp.Pdf;using PdfSharp.Drawing;
public void CreatePdf(string filePath){ using (var document = new PdfDocument()) { var page = document.AddPage(); using (var gfx = XGraphics.FromPdfPage(page)) { var font = new XFont("Arial", 20, XFontStyle.Regular); gfx.DrawString("Hallo, Welt!", font, XBrushes.Black, new XPoint(40, 100)); } document.Save(filePath); }}3. QuestPDF
QuestPDF ist eine moderne Bibliothek mit einer fluent API, inspiriert vom Konzept "Layout-first". Sie ermöglicht es, die Dokumentstruktur deklarativ zu beschreiben, was die Erstellung komplexer Layouts erheblich vereinfacht.
Funktionen:
- Deklarativer Stil (wie WPF oder HTML).
- Automatischer Seitenumbruch (Pagination).
- Unterstützung für Tabellen, Kopf- und Fußzeilen.
- Kostenlose Version mit Einschränkung (bis zu 10 Seiten).
Nachteile:
- Die kostenlose Version ist eingeschränkt.
- Weniger Flexibilität als bei iText (schwierig, beliebige Grafiken zu zeichnen).
Beispiel:
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
public void CreatePdf(string filePath){ Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(30); page.Content().Column(col => { col.Item().Text("Hallo, Welt!").FontSize(20); col.Item().Text("Dies ist QuestPDF.").FontSize(14); }); }); Auch in der Bibliothek
Autorisierung und Authentifizierung in TypeScript: vollständiger Leitfaden
gRPC für C# (.NET): Bibliotheken, Einrichtung und Codebeispiele
Arbeiten mit CSV in Java: Vollständige Anleitung zum Lesen und Schreiben
NetworkExtension Swift: Vollständige Anleitung mit Beispielen