Tipps & Tricks

Erzeugen von PDF-Dokumenten mit PHP

Mit der Sprache PHP lassen sich relativ leicht PDFs erzeugen. Wir stellen drei Tools vor:


FPDF - die freie PHP-Klasse

Auf hessenparty.de setzen wir aktuell die freie PHP-Klasse "FPDF" ein. Vorteil: Es ist kein Systemzugriff nötig. Ein PHP-unterstützender Server reicht aus. Die Klasse bringt das nötige Script sowie eine Schriftenauswahl gleich mit.

a) Installation
Die Klasse fpdf.php sowie den Ordner "Font" legt man am Besten zentral auf dem Server ab. Dem eigenen Script, das PDFs erzeugen soll, muss man nun diesen Speicherort mitteilen. Beispiel:

define('FPDF_FONTPATH','/www/htdocs/pdf/font/');
require('/www/htdocs/pdf/fpdf.php');

b) Ein kleiner Blick auf die Syntax
Jeder Befehl beginnt mit $pdf->. Die Grundelemente zum Starten eines neuen Dokumentes in Din A4 mit neuer Seite sind:

$pdf=new FPDF();
$pdf->AddPage();

Die Metadaten des PDFs lassen sich wie folgt hinzufügen:

$pdf->SetTitle('Mein PDF');
$pdf->SetSubject(Mein PDF);
$pdf->SetAuthor('Peter Meier');
$pdf->SetKeywords('auto pkw motorsport');
$pdf->SetCreator('Peter Meier');

Einfügen von Bildern: Der erste Zahlenwert hinter dem Dateinamen steht für den Abstand vom linken Dokumentenrand, der zweite für den Abstand vom oberen Rand (in mm)

$pdf->Image("water.jpg",140,50);

Text ausgeben: Mit SetFont bestimmt man die Schriftart, den Stil (z.B. Fett) und die Schriftgröße des folgenden Textes. Die beiden Zahlenwerte bei "Text" bestimmen die Position des Textes (s.a. "Image"):

$pdf->SetFont('Arial','B',20);
$pdf->Text(8,65,'VW Golf');

Linie zeichnen: Vier Zahlenwerte werden benötigt: Die ersten beiden stehen für den Startpunkt, die beiden letzten für den Endpunkt der Linie. Im folgenden Beispiel wird demnach eine horizontale Linie vom linken Rand (0) zum rechten Rand (210) mit einem Abstand von 70 mm vom oberen Rand gezeichnet:

$pdf->Line(0,70,210,70);

PDF erzeugen:

$pdf->Output();

Auf der Webseite des Projekts (s.u.) finden sich hilfreiche Tutorials und Codebeispiele sowie eine ausführliche Befehlsreferenz in verschiedenen Sprachen.


R&OS pdf class
Eine weitere leistungsstarke und freie PHP-Klasse ist die R&OS pdf class, die wir hier allerdings nicht näher vorstellen wollen.


PDFlib/PDFlib Lite
Manche Webhoster setzen auf ihren Serversystemen PDFlib ein. Ist diese Library nicht vorhanden, hat der User in der Regel keine Möglichkeit bzw. Rechte, diese zu installieren. Die Software ist zudem kommerziell und darf ohne Lizenz nicht eingesetzt werden. Die "Lite"-Variante ist kostenlos, darf aber nur privat zum Einsatz kommen.

Ein paar grundlegende Sprachelemente:

Neues Dokument in Din A4 anlegen. Achtung: Größenangaben in Pixel:

$file = fopen('meindokument.pdf', 'w');
$dokument = pdf_open($file);
pdf_begin_page($dokument, 595.3, 841.9);

Metadaten hinzufügen:

pdf_set_info($dokument, 'Title', 'Mein PDF');
pdf_set_info($dokument, 'Subject', 'Mein PDF');
pdf_set_info($dokument, 'Author', 'Peter Meier');
pdf_set_info($dokument, 'auto, pkw motorsport');
pdf_set_info($dokument, 'Creator', 'Peter Meier');

Bild einfügen: Die ersten beiden Zahlen bei pdf_place_image geben die Position der linken, unteren Ecke des Bildes an, der Wert dahinter steht für die Skalierung (1.0 = Originalgröße):

$im2 = pdf_open_image_file($dokument, 'jpeg', 'water.jpg');
pdf_place_image($dokument, $im2, 395, 655, 1.0);
pdf_close_image($dokument, $im2);

Text: Mit pdf_set_font bestimmt man die Schriftart und die Schriftgröße des Textes. Die beiden Zahlenwerte pdf_show_xy bestimmen die Textposition:

pdf_set_font($dokument, 'verdana', 16, 'host');
pdf_show_xy($dokument, "Mein Auto", 21, 660);

Linie zeichnen:

pdf_setlinewidth ($dokument, 2);
pdf_moveto($dokument, 0, 650);
pdf_lineto($dokument, 595.3, 650);
pdf_stroke($dokument);

PDF erzeugen:

pdf_end_page($dokument);
pdf_close($dokument);
fclose($file);

Eine ausführliche Befehlsreferenz für PDFlib bietet die Seite SELFPHP.


Related Links:
- FPDF (php class)
- R&OS pdf class
- PDFlib/PDFlib Lite
- SELFPHP
- FPDF im Einsatz


© Galfe Medienproduktion 2007 | Impressum | Aktuelle Internetprojekte: www.hessenparty.de  www.tippspiel-online.net