PDFs mit PHP erstellen

platz für zwei

platz für zwei von leicagirl (photocase.de)

15.4.2012

Bisher hab ich um das Erzeugen von PDFs aus einer Webanwendung heraus immer ein großen Bogen gemacht. Jetzt hab ich das passende Werkzeug gefunden: wkhtmltopdf.

Bei meiner Suche nach einer Bibliothek, mit der ich aus PHP heraus PDFs erzeugen kann, bin ich auf drei Kandidaten gestoßen: fdpf, tcpdf und Zend_PDF. Es ist auch möglich, damit vernünftige PDFs zu erstellen, allerdings haben sie alle einen Haken: für eine optimale Layout-Kontrolle müsste ich die Style-Eigenschaften des Dokuments im PHP-Code setzen.

Das sieht dann ungefähr so aus:

$pdf = new YourPdfLib();
$pdf->addPage();
$pdf->setFont('sans');
// Text an einer bestimmten Stelle zeichnen
$pdf->drawText('Hello World', 70, 120);
$pdf->render('output.pdf');

Echte Fronarbeit also im Gegensatz zu HTML und CSS. Da übernimmt der Browser die undankbare Aufgabe, Texte, Bilder und Container an der richtigen Stelle zu positionieren. Doch es gibt eine Alternative zum Pixelschubsen: das Kommandozeilenwerkzeug wkhtmltopdf. Es verwendet die WebKit-Rendering-Engine (wie Safari und Google Chrome) und kann deshalb HTML mit den von WebKit unterstützten CSS-Angaben formatieren (und das sind die allermeisten von CSS2).

Für ein PDF musste ich also nur eine HTML-Seite erzeugen, im CSS die Besonderheiten von Druckformaten berücksichtigen (Seitengrößen, Seitenumbrüche bei Überschriften, etc.) und sie an wkhtmltopdf schicken.

Eine PHP-Klasse findet man auf der Google-Code-Seite von wkhtmltopdf

Aber natürlich lässt sich wkhtmltopdf auch über Cronjobs und mit anderen Programmiersprachen ansprechen. Das ist ja das Schöne an einem Kommandozeilenwerkzeug.

Gespeichert unter: Programmierung