Grundlagen

FPDF verwenden

FDPF präsentiert sich als eine einzige große PHP-Klasse. Um sie einzusetzen, müssen wir sie inkludieren und ihr mitteilen, wo sie ihre Zeichensätze (Fonts) finden kann:

<?
define("FPDF_FONTPATH","fpdf/font/");
include "fpdf/fpdf.php";
?>

Alternativ zur Konstante FPDF_FONTPATH kann man das Font-Directory übrigens auch im INCLUDE_PATH von PHP mit integrieren. Die vom FPDF-Autor vorgeschlagene zusätzliche Alternative, die die Fontfiles in das gleiche Verzeichnis zu legen, in dem das aufzurufende Script läuft, halte ich aus Gründen der Übersichtlichkeit für wenig empfehlenswert.

Damit ist die erste "Hürde" genommen und wir beginnen mit einem tatsächlichen PDF-Dokument.

Unser erstes Dokument

Traditionellerweise erzeugen wir uns als erstes das weltberühmte "Hallo Welt"-Dokument. Der Quellcode dazu sieht so aus:

$pdf = new FPDF("P", "mm", "A4");
$pdf->Open();
$pdf->AddPage();
$pdf->SetFont("Times","",11);
$pdf->Write(5, "Hallo Welt");
$pdf->Output();

Mehr Code ist tatsächlich nicht erforderlich. Schauen wir uns die Zeilen etwas genauer an: zu Beginn erzeugen wir uns eine neue Instanz der FPDF-Klasse. Dazu werden drei (optionale) Parameter übergeben, nämlich die Ausrichtung ("P" für "paragraph" oder "hochkant" bzw. "L" für "landscape" bzw. "quer"), die Maßeinheit, in der wir rechnen wollen (möglich sind hier Millimeter (mm), Punkt (pt), Zentimeter (cm) oder Inches (in)). Es folgt die Methode open(), welche die PDF-Generierung startet. Da bis hierhin noch keine einzige Seite erstellt wurde, müssen wir AddPage() aufrufen. Jetzt benötigt die Klasse zwingend eine Schriftart, da sie sonst mit einer Fehlermeldung abbricht. Das erledigt die Methode SetFont() mit den drei Parametern "Schriftart", "Format" ("b" für "bold", "i" für "italic" oder "" für "normal"). Über Write() geben wir unseren Text aus - der erste Parameter bestimmt die Zeilenhöhe (hier also 5cm).

Abschließend senden wir unser Dokument via Output() an den Browser. Dieser startet den ihm zugeordneten PDF-Reader... et voilá: das erste Dokument ist fertig.

Output() kann das erzeugte Dokument auch in eine Datei speichern; dazu muss lediglich ein Dateiname inklusive Pfad als Parameter übergeben werden und es muss sichergestellt sein, dass PHP im gewünschten Verzeichnis Schreibrechte besitzt.

"Das Dokument ist eine Scheibe"

Man muss sich klarmachen, dass die Erzeugung eines PDF-Dokumentes sich stark von der Erstellung einer dynamischen Webseite unterscheidet: ein PDF-Dokument präsentiert sich Seite für Seite als eine frei beschreibbare "Malfläche", auf der wir beliebige Inhalte ausgeben können. Indem wir einen "virtuellen Cursor" auf dieser Fläche positionieren, können wir einzelne Bereiche gezielt ansteuern und unsere Elemente exakt positionieren.

Damit kann man eindrucksvolle Effekte erzielen, z.B. lassen sich Texte übereinander legen. Arbeiten wir dagegen mit eher festen Strukturen (wie z.B. einer Tabelle), dann sollten die Inhalte der einzelnen Zellen möglichst nicht über ihre Begrenzungen hinausragen. Übrigens: es macht technischen gesehen keinen Unterschied, ob wir nun Texte oder grafische Elemente (Punkte, Linien, Bilder) ausgeben.

Textformatierungen

FPDF stellt eine Reihe von Methoden bereit, mit denen wir Textblöcke formatieren können:

Methode Beschreibung Parameter
SetDrawColor Legt die Zeichenfarbe für alle Umrandungen fest Drei Byte-Werte für die GB-Anteile bzw. einen Wert für Graustufen.
SetFillColor Legt die Füllfarbe für alle ausgefüllten Bereiche fest s.o.
SetFont Legt die Schriftart für die Zeichenausgabe fest Schriftart (Name), Style (b/i/u), Größe.
SetFontSize Ändert die Schriftgröße Größe
SetTextColor Legt die Schriftfarbe für die Zeichenausgabe fest Siehe SetDrawColor()

In der Standardinstallation werden die folgenden Schriftarten unterstützt:

Es können beliebig viele weitere Schriftarten hinzugefügt werden. Der Vorgang hierzu ist in der mitgelieferten Dokumentation ausführlich beschrieben und wird in diesem Tutorial nicht näher beschrieben.

PDF-Eigenschaften

Einem PDF-Dokument können zusätzliche Informationen zugewiesen werden; auch hierfür gibt es die nötigen Methoden, wie z.B.:

Weitere Informationen zu diesen teilweise selbst erklärenden Methoden kann man der mitgleieferten Dokumention von FPDF entnehmen.

Vorteile der Klassenstruktur

Dass FPDF in Form einer PHP-Klasse verfügbar ist, bringt gewaltige Vorteile mit sich. Mittels Unterklassen, die von FPDF abgeleitet sind, lässt sich das komplette System im Handumdrehen erweitern, ohne dass man den Original-Quellcode auch nur anschauen muss. Mehr dazu im nächsten Kapitel.

Zusätzlich ist - wie wir gesehen haben - der eigene für die PDF-Erstellung Quellcode erfreulich kurz und übersichtlich.