PDF erzeugen in PHP mit HTML2PDF

Ein wichtiges Thema für jede größere Webapplikation ist die Möglichkeit PDF Dateien zu erzeugen und dem User zu übergeben. Normalerweise wird das dazu verwendet um Rechnungen zu generieren, Informationen zu exportieren oder dem Benutzer einen speziellen Report zu liefern. Viele PHP Frameworks bieten eigene PDF Tools an, auch gibt es viele verschiedene fertige PHP Module. Eine sehr einfache und wirklich überzeugende Möglichkeit ist die, aus reinem HTML Code ein fertiges PDF zu erstellen. Dies kann HTML2PDF, eine Freie Software unter LGPL Lizenz.

HTML2PDF

HTML2PDF kann fertigen HTML Code ganz einfach in ein PDF konvertieren, dass man danach am Server speichern kann oder gleich als Download für den Kunden anbieten kann. Das ganze ist sehr einfach. Man benötigt nur die HTML2PDF Bibliothek.

Danach kann man es einfach in eine PHP Datei einbinden:

In der Datei erstellt man den gewünschten HTML Code und danach kann man sich das PDF zum Beispiel so erstellen lassen:

HTML2PDFEin paar Worte zum Code. Zuerst benötigt man HTML Code. Diesen erstelle ich als String. Man kann hier auch CSS Code mit angeben. Danach erstellt man eine neue HTML2PDF Klasse mit dem Modus (L für Querformat oder P für Hochformat), der Blattgröße und encoding Deteils. Das Array gibt den Rahmen an, der frei bleibt (die nicht druckbare Region des Druckers). Zuletzt übergibt man noch den HTML Code und kann sich dann eine PDF Datei erstellen lassen. Nicht vergessen, dass man im Zielordner Schreibrechte benötigt.

So einfach ist das! Üblicherweise erstellt man sich für die PDF HTML Seiten ein eigenes CSS Stylesheet am besten gleich mit einem Logo der Webseite oder Firma.

Vorteile

Der große Vorteil für den Programmierer ist, dass er sich nicht mit einem PDF Tool eines Frameworks oder ein externes PDF Tool einarbeiten muss. Ich finde diese Arbeitsweise mit dem HTML zu PDF viel einfacher, da der übliche PHP Programmierer bei Webseiten und Webapplikationen sowieso nichts anderes macht. Die einzige Umstellung ist, dass er ein eigenes CSS erstellen und einbinden muss. Das braucht man aber auch nur einmal machen und kann dieses in abgeänderter Form für andere Projekte verwenden.

(Visited 6.506 times, 1 visits today)

Das könnte auch interessant sein...

9 Antworten

  1. Sven sagt:

    Hi Werner,

    anstelle von html nehme ich OpenOffice/LibreOffice Dokumente als Templates.
    Das ganze hat den Vorteil, dass meine Kunden kein html lernen müssen und so Sachen wie Header/Footer oder große Tabellen funktionieren.

    Unter http://template2pdf.com/ gibt es eine API und php Beispiel Code.
    Für ‚low-volume-usage‘ ist die Nutzung im Moment kostenlos.

    Würde mich über Feedback freuen.

    Danke,
    Grüße,
    Sven

  2. Peter sagt:

    Hallo Werner,

    danke für die hilfreiche Lösung!

    Wir hatten ein anderes Problem: die PDFs mussten gut aussehen, und das manuelle Erstellen war sehr aufwändig.

    Wir haben eine gute Alternative verwendet: http://pdfnow.com
    Damit können PDFs kostenlos aus PHP erstellt werden, dabei kann man eigene zu verwendende Templates definieren.

    Die Templates werden hochgeladen, der PDF-Generator wird über einen einfachen PHP-Befehl aufgerufen:

    generatePdf(„“, array();

    Ich denke, das ist für viele Fälle sehr hilfreich, und kann für den einen oder anderen nützlich sein. Briefe und Rechnungen lassen sich damit sehr schnell erstellen.

  3. Karsten sagt:

    Frage: kann ich auch in der Variablen Content Php Code benutzen?

    • ich habe etwas überlegen müssen was du da genau meinst. Nein in der Variablen $content sollte dann nur noch HTML Code stehen. Aber nachdem das ganze ein PHP Script ist kannst du ja über PHP der Variablen $content dynamisch HTML Content zuweisen. Also eigentlich kann ich deine Frage mit einem klaren Jein beantworten 😉

  4. Micha sagt:

    Hallo, erst einmal Danke für diese Seite. Ich hab es auch geschafft einen HTML Code in pdf anzeigen zu lassen. Nun würde ich das Ganze nicht im Browser ausgeben, sondern eine *.pdf generieren und speichern.

    danke und viele Grüße

  5. Eigentlich ein hervorragendes Tool.
    Leider funktionieren in modernen Dateien die Klassen „float:left“ und „float:right“ nicht.

    Hat jemand eine Lösung?

    Gruss
    Henning Hahn

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.