QuestPDF
QuestPDF
QuestPDF ist ein hilfreiches Tool, um in .NET Anwendungen PDF Dateien zu erstellen. Durch die Fluent API ist die Erstellung eines PDF sehr einfach. Zusätzlich bietet QuestPDF eine Preview des PDF an, was die Bibliothek von anderen PDF Bibliotheken abhebt und dem Entwickler viel Zeit spart.
Lizenz
QuestPDF ist eine open-source Bibliothek. Sie verwendet die eigene QuestPDF Lizenz und kann gratis unter der MIT Lizenz verwendet werden. Firmen, welche mehr als eine Million USD Umsatz im Jahr machen, müssen die Professional oder Enterprise Lizenz kaufen.
Wie verwende ich QuestPDF?
Um mit dem Erstellen von PDFs loszulegen, muss zuerst das Nuget Package installiert werden. Dafür kann man die Package Manager Console oder den Nuget Package Manager verwenden:
PDF in Datei speichern
Um ein PDF in einer Datei abzuspeichern, braucht man einen FileStream. Diesen kann man bei der Methode "GeneratePdf" von QuestPDF als Argument mitgeben, wodurch automatisch in die Datei geschrieben wird.
Dieser Code erstellt ein PDF mit einer leeren Seite. Die Zeile "QuestPDF.Settings.License = LicenseType.Community" ist erforderlich, um PDFs zu generieren.
PDF als Byte Array
Falls man die Datei nicht direkt speichern möchte, kann man daraus auch einen Byte-Array erstellen. Dazu muss bei der Methode "GeneratePdf" nichts mitgegeben werden.
Header, Content & Footer
Aktuell habe ich noch eine leere Seite. Um die Seiten im PDF zu strukturieren, kann man Header, Content und Footer definieren. Der Content übernimmt standardmässig den gesamten verfügbaren Platz, welcher noch nicht von Header und Footer eingonemmen wird.
Für dieses PDF habe ich zunächst einen Margin von 40 Points um die gesamte Seite hinzugefügt. Anschliessend wird der Header, Content und Footer mit verschiedenen Hintergrundfarben definiert. Das generierte PDF sieht wiefolgt aus:
Um dem PDF ein schönes Layout zu geben, kann man Rows und Columns verwenden. Dafür gibt es die Methoden "Row()" und "Column()".
Die Methode "RelativeItem()" erstellt standardmässig ein Element, welches gleich gross, wie die anderen Elemente in der aktuellen Row sind. Dadurch werden sie gleichmässig verteilt. Man kann allerdings auch Zahlen mitgeben. In der zweiten Row nimmt das erste Item drei Viertel der Breite ein. Die Methode "Spacing()" erstellt einen Padding um die Items. Das neue PDF sieht so aus:
Um den Code übersichtlicher zu machen, gibt es die Möglichkeit, Templates zu erstellen. Um ein Template eines PDF-Dokumentes zu erstellen, muss eine Klasse erstellt werden, welche das Interface "IDocument" implementiert.
Neben dem Interface "IDocument" gibt es auch noch "IComponent" um einzelne Komponenten in Klassen auszulagern. Im Template wird bereits der "ContentComponent" verwendet. Dieser sieht so aus:
Fazit
QuestPDF ist eine tolle Library für das Arbeiten mit PDFs. Durch die Fluent API gibt es eine simple und angenehme Syntax. Im Gegensatz zu anderen Bibliotheken ist die Lernkurve recht flach und die Preview ermöglicht es, effizient zu arbeiten.
Kommentare
Kommentar veröffentlichen