Dynamic Web Pages: deutschsprachiger PHP Knotenpunkt seit 1999

Dynamic Web Pages : tutorials _





 
 
 
 
 
 
 

PHP QuickRef

Via QuickRef gelangen Sie direkt zur gesuchten Funktion im Handbuch.

 
 

Printmedien

PHP-Magazin
Das PHP Magazin erscheint 2-monatlich zum Preis von 9,80 €. Studenten erfreuen sich über ermäßigte Abos.

PHP-Journal
Das PHP Journal erscheint 2-monatlich zum Preis von 14,95 €. Studenten und Abonnenten erfreuen sich über bis zu 25% Ermäßigung.

PHP Solutions Magazin
Das PHP Solutions Magazin erscheint alle 3 Monate zum Preis von 8,75 €. Studenten erfreuen sich über ermäßigte Abos.

PHP-Architect
Der php|architect erscheint monatlich als digitale PDF-Version zum Preis von $3,99 USD und als Print-Version zum Preis von $8,69 USD. Im Abo gibt es Rabatt (30% Print, 15% PDF).

 
PDF-Dokumente mit PHP erzeugen
 
Uwe Steinmann   Uwe Steinmann       

 

Einleitung

Wenn Sie sich mal im Internet umschauen, welche Dateiformate verwendet werden, dann ist PDF neben HTML eines der häufigsten. Die Gründe dafür sind leicht genannt. PDF-Dokumente sind auf nahezu allen System lesbar, sie sind in hoher Qualität druckbar und können von einer großen Anzahl Programme exportiert werden. Es liegt also nahe auch PHP die Fähigkeit zu geben, PDF zu erzeugen. Nun ist die Erzeugung von PDF nicht so trivial wie beispielsweise HTML, weshalb PHP auf die Bibliothek pdflib von Thomas Merz zurückgreift. Wenn Sie also die Beispiele in diesem Tutorial nachvollziehen wollen, dann sollten Sie zuvor die aktuelle Version (3.02) der pdflib installieren. Bei der Installation unter Unix sollten sie nicht vergessen eine shared library zu erstellen. Dazu muss bei der Konfiguration der pdflib die Option

--enable-shared

angegeben werden.

Die Unterstützung in PHP wird wie bei vielen anderen Modulen auch, über eine Option eingeschaltet. In diesem Fall lautet sie

--with-pdflib=<Verzeichnis in das pdflib installiert wurde>

Bei vielen Distributionen sind die beiden obigen Schritte nicht notwendig, da sie PHP bereits mit Unterstützung für pdflib ausliefern.

Ein einfaches Dokument

Der Einstieg in die Erzeugung von PDF-Dokumenten mit PHP ist recht einfach. Das folgende Skript erzeugt bereits ein gültiges PDF-Dokument und schreibt es in die Datei test1.pdf.

