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:
require_once("../library/Html2pdf/html2pdf.class.php");
In der Datei erstellt man den gewünschten HTML Code und danach kann man sich das PDF zum Beispiel so erstellen lassen:
$content = '<html><body><h1>Einfaches Beispiel</h1></body></html>'; //HTML to PDF conversion $html2pdf = new HTML2PDF($mode,'A4','de',true,'UTF-8',array(10, 10, 10, 10)); $html2pdf->WriteHTML($content); $html2pdf->Output($filename.'.pdf');
Ein 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.
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
sehr gut. Ein Lob für den Einsatz von Open Source Software! Ich freu mich schon, wenn ich das für ein Projekt mal verwenden kann.
Ich habe soeben PDFnow eingerichtet.
http://btacs.besaba.com/pdf/
Jedoch möchte ich, dass man vorher die Formulare auf meiner Webseite füllen kann. Wie mache ich das?
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.
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 😉
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
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
Ist mir auch schon aufgefallen! Leider habe ich noch keine Lösung gefunden – bis jetzt hilft nur ein Workaround… wäre auch sehr dankbar für einen Tipp dazu. Gibts da eventuell irgend einen CSS Trick?
Wie kann ich html2pdf auf meinen webserver bei einem provider installieren.
Ich bekomme folgende aneldung wenn ich ein beispiel example file teste
[ERROR] It seems that HTML2PDF dependencies are not installed… you must install thems with `composer install`
danke für eine Antwort
bei einem Shared Host scheitert es leider oft an den nötigen Rechten bzw. an der Software. Sofern composer nicht installiert ist könntest du ja mal nachfragen. Anscheinend gibt es mit einer der aktuelleren PHP Versionen sogar eine Standardlösung. Ich weiß aber leider grad nicht den Funktionsnamen…