PDF-Dateien mittels PHP erstellen

Für viele Anwendungsszenarien kann es nützlich sein, automatisch generierte Daten als PDF anzubieten. Beispielsweise beim Versenden von Rechnungen ist es ein netter Service von euch, diese als PDF zu versenden, so dass der Empfänger diese bequem ausdrucken kann.

Das Erstellen von PDFs aus PHP heraus ist allerdings nicht ganz so einfach, da das PDF-Format recht komplex ist. Wie ihr selber wisst, kann in einer PDF-Datei jede Art von Inhalt abgebildet werden. Sei es nun Text, Formatierungen oder Bilder, mit PDF habt ihr ein recht mächtiges Dateiformat. Dementsprechend schwierig kann es aber auch sein, ansprechend aussehende PDF-Dateien automatisch zu generieren. Deswegen greift man meistens auf vorgefertigten Code zurück, der einem das Leben leichter machen soll, so dass ihr "nur noch" den Inhalt des PDFs befüllen müsst.

PDF als Webservice

Eine sehr bequeme Variante um PDFs zu erstellen ist die Nutzung von entsprechenden Webservices. Ein Beispiel für solch einen Webservice ist PDF SOAP. Bei einem Webservice sendet ihr über die entsprechende API den Inhalt des PDFs an den Anbieter des Webservice. Dieser kümmert sich um die Erstellung des PDFs, das heißt, die Datei mit dem richtigen Format und den entsprechenden Schriftarten wird erstellt. Der Webservice sendet euch dann die PDF-Datei zurück, die ihr dann an euren Kunden weitersenden könnt.

Solch ein Webservice ist natürlich sehr bequem und ihr habt kaum Aufwand. Ihr müsst weder das PDF-Format verstehen noch alles richtig einzustellen. Auch entlastet ihr damit euren Server, da die Berechnungen auf den Servern des Anbieters durchgeführt werden. Nachteil ist allerdings, dass solch ein Webservice meistens Geld kostet. Kosten sind dabei von Anbieter zu Anbieter verschieden.

LaTeX als Zwischenformat nutzen

latex

Beispiel einer LaTeX-Datei. Quelle: Wikipedia

LaTeX ist ein Textsatzsystem, welches für die Erstellungen von Dokumenten in hoher Qualität geeignet ist. Ein Großteil der Publikationen in den Naturwissenschaften wird beispielsweise in LaTeX geschrieben. Im Gegensatz zu Word ist LaTeX kein What-you-see-is-what-you-get "Programm", sondern es ähnelt einer Markup-Language wie HTML. Statt einen Text zu makieren um ihn dann Fett zu machen, nutzt ihr einen entsprechenden LaTeX-Befehl um diesen Text fett erscheinen zu lassen. Ähnlich, wie es bei HTML der Fall ist.

Auf der rechten Seite seht ihr, wie solch eine LaTeX-Datei aussehen kann. Hier werden bestimmte Abschnitte definiert, z.B. mittels \section{} wird eine Überschrift definiert. Da diese LaTeX-Dokumente bloß Textdokumente sind, kann man diese recht einfach mittels PHP automatisch erzeugen. Statt \section{Einleitung} gibt man z.B.  \section{$eure_php_variable} aus, wobei $eure_php_variable eine Variable mit dem von euch gewünschtem Inhalt ist. LaTeX lässt sich halbwegs einfach erlernen und dennoch lassen sich damit sehr professionelle Dokumente jeder Art erstellen.

Schwierig wird es nun, aus dem LaTeX-Dokument eine PDF Datei zu machen. Auf einem Unix-System, bei dem die entsprechende zusätzliche Software installiert ist, ist es ausreichend pdflatex eure_latex_datei.tex  auszuführen. Um diesen Befehl auszuführen, bedarf es eines eigenen Servers. Zumindestens habe ich noch bei keinem Shared Webhosting Anbieter die Option gesehen, dass man dort auch LaTeX Dateien kompilieren kann.

Für alle mit einem eigenen Server und der Geduld LaTeX zu lernen ist dies eine sehr gute Option.

PHP-eigene PDF-Funktionen

PHP bietet ebenfalls eigene PHP-Funktionen an. Im PHP-Manual findet ihr dazu einige Beispiele und eine Erläuterung der verschiedenen Funktionen. Das erstellen von PDF mit diesen PHP-eigenen PDF-Funktionen ist nicht gerade einfach. Für simple Dokumente ist es ausreichend, möchtet ihr eure PDF-Datei aber anspruchsfull design, so müsst ihr euch auf längere Programmierarbeiten und Trial & Error-Sessions einstellen. Vorteil ist allerdings, dass der Code dann auf eurem Webspace läuft und dort die PDF-Dateien erzeugt werden.

Damit diese PDF-Funktionen in PHP zur Verfügungen stehen, muss euer Webhoster diese entsprechend installiert haben. Ob das der Fall ist, könnt ihr herausfinden indem ihr in die phpinfo.php ausführt.

 

 

Autor:
Zurück zur Übersicht aller Beiträge