HTML-Dateien mit Symfony in PDF umwandeln

23. March 2019
HTML-Dateien mit Symfony in PDF umwandeln

Oftmals ist es erforderlich, aus einer Webanwendung heraus PDF-Dokumente zu erzeugen. Beispielsweise für das Erstellen von Rechnungen. Es gibt zahlreiche PHP-Bibliotheken, die diese Aufgabe erledigen können, meist ist die Implementierung jedoch mit erheblichem Aufwand verbunden, da häufig jedes Layout-Element in der Regel pixelgenau positioniert werden muss. Einfacher ist es, PDF-Dokumente direkt aus HTML-Code zu generieren.

Für Webanwendungen, die auf Basis des Symfony PHP-Frameworks entwickelt wurden, stellt die Umwandlung von PDF-Dokumenten aus HTML-Templates beziehungsweise HTML-Dateien kein Problem mehr dar. Es genügt, das Template als HTML-Seite zu rendern und die Ausgabe serverseitig mit Hilfe des Tools wkhtmltopdf in ein PDF-Dokument umzuwandeln. Dieses lässt sich anschließend auf dem Server speichern, als Download zur Verfügung stellen oder per E-Mail versenden.

Der Vorteil besteht darin, dass sich HTML-Seiten wesentlich leichter formatieren lassen, als es über eine PDF-Generierungs-Bibliothek möglich wäre. Ebenfalls werden sämtliche gängigen Schriftarten und Grafiken direkt übernommen.

Ein Nachteil ist, dass auf dem eingesetzten Server zusätzliche Software installiert werden muss, die zusätzliche Ressourcen benötigt und bei einer Vielzahl an Nutzern, die möglicherweise gleichzeitig PDF-Dokumente generieren, schnell eine hohe Auslastung erreicht wird. Dieses Problem ließe sich jedoch über eine Job Queue bzw. einen Job Scheduler lösen, der sich mit wenigen Zeilen Code implementieren lässt und auch für andere Aufgaben eingesetzt werden kann. Das führt zwar dazu, dass der Nutzer gegebenenfalls etwas warten muss, bis sein PDF-Dokument zur Verfügung steht – aber auch dafür gibt es eine Lösung, wenn die Job Queue dem Nutzer eine E-Mail sendet, sobald der Job erledigt ist.

Für viele Projekte war die PDF-Erzeugung ein Thema. Entsprechend verfügen wir über das nötige Know-How und fertige PHP-Module bzw. Symfony-Bundles, die mit wenigen Anpassungen in bestehende Symfony-Anwendungen integriert werden können. Dazu gehört ein JobQueueBundle und ein Bundle zur automatisierten Rechnungserstellung inkl. Umsatzsteuerberechnung für EU-Länder.

Erfahrungen & Bewertungen zu webworks nürnberg UG (haftungsbeschränkt)