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-Erzeugung für Fortgeschrittene
 
Uwe Steinmann   Uwe Steinmann       

 Dass man mit den PDF-Funktionen von PHP zeichnen und Texte ausgeben kann, dürfte bekannt sein und mit etwas Erfahrung leicht von der Hand gehen. Richtig interessant wird es aber erst mit den erweiterten Fähigkeiten. In diesem Tutorial soll Ihnen das folgende näher gebracht werden:
  • Einbinden von Bildern
  • Textausgabe und Pfade
  • Erstellen von Bookmarks
  • Einfügen von Hyperlinks

Sie sollten ein Grundverständnis für PDF und dessen Erstellung mit den PHP-Funktionen mitbringen, um dem Tutorial sicher folgen zu können.

Einbinden von Bildern

PDF-Dokumente können wie auch HTML-Dokumente Bilder enthalten. Im Unterschied zu HTML werden die Bilder jedoch direkt in das Dokument eingebettet und nicht als externe Datei referenziert. Das hat insbesondere den Vorteil, dass Sie beim Datenaustausch nur eine Datei übertragen müssen. Am besten Sie schauen sich einfach mal das folgende Beispiel an.

<?php
$fd = fopen("test21.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
$pdfimage = pdf_open_image_file($pdfdoc, "jpeg", "dynalogo.jpg");
pdf_place_image($pdfdoc, $pdfimage, 10, 10, 0.6);
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test21.pdf
PDF Dokument
Beispiel 1: Einbinden eines Bildes aus einer Datei.

Ein Bild muss zunächst unter Angabe des Formats ('jpeg') und des Dateinamens mit der pdf_open_image_file() geladen werden. Die Platzierung erfolgt dann mit der Funktion pdf_place_image(). Bei der Platzierung kann zu der Position auch noch ein Skalierungsfaktor angegeben werden. In diesem Fall ist er auf 0.6 gesetzt, da das Bild sonst nicht auf die Seite gepasst hätte. Neben JPEG können auch die Formate GIF, TIFF und PNG gelesen werden.

Die Zweiteilung der Einbindung eines Bildes hat im übrigen einen guten Grund. Sie können ein Bild mehrfach verwenden, ohne jedes mal das komplette Bild in das PDF-Dokument einzubetten. pdf_place_image() schreibt intern lediglich einen Verweis auf das bereits im Dokument befindliche Bild. Der Speicherplatzbedarf kann dadurch erheblich reduziert werden.

Machen Sie doch einfach mal folgenden Test. Platzieren Sie das Bild mehrere mal auf der Seite und vergleichen Sie die Dateigrößen der PDF-Dokumente. Und damit es nicht ganz so langweilig wird, kommt mit jedem Bild eine weitere Drehung des Koordinatensystems hinzu. Das folgende Beispiel zeigt wie es geht.

<?php
$fd = fopen("test22.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
$pdfimage = pdf_open_image_file($pdfdoc, "jpeg", "dynalogo.jpg");
for($i=0; $i<10; $i++) {
pdf_place_image($pdfdoc, $pdfimage, 10, 10, 0.6);
pdf_rotate($pdfdoc, 9);
}
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test22.pdf
PDF Dokument
Beispiel 2: Mehrfachplatzierung eines Bildes mit Rotation.

Das Dokument aus dem ersten Beispiel hat eine Größe von 22368 Bytes. Das Dokument aus dem zweiten Beispiel ist mit 22397 Bytes nur geringfügig größer. Wie wichtig diese Eigenschaft ist, werden Sie feststellen, wenn Sie das erste mehrseitige Dokument erstellen, das auf jeder Seite das Firmenlogo als Pixelbild trägt. Aber es kommt noch besser.

Wenn schon PHP dann richtig! Mit PHP und der GD-Bibliothek lassen sich Pixelgrafiken erzeugen. Nichts liegt also näher, als diese in einem PDF-Dokument einzubinden. Die Vorgehensweise ist die gleiche wie im letzten Beispiel, Sie müssen lediglich das Bild mit pdf_open_memory_image() laden und können es danach beliebig platzieren. Das Bild kann sobald es mit pdf_open_memory_image() geladen wurde, wieder aus dem Speicher entfernt werden.

<?php
$fd = fopen("test23.pdf", "w");
$pdfdoc = pdf_open($fd);
pdf_begin_page($pdfdoc, 421, 595);
$image = ImageCreate(100, 100);
$red = ImageColorAllocate ($image, 255, 0, 0);
$blue = ImageColorAllocate ($image, 0, 0, 255);
ImageFilledRectangle($image, 0, 0, 100, 100, $red);
ImageFilledRectangle($image, 20, 20, 80, 80, $blue);
$pdfimage = pdf_open_memory_image($pdfdoc, $image);
ImageDestroy($image);
for($i=0; $i<10; $i++) {
pdf_place_image($pdfdoc, $pdfimage, 10+$i*30, 10+$i*30, 0.6);
}
pdf_end_page($pdfdoc);
pdf_close($pdfdoc);
fclose($fd);
?>

Acrobat zeigt test23.pdf
PDF Dokument
Beispiel 3: Einbinden eines Bildes, das mit PHP erzeugt wurde.

Für das Bild in diesem Beispiel ist es sicherlich nicht sinnvoll es mit der GD-Bibliothek zu erstellen, da auch die PDF-Funktionen bei weniger Speicherbedarf dazu fähig wären und das Ergebnis auch noch besser skalierbar ist. Sinnvoll kann es aber dann werden, wenn vorliegende Pixelbilder mit der GD-Bibliothek vor dem Einbetten in das PDF-Dokument modifiziert werden sollen.

 

[ 1 2 3  ]    weiter
 
PDF-Erzeugung für Fortgeschrittene (12 Kommentare)
  10.01.2001:   ClibPDF (1)
  09.06.2001:   Farbe der Schriften (0)
  02.08.2001:   Beispiel 7: Verwendung von Textumrandungen zur Begrenzung der Zeichenfläche. (0)
  20.11.2001:   PDF mit MySQL (2)
  04.07.2002:   pdf 2. seite + Acobat reader (0)
  05.07.2002:   PDF in bestimmter Skalierung öffnen (0)
  11.12.2002:   handbuchuch mit PDFlib (0)
  11.12.2002:   handbuchuch mit PDFlib (0)
  11.12.2002:   handbuchuch mit PDFlib (0)
  11.12.2002:   Handbuch mit PDFlib (0)
  06.02.2003:   text rechtsbündig ausgeben? (1)
  04.05.2006:   Seitenumbruch (0)
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 2.964 Sekunden