Anzeige
Tutorialbeschreibung

PHP - Teil 19 - PDF-Dokumente generieren

PHP - Teil 19 - PDF-Dokumente generieren

Es gibt verschiedene Möglichkeiten, mit PHP PDF-Dokumente zu erstellen. Eine davon ist fpdf. Dabei handelt es sich um eine PHP-Klasse, mit der sich PDF-Dokumente generieren lassen. Wenn ihr also dynamisch PDF-Dateien erstellen wollt oder müsst, dann solltet ihr auf alle Fälle einen Blick auf dieses Video-Training und die fpdf-Klasse werfen.

... übrigens findest du die komplette Serie hier: PHP-Workshop-DVD - Basics & Tricks - Schnapp sie dir in unserem Shop oder in der Kreativ-Flatrate!


Bevor die fpdf-Klasse vorgestellt wird, darf nicht der Hinweis auf die wohl bekannteste PDF-Bibliothek fehlen: Mit der PDF-Bibliothek pdflib von Thomas Merz können mit PHP ebenfalls PDF-Dokumente erstellt werden. Die Bibliothek ist unter http://www.pdflib.com/ verfügbar. Das Problem an dieser Bibliothek ist allerdings, dass man diese nicht kostenlos für kommerzielle Projekte einsetzen kann. Wer das möchte, muss Lizenzgebühren zahlen. Ausführliche Informationen dazu gibt es unter http://www.pdflib.com/products/pdflib-family/prices-licensing/.


fpdf einsetzen

Bevor fpdf verwendet werden kann, muss es installiert werden. Ruft dazu die Seite http://www.fpdf.org/ auf.

Bilder



 
Ladet von dort die aktuellste fpdf-Version herunter. Anschließend entpackt ihr das heruntergeladene Archiv. Darin sollten die folgenden Dateien und Verzeichnisse enthalten sein:

doc
font
tutorial
FAQ.htm
fpdf.css
fpdf.php
histo.htm
install.txt
license.txt


Am wichtigsten sind hier die fpdf.php (das ist die eigentliche Klasse) und das font-Verzeichnis.

Kopiert das fpdf-Verzeichnis auf euren Server. Mehr ist an Vorarbeit nicht nötig. Damit ihr nun mit fpdf arbeiten könnt, legt ihr euch eine PHP-Datei an. In diese Datei muss die fpdf.php eingebunden werden. Das sieht folgendermaßen aus:

include("fpdf/fpdf.php");

Wobei hier von folgender Verzeichnisstruktur ausgegangen wird.

Bilder



 
Die neue PHP-Datei liegt also eine Ebene oberhalb der fpdf.php.

Nun kann bereits das erste PDF-Dokument erzeugt werden. Die notwendige PHP-Datei sieht folgendermaßen aus:

<?php
 include("fpdf/fpdf.php");
 $pdf=new FPDF();
 $pdf->AddPage();
 $pdf->SetFont('Arial','B',20);
 $pdf->Cell(40,10,'Hallo, Welt!');
 $pdf->Output(); 
?>

Hierin sind sämtliche relevanten Elemente enthalten. Über new FPDF() wird eine neue pdf-Objekte-Instanz erzeugt. Mit AddPage() wird eine neue Seite angelegt. (In diesem Zusammenhang müsst ihr euch ein PDF-Dokument vorstellen, das bekanntermaßen immer aus mindestens einer, meistens aber aus mehreren Seiten besteht. Und eine solche Seite wird mit AddPage() angelegt).

Weiter geht es mit der Definition der Schrift. Im aktuellen Beispiel wurde Arial verwendet. Zusätzlich wurde eine Fettschrift in einer Größe von 20 Pixel bestimmt. Der Text selbst wird dann in eine „Zelle“ geschrieben. Über die ersten beiden Parameter 40 und 10 werden Breite und Höhe dieser Zelle bestimmt. Was letztendlich angezeigt werden soll, steht innerhalb der Anführungszeichen. Im aktuellen Beispiel wird lediglich die Zeichenkette Hallo, Welt! ins Dokument geschrieben. Output() sorgt letztendlich für die Ausgabe. Das Ergebnis sieht folgendermaßen aus:

Bilder



Zugegebenermaßen handelt es sich hierbei um ein sehr einfaches PDF-Dokument. Aber immerhin wurde auf diese Weise bereits ein erstes PDF-Dokument mittels PHP generiert.


 

Das Zellenkonzept

Nun können die Dokumente natürlich noch weiter ausgebaut werden. Dazu wird zunächst noch einmal ein etwas genauerer Blick auf das Zellenkonzept von fpdf geworfen. Dahinter verbirgt sich eigentlich nichts anderes als ein rechteckiger Bereich innerhalb des Dokuments. Diese Zelle kann eine Breite und Höhe sowie einen Rahmen und Text haben. Die allgemeine Syntax sieht so aus:

Cell(float w [, float h] [, string txt] [, mixed border] [, integer ln] 
[, string align][, integer fill] [, mixed link])

Die Parameter w (Breite), h (Höhe) und string txt (der eigentliche Text) habt ihr bereits kennengelernt. Aber auch die anderen Parameter sind interessant. So kann man über den optionalen vierten Parameter festlegen, ob ein Rahmen um die Zelle angezeigt werden soll. Das folgende Beispiel zeigt, wie sich so etwas umsetzen lässt.

<?php
 include("fpdf/fpdf.php");
 $pdf=new FPDF();
 $pdf->AddPage();
 $pdf->SetFont('Arial','B',20);
 $pdf->Cell(0, 10, 'Hallo, Wetl!', 0, 2); 
 $pdf->Cell(0, 10, 'Hallo, Welt!', 1, 1);
 $pdf->Output(); 
