Das eigene PDF

Einführung in die Zend_Pdf-Komponente des Zend Frameworks
Kommentare

Eine Vorlage befüllen
In unserem zehnten und letzten Beispiel geht es nun darum, die PDF-Vorlage aus dem vorherigen Beispiel mit Daten zu befüllen. In Listing 12 sehen Sie die Actionmethode. Ihnen fällt

Eine Vorlage befüllen

In unserem zehnten und letzten Beispiel geht es nun darum, die PDF-Vorlage aus dem vorherigen Beispiel mit Daten zu befüllen. In Listing 12 sehen Sie die Actionmethode. Ihnen fällt sicherlich sofort auf, dass die eigentliche Generierung des PDFs nicht mehr in der Actionmethode des Controllers vorhanden ist. Hier werden lediglich der Dateiname der PDF-Vorlage sowie die zu verwendenden Daten an das View-Skript übergeben. Zudem werden wie gewohnt die entsprechenden Header gesetzt. Das heißt also, dass sich in diesem Beispiel nicht mehr der Controller, sondern das View-Skript um die Ausgabe der Daten kümmert. Dies entspricht meiner Meinung nach mehr dem Model-View-Controller-Konzept, ist aber vielleicht auch Geschmackssache.

Schöner Artikel?

Hat Ihnen der Artikel gefallen? Dies und mehr ist alles Teil der Ausgabe 1.09 unseres PHP Magazins. Alle zwei Monate frisch am Kiosk! Zur jeweils aktuellen Ausgabe geht es hier.

Listing 13 zeigt nun das View-Skript, das für die Befüllung der PDF-Vorlage zuständig ist. Zuerst wird die PDF-Vorlage geladen, was mithilfe der Zend_Pdf::load()-Methode recht einfach vonstatten geht. Als Nächstes wird die zu verändernde Seite ermittelt (die PDF-Vorlage hat nur eine einzelne Seite). Danach beginnt die Ausgabe der Mitgliedsdaten an den passenden Stellen im Formular. Bei dem Beschreibungstext besteht noch das Problem, dass der Text eventuell etwas länger ist, als es der Platz für die Beschreibung eigentlich zulässt. Hierbei bedienen wir uns also der Vorgehensweise für das Umbrechen von langen Texten, die Sie schon aus dem vierten Beispiel kennen. Der Unterschied ist nur, dass wir prüfen, ob der Platz verbraucht ist, und den Text bei Bedarf abkürzen. Als Nächstes wird noch das Foto des Mitglieds platziert, wobei der Rahmen stehen gelassen wird. Das Foto wird mit der drawImage()-Methode passend gemacht. Zu guter Letzt wird noch das Änderungsdatum des PDF-Dokuments in den Metadaten überschrieben bzw. auf der Seite ausgegeben.

Mit diesem Prinzip des Befüllens von PDF-Vorlagen sollte es ohne weiteres möglich sein, dynamisch PDF-Dokumente mit individuellen Daten zu befüllen. Dies könnten z.B. Rechnungen, Auftragsbestätigungen, Druckversionen von Produktblättern oder redaktionellen Artikeln u.v.m. sein. Speziell bei Rechnungen sollten Sie im Sinne Ihrer Kunden jedoch darauf achten, dass Zend_Pdf meines Wissens nach derzeit nicht das Hinzufügen von digitalen Signaturen unterstützt. PDF-Rechnungen ohne digitale Signatur können den Vorsteuerabzugsanspruch Ihrer Kunden gefährden. Aber dieses Thema würde den Rahmen dieses Artikels sprengen. Dennoch sollten Sie diesen Umstand im Hinterkopf behalten. Für Vorabrechnungen eignet sich die Vorgehensweise der mit Zend_Pdf befüllten Rechnungen aber auf jeden Fall.

Fazit

Mit Zend_Pdf bietet das Zend Framework ein sehr brauchbares Werkzeug, um PDF-Dokumente neu zu erstellen bzw. vorhandene PDF-Dokumente zu bearbeiten, um z.B. eine PDF-Vorlage dynamisch mit Daten zu befüllen. Zend_Pdf bietet neben den hier besprochenen Möglichkeiten auch noch weitere Funktionen, wie das Einbinden und Extrahieren von weiteren Zeichensätzen, Rotationen, Transparenz oder die Einschränkung des Zeichenbereichs. Weitere Informationen dazu finden Sie im Manual zu Zend_Pdf.

src=“http://entwickler.com/develop/zonen/magazine/onlineartikel/pspic/picture_file/37/ralf_egger4967382424d54.jpg“ hspace=“5″ vspace=“5″ alt=““> Ralf Eggert (r.eggert@travello.com) ist Geschäftsführer der Travello GmbH mit Sitz in Pinneberg. Der vor einigen Monaten durchgeführte Relaunch der Reise-Community www.travello.com erfolgte komplett auf Basis des Zend Frameworks. Ralf bloggt privat auf www.ralfeggert.de über das Zend Framework und PHP allgemein.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -