PDF-Generierung in C# (.NET): Überblick über Bibliotheken und praktische Beispiele
Die Generierung von PDF-Dokumenten ist eine der häufigsten Aufgaben in der Unternehmensentwicklung mit C#. Berichte, Rechnungen, Lieferscheine, Verträge – all das lässt sich bequem programmatisch erstellen. Im .NET-Ökosystem gibt es mehrere ausgereifte Bibliotheken, jede mit ihren eigenen Stärken. In diesem Artikel betrachten wir vier grundlegende Werkzeuge, zeigen Codebeispiele und helfen Ihnen, die passende für Ihr Projekt auszuwählen.
1. iTextSharp / iText 7 for .NET
iText ist wohl die bekannteste Bibliothek für die Arbeit mit PDF. Die Version iTextSharp war ein Port der Java-Bibliothek für das .NET Framework. Aktuell ist iText 7 for .NET (Lizenz AGPL für Open-Source-Projekte oder kommerziell).
Funktionen:
- PDF-Erstellung von Grund auf
- Arbeit mit Vorlagen (PdfTemplate)
- Hinzufügen von Bildern, Tabellen, Listen
- Unterstützung von Unicode, Kyrillisch
- Digitale Signatur, Verschlüsselung
Beispiel: Einfaches Dokument mit Tabelle
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
public void CreateSimplePdf(string filePath){ using (PdfWriter writer = new PdfWriter(filePath)) using (PdfDocument pdf = new PdfDocument(writer)) using (Document doc = new Document(pdf)) { doc.Add(new Paragraph("Hallo, Welt!")); Table table = new Table(3); table.AddCell("Name"); table.AddCell("Alter"); table.AddCell("Stadt"); table.AddCell("Anna"); table.AddCell("28"); table.AddCell("Moskau"); doc.Add(table); }}2. PDFsharp / MigraDoc
PDFsharp ist eine leichtgewichtige Open-Source-Bibliothek (MIT). In Kombination mit MigraDoc können Dokumente im Stil einer Textverarbeitung beschrieben werden: Absätze, Stile, Kopf- und Fußzeilen. Ideal für die Generierung einfacher Berichte ohne komplexe Grafiken.
Vorteile:
- Niedrige Einstiegshürde
- Gute Unterstützung für Kyrillisch
- Keine Lizenzierung erforderlich
- Funktioniert mit .NET Framework und .NET Core
Beispiel: Dokumenterstellung mit MigraDoc
using MigraDoc.DocumentObjectModel;using MigraDoc.Rendering;
public void CreateWithMigraDoc(string filePath){ Document doc = new Document(); Section section = doc.AddSection(); Paragraph para = section.AddParagraph("Berichtstitel"); para.Format.Font.Size = 18; para.Format.Font.Bold = true; section.AddParagraph("Dies ist der Berichtstext. Generiert mit PDFsharp und MigraDoc."); PdfDocumentRenderer renderer = new PdfDocumentRenderer(true); renderer.Document = doc; renderer.RenderDocument(); renderer.PdfDocument.Save(filePath);}3. QuestPDF
QuestPDF ist eine moderne Bibliothek mit einer fließenden Oberfläche (Syntax ähnlich wie LINQ). Sie wird unter der MIT-Lizenz (kostenlos für die kommerzielle Nutzung) vertrieben. Sie wird aktiv weiterentwickelt und unterstützt .NET 6/7/8.
Wichtige Funktionen:
- Deklarativer Layout-Aufbau
- Automatischer Seitenumbruch
- Unterstützung für Bilder, SVG, QR-Codes
- Hohe Leistung
Beispiel: Rechnungsgenerierung
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(2, Unit.Centimetre); page.DefaultTextStyle(x => x.FontSize(12)); page.Header().Element(ComposeHeader); page.Content().Element(ComposeContent); page.Footer().AlignCenter().Text(x => {