PDF-Berichterstellung mit C# (.NET): Überblick über Bibliotheken und Beispiele
In der modernen Entwicklung auf der .NET-Plattform ist die Erstellung von PDF-Dokumenten eine häufige Aufgabe. Ob es sich um die Erstellung von Rechnungen, Berichten, Lieferscheinen oder Analyse-Dashboards handelt, C# bietet leistungsstarke Werkzeuge für die Arbeit mit PDFs. In diesem Artikel betrachten wir drei beliebte Bibliotheken: iTextSharp, QuestPDF und PdfSharp. Sie erfahren, welche Sie für eine bestimmte Aufgabe auswählen sollten, und sehen funktionierende Codebeispiele.
1. iTextSharp (iText 7 für .NET)
iTextSharp ist ein Port der bekannten Java-Bibliothek iText für .NET. Es ist die ausgereifteste und funktionsreichste Lösung, die komplexe Layouts, Tabellen, Bilder, Annotationen und digitale Signaturen unterstützt. Die kommerzielle Nutzung erfordert jedoch den Erwerb einer Lizenz (AGPL für Open-Source).
Installation
dotnet add package itext7Beispiel: Einfacher Bericht mit Tabelle
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreatePdfReport(){ string filePath = "report.pdf"; using (PdfWriter writer = new PdfWriter(filePath)) using (PdfDocument pdf = new PdfDocument(writer)) using (Document document = new Document(pdf)) { document.Add(new Paragraph("Verkaufsbericht für März") .SetBold().SetFontSize(18));
Table table = new Table(3); table.AddCell("Produkt"); table.AddCell("Menge"); table.AddCell("Preis"); table.AddCell("Laptop"); table.AddCell("12"); table.AddCell("75.000 ₽"); table.AddCell("Monitor"); table.AddCell("5"); table.AddCell("32.000 ₽");
document.Add(table); }}Vorteile: maximale Flexibilität, Unterstützung komplexer Strukturen, digitale Signaturen.
Nachteile: komplexe API für Anfänger, Lizenzierung für kommerzielle Nutzung.
2. QuestPDF
QuestPDF ist eine moderne Bibliothek mit einer fluent-Schnittstelle und einer integrierten Rendering-Engine. Sie ermöglicht die Beschreibung eines Dokuments in einem deklarativen Stil, ähnlich wie HTML/CSS. Ideal für die Generierung von Standardberichten mit sich wiederholenden Elementen.
Installation
dotnet add package QuestPDFBeispiel: Rechnung mit Kopfzeile und Tabelle
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
public byte[] GenerateInvoice(){ return Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Margin(20); page.Header().Text("Rechnung Nr. 12345") .SemiBold().FontSize(20).FontColor(Colors.Blue.Darken2);
page.Content().Table(table => { table.ColumnsDefinition(columns => { columns.RelativeColumn(); columns.RelativeColumn(); columns.RelativeColumn(); });
table.Header(header => { header.Cell().Background(Colors.Grey.Lighten3).Text("Dienstleistung"); header.Cell().Background(Colors.Grey.Lighten3).Text("Kosten"); header.Cell().Background(Colors.Grey.Lighten3).Text("Anzahl"); });
table.Cell().Text("Beratung"); table.Cell().Text("5.000 ₽"); table.Cell().Text("2");
table.Cell().Text("Entwicklung"); table.Cell().Text("15.000 ₽"); table.Cell().Text("1"); });
page.Footer().AlignCenter().Text("Vielen Dank für die Zusammenarbeit!"); }); }).GeneratePdf();}Vorteile: einfacher und lesbarer Code, hervorragende Leistung, kostenlos für kommerzielle Nutzung