PDF-Berichterstellung mit C# (.NET) mit QuestPDF
In der modernen .NET-Entwicklung besteht häufig die Notwendigkeit, professionelle PDF-Dokumente zu erstellen: Berichte, Rechnungen, Lieferscheine, Analysezusammenfassungen und andere Geschäftsdokumente. Die Bibliothek QuestPDF ist eine moderne, leistungsstarke und intuitive Lösung zur PDF-Generierung in C#. Sie erfordert keine Installation von Drittanbieter-Tools (z. B. wkhtmltopdf) und arbeitet vollständig in verwaltetem .NET-Code.
In diesem Artikel gehen wir im Detail darauf ein, wie Sie mit QuestPDF beginnen, ein Projekt einrichten und einen einfachen Bericht mit Tabelle, Bild und Textformatierung erstellen.
Installation und Einrichtung
QuestPDF wird über NuGet vertrieben. Führen Sie zur Installation den folgenden Befehl in der Package Manager Console oder über die Visual Studio/Rider-Oberfläche aus:
Install-Package QuestPDFOder über die .NET CLI:
dotnet add package QuestPDFNach der Installation muss die Lizenz einmalig initialisiert werden. Für die kommerzielle Nutzung ist eine kostenpflichtige Lizenz erforderlich, aber für Tests und kleinere Projekte steht ein kostenloser Modus mit Wasserzeichen zur Verfügung. Um das Wasserzeichen zu entfernen, fügen Sie am Anfang des Programms Folgendes hinzu:
QuestPDF.Settings.License = LicenseType.Community;// oder für die kommerzielle Nutzung:// QuestPDF.Settings.License = LicenseType.Professional;Erstellen des ersten PDF-Dokuments
QuestPDF verwendet eine Fluent API – Sie beschreiben die Dokumentstruktur durch aufeinanderfolgende Methodenaufrufe. Betrachten wir ein minimales Beispiel:
using QuestPDF.Fluent;using QuestPDF.Helpers;using QuestPDF.Infrastructure;
// Lizenzeinrichtung (erforderlich)QuestPDF.Settings.License = LicenseType.Community;
// Dokument erstellenDocument.Create(container =>{ container.Page(page => { page.Size(PageSizes.A4); page.Margin(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12));
page.Header() .Text("Verkaufsbericht") .SemiBold().FontSize(24).FontColor(Colors.Blue.Medium);
page.Content() .PaddingVertical(1, Unit.Centimetre) .Column(col => { col.Item().Text("Datum: " + DateTime.Now.ToShortDateString()); col.Item().PaddingBottom(10).LineHorizontal(1); col.Item().Text("Nachfolgend finden Sie eine Tabelle mit den Daten:"); });
page.Footer() .AlignCenter() .Text(x => { x.Span("Seite "); x.CurrentPageNumber(); }); });}).GeneratePdf("report.pdf");Dieser Code erstellt eine PDF-Datei mit einer Überschrift, einem Datum, einer horizontalen Linie und einer Seitenzahl in der Fußzeile.
Arbeiten mit Tabellen
Eine der häufigsten Aufgaben ist die Ausgabe von Tabellendaten. QuestPDF bietet eine leistungsstarke API zum Erstellen von Tabellen mit automatischer Spaltenbreitenanpassung:
container.Page(page =>{ page.Size(PageSizes.A4); page.Margin(20);
page.Content().Table(table => { // Spalten definieren (Breite in Prozent des verfügbaren Platzes) table.ColumnsDefinition(columns => { columns.RelativeColumn(3); // Bezeichnung columns.RelativeColumn(1); // Menge columns.RelativeColumn(1); // Preis columns.RelativeColumn(1); // Summe });
// Tabellenkopf table.Header(header => { header.Cell().Background(Colors.Grey.Lighten2).Padding(5).Text("Produkt"); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Menge"); header.Cell().Background(Colors.Grey.Lighten2).Padding(5).AlignCenter().Text("Preis"); header.Cell().Backgrou