?>

Soll ein Rahmen um die Zelle zu sehen sein, gibt man den Wert 1 an, anderenfalls notiert man einfach eine 0.

Bilder



 
Um Texte in das Dokument zu schreiben, muss man nicht unbedingt auf Cell() zurückgreifen. Mit Write() wird Text an der aktuellen Position ins Dokument geschrieben. Auch hier zunächst ein Beispiel, bevor die möglichen Parameter vorgestellt werden.

 <?php 
 include("fpdf/fpdf.php");
 $pdf=new FPDF();
 $pdf->AddPage();
 $pdf->SetFontSize(10);
 $pdf->Write(5,'Herzlich Willkommen auf ');
 $pdf->SetFont('Arial','U',20);
 $pdf->Write(5,'www.psd-tutorials.de','http://www.psd-tutorials.de/');
 $pdf->Output(); 
?>
 

Die Ausgabe sieht im Dokument dann so aus:

Bilder



 
Auch Write() kennt einige Parameter. Hier zunächst die allgemeine Syntax:

Write(float h , string txt [, mixed link])

Über den ersten Parameter gibt man die Höhe der auszugebenden Zeile an. Der zweite Parameter enthält den eigentlichen Text. Optional kann über den letzten Parameter aus dem Text ein Hyperlink gemacht werden.


Texte gestalten

Auch bei der Textgestaltung gibt es einige Möglichkeiten. Verwendet wird dafür die Funktion SetFont(). Die allgemeine Syntax dieser Funktion sieht so aus:

SetFont(string family [, string style] [, float size])

Dieser Funktion kann man zunächst einmal die gewünschte Schriftfamilie zuweisen. Momentan werden die folgenden Schriftfamilien unterstützt:
• Courier (feste Breite)
• Helvetica oder Arial (Synonym; Sans Serif)
• Times (Serif)
• Symbol (Symbole)
• ZapfDingbats (Symbole)

Wird als erster Parameter eine leere Zeichenkette angegeben, wird automatisch die aktuell eingestellte Schriftfamilie verwendet.

Über den optionalen zweiten Parameter kann der Schriftstil bestimmt werden.

• leere Zeichenfolge: Normal
B: Fett
I: Kursiv
U: Unterstrichen

Als letzter Parameter lässt sich die Schriftgröße bestimmen. Die Größenangabe erfolgt dabei immer in Punkt. (Wobei keine Maßeinheit angegeben wird. Der Wert 14 wird also automatisch als 14 Punkt interpretiert).


Bilder einfügen

Was sind PDF-Dokumente ohne Bilder? Kein Wunder also, dass auch Bilder integriert werden können. Verwendet wird dafür die Funktion Image(). Auch hier zunächst die allgemeine Syntax:

Image(string file , float x , float y [, float w] [, float h]
 [, string type] [, mixed link])

Das folgende Beispiel zeigt, wie sich Image() verwenden lässt.

<?php
 include("fpdf/fpdf.php");
 $pdf = new FPDF(); 
 $pdf->Open(); 
 $pdf->AddPage(); 
 $pdf->Image('logo.gif', 0, 0); 
 $pdf->Output();
?>

In diesem Beispiel wird die Datei logo.gif ins Dokument eingefügt.

Bilder



Unterstützt werden die folgenden Bildformate:

• Gif
• PNG
• JPEG

Der zweite Parameter legt die horizontale Position (X-Achse) der linken/oberen Ecke fest, an der das Bild ausgegeben werden soll. Über den dritten Parameter bestimmt man hingegen die vertikale Position (Y-Achse) der linken/oberen Ecke, an der das Bild angezeigt werden soll. Mit den optionalen Parametern vier und fünf lässt sich die Breite und Höhe des Bildes festlegen. Über den optionalen sechsten Parameter lässt sich das Bildformat angeben. Mögliche Werte sind JPG, JPEG, PNG und GIF. Möchte man das Bild verlinken, kann man das über den optionalen letzten Parameter erledigen. Dazu gibt man einfach die Zieladresse an.


Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 15.05.2017 - 00:27

Ein sehr hilfreiches und interessantes Tutorial! Danke!

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 07.10.2016 - 12:58

Danke für das Tutorial.

Portrait von dmtw2107
  • 16.11.2013 - 09:41

verständlich und toll erklärt danke für das tutorial

Portrait von wolkenreiter
  • 18.11.2011 - 00:44

Komisch, mir wurden hierfür 10 Punkte abgezogen. Oben steht aber was von 5 Punkten?!

Portrait von Cheremius
  • 09.10.2011 - 12:16

Super danke dir, wäre es möglich das du mal per PN nen Beispielcode sendest wie das aussieht? Das wäre super.

Freundliche Grüße

Dominik

Portrait von Cheremius
  • 09.10.2011 - 10:02

Sehr gutes, Videotraining. Eine Frage hätte ich allerdings dazu. Kann man so ein Dokument mit vorheriger Eingabe machen. Also das jemand seinen Namen eingibt in ein Formular und dann in die PDF EIngetragen wird?

Portrait von Daniel Koch
  • 09.10.2011 - 12:04

Hallo,
ja, das kannst Du machen. Dazu musst Du nur die im Formular gemachte Eingabe innerhalb einer Variablen speichern und diese dann als Text für das PDF-Dokument verwenden.

Viele Grüße
Daniel

Portrait von pgx
pgx
  • 04.10.2011 - 19:31

Danke sehr, es war nützlich!

Portrait von Joerg_0609
  • 04.09.2011 - 18:21

Danke für das Tutorial, hat mir gut geholfen !

x
×
×