<?php
$fd = fopen("test1.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test1.pdf

Das Dokument enthält lediglich eine leere DIN A5 Seite. Gestartet wird ein PDF-Dokument immer mit der Funktion pdf_open(), die in diesem Fall den Dateizeiger $fd übergeben bekommt. Das führt dazu, dass das Dokument in einer Datei abgelegt wird. Alternativ könnte das Argument für pdf_open() auch entfallen, und das Dokument wird im Speicher erzeugt und seitenweise an die Standardausgabe ausgeben. Die Erzeugung des Dokuments im Speicher ist insbesondere im Web-Serverbetrieb von Vorteil, weil keine Datei in das Dateisystem geschrieben werden muss und das Dokument ohne Umwege an den Browser ausgeliefert wird. Geschlossen wird das Dokument mit pdf_close().

PDF-Dokumente sind wie PostScript-Dokumente seitenorientiert. Bevor also irgendwelche Ausgaben gemacht werden können, muss eine Seite generiert werden. pdf_begin_page() erzeugt eine solche neue Seite und bestimmt gleichzeitig deren Größe in PostScript-Punkten (ein PostScript-Punkt ist der 72ste Teil eines Zolls). Auch Seiten müssen beendet werden, was mit pdf_end_page() erfolgt. Nach dem Beenden einer Seite sind keinerlei Veränderung an dieser Seite mehr möglich.

Ausgabe von Text

Das folgende Beispiel ist nur geringfügig komplexer, gibt aber schon einen Text an vorgegebener Stelle aus. Gleichzeitig wird dies ihr erster Kontakt mit dem Koordinatensystem einer PDF-Seite sein.

<?php
$fd = fopen("test2.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
pdf_set_font($pdfdoc, "Times-Roman", 24, "host");
pdf_set_text_pos($pdfdoc, 100, 100);
pdf_show($pdfdoc, "Hallo");
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test2.pdf

Der Grundaufbau des Skripts wird aus dem ersten Beispiel übernommen, hinzu kommen lediglich die drei Funktionen zur Auswahl des Zeichensatzes (pdf_set_font()), zum Setzen der Ausgabeposition (pdf_set_text_pos()) und die eigentliche Textausgabefunktion (pdf_show()). Das Ergebnis ist ein Text in Times-Roman mit der Größe 24pt. Der letzte Parameter von pdf_set_font() gibt das Encoding des Zeichensatzes an. Mit 'host' liegt man in der Regel richtig. Der Ursprung des PDF-Koordinatensystem liegt in der linken unteren Ecke, der Text erscheint also jeweils 100 Punkte vom linken und unteren Rand entfernt (100 Punkte sind 100/72*2.54cm=3.528cm).

Geometrische Figuren

Sie wollen sicherlich nicht nur Text ausgeben, sondern auch Zeichnen. Auch das kann PDF, man sollte aber verstehen, dass dies immer zwei Schritte erfordert. Im ersten Schritt wird ein so genannter Pfad durch die Zeichenfunktionen erzeugt, im zweiten Schritt wird dieser Pfad gezeichnet oder anderweitig verwendet. Wir wollen uns zunächst auf das Zeichnen konzentrieren. Wie wär es mit einer Linie?

<?php
$fd = fopen("test3.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
pdf_moveto($pdfdoc, 100, 100);
pdf_lineto($pdfdoc, 200, 200);
pdf_stroke($pdfdoc);
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test3.pdf

Auch hier sind wieder drei Funktionen notwendig. Mit pdf_moveto() setzen Sie den Ausgangspunkt der Linie. pdf_lineto() fügt eine Liniensegment dem aktuellen Pfad hinzu und erst pdf_stroke() zeichnet den aktuellen Pfad, also die Linie. Das mag kompliziert klingen, macht aber Sinn, wenn Sie die anderen Möglichkeiten mit Pfaden zu arbeiten kennen. So ist es beispielsweise möglich einen Pfad mit einer Farbe oder einem Muster zu füllen, auch kann ein Pfad als Begrenzung anderer Bildteile (clipping) verwendet werden. Pfade werden damit zu einem leistungsfähigen Werkzeuge, und das nicht nur zum Zeichnen von Linien.

 

[ 1 2 3  ]    weiter
 
PDF-Dokumente mit PHP erzeugen (19 Kommentare)
  31.08.2000:   PDFLib und PHP (2)
  07.09.2000:   test (0)
  29.11.2000:   Config-File pdflib.upr (7)
  03.03.2001:   PDF-erzeugen (10)
  07.03.2001:   Provider mit PHP / PDF (6)
  16.05.2001:   .pdf-file mit PHP lesen (2)
  31.05.2001:   Wirklich interessante Dinge? (1)
  15.10.2001:   Leider veraltete PDFLib-Version (0)
  30.12.2001:   pdf_open() will nich (2)
  01.07.2002:   www.pdflib.com ? (3)
  18.08.2002:   pdf datei per php (0)
  23.11.2002:   300 dpi (2)
  17.03.2003:   kursiver text? (4)
  22.07.2003:   word to pdf mit php (1)
  05.08.2004:   Schriften einbetten (5)
  31.10.2003:   bild in pdf einfügen möglich (0)
  04.12.2003:   PDF-Dokumente mit PHP erzeugen (1)
  08.12.2004:   PDF-Dateien verschmelzen (1)
  17.07.2006:   Formulardaten via PHP nach FPDF (1)
zurück
   
powered by Hetzner


top Alle Rechte vorbehalten. © Dynamic Web Pages 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 top

  Seitenaufbau in 3.790 Sekunden