PDF mit PHP erzeugen
Was ist PDF?
PDF- Dokumente sind Text- Files, die vom Acrobat Reader gelesen, interpretiert und am
Bildschirm oder Drucker augegeben werden. Der PDF- Code ist frei zugänglich und im Prinzip
könnte jedermann sein PDF- Dokument mit einen Editor selbst erstellen. Im folgenden ist ein
Teil eines PDF- Queltextes dargestellt.
%PDF-1.3 %âãÏÓ 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages.....
Vorbereitung
Der einfachste Weg PDF- Dokumente mit PHP zu erzeugen ist die Verwendung der
PDF- Klasse von RO&S. Diese Klasse bietet
zwar nicht alle Funktionen von PDF, aber für die Erstellung eines normalen Dokumentes
reicht sie aus. Das Downloadpaket besteht aus zwei PHP- KLassen (class.pdf.php und
class.ezpdf.php), einigen Fonts und einer README- Datei. Besonders zu empfehlen ist
die ez.pdf- Klasse, die eine Erweiterung der PDF- Klasse darstellt und die wichtigsten
Befehle zur PDF- Erzeugung nochmal vereinfacht.
Nach dem Download muß nur noch das Paket in ein beliebiges Verzeichnis des Webservers
entpackt werden. In meinem Beispiel befinden sich die Dateien im Verzeichnis
c:\wampp13cs\htdocs\pdf\.
Erstes Beispiel
Kopieren Sie den untenstehenden Quelltext in einen Editor und passen die Pfade zur Klasse und
zu den Fonts an. Fügen Sie bitte keinen HTML-Code hinzu! Speichern Sie das Programm
unter einem beliebigen Namen, z.B.: pdf1.php und rufen Sie es mit einem Browser auf.
<?php
include ("/home/public/classes/class.ezpdf.php");
$pdf = & new Cezpdf();
$pdf->selectFont("/home/public/classes/fonts/Courier.afm");
$pdf->ezText("Dies ist mein erstes pdf-Dokument",36);
$pdf->ezStream();
?>
Das Ergebnis sollte so aussehen.
Dieses erste Beispiel gibt die erzeugten PDF- Steuersequenzen direkt an den Browser aus.
Vorangeschickt wird ein Header, der dem Browser sagt, daß es sich ein PDF- Format handelt
und er den Acrobat Reader laden soll.
Zweites Beispiel
In diesem Beispiel soll das erzeugte PDF- Dokument auf die Festplatte geschrieben werden und
den Namen pdf2.pdf erhalten.
<?php
include ("class.ezpdf.php");
$pdf = & new Cezpdf();
$pdf->selectFont("c:\wampp13cs\htdocs\pdf/fonts/Courier.afm");
$pdf->ezText("Dies ist mein erstes pdf- Dokument",36);
$pdfcode = $pdf->output();
$fp = fopen('pdf2.pdf','w');
fwrite($fp,$pdfcode);
fclose($fp);
?>
Tips und Tricks und Fallen
Diese Probleme sind bei meinen ersten Gehversuchen mit PDF aufgetreten
Problem 1: Es wird nur eine leere Seite augegeben
Einige Versionen des IE haben den Fehler, daß sie einen zweiten Header ignorieren.
Das führt dazu, daß manchmal nur eine leere Seite oder der PDF- Quelltext zu sehen ist.
Wurde also einmal eine Fehlermeldung ausgegeben, stellt der IE anschließend keine
PDF- Dokumente mehr dar.
Abhilfe:
- Vor dem PHP- Code darf kein (HTML-) Header zum Browser geschickt werden
- Nach einer Fehlermeldung den IE neu starten
- Das PDF- Dokument als File auf die Festplatte schreiben und anschließend
und mit einem Link darauf verweisen.
- Eine Umleitung mit "location:header" führt ebenfalls zu Fehlern. Am besten
man leitet per JavaScript um: "location.href("beispiel.pdf")"
Problem 2: PHP Fehler "Undefined index...in line 1934"
Der Pfad zu den Fonts ist nicht korrekt
Problem 3: PHP Fehler "failed to create stream: No... "
Der Pfad zur class.ezpdf.php ist nicht korrekt
Viel Spass
Siegfried Jahnel::Software and more...
www.sj-sam.de