Teil 4: Vergleich gängiger PDF Libraries
Kommentare

PDFlib und PDI: PDI steht für „PDF Import Library“.

In diesem Paket sind alle Funktionen der PDFlib enthalten. Darüber hinaus wird dem Entwickler ermöglicht, PDF-Dateien ganz oder seitenweise zu öffnen, Metainformationen abzufragen und die Seiten weiterzuverwenden. Somit lassen sich nun beispielsweise auch Vektorgrafiken, eingebettet in ein PDF-Dokument, im finalen Dokument platzieren. Weiterhin lassen sich vorhandene PDF-Dateien als eine Art Template verwenden und auf die neu zu erstellende Seite legen. Anschließend platziert man darüber wie gewohnt die gewünschten Inhalte. Mit PDI lassen sich so die vielfältigsten Szenarien umsetzen, von der Druckbogenmontage über Barcodes bis hin zur Konvertierung von Dokumenten in den PDF/X-Standard.

PPS

Das Nonplusultra ist der PDFlib Personalization Server, kurz PPS. Dieser beinhaltet alle Funktionen von PDFlib und PDI, enthält aber darüber hinaus selbst lediglich drei neue Funktionen, die erst im Zusammenspiel mit dem Block-Plug-in für Adobe Acrobat ihre volle Macht demonstrieren. Zunächst erstellt ein Designer (also ein Mensch ohne Programmierkenntnisse) mit einem Programm seiner Wahl ein entsprechendes PDF-Dokument, das er anschließend in Adobe Acrobat (Vorsicht: NICHT der Adobe Reader!) öffnet. Dort kann er mit dem kostenlosen PDFlib-Block-Plug-in bestimmte Bereiche als Block markieren und neben verschiedenen Eigenschaften, wie beispielsweise Schriftgröße und -farbe, einen Variablennamen für den Block vergeben. Anschließend erhält der Programmierer (also ein Mensch ohne Designkenntnisse) das Dokument, öffnet es und platziert die Seiten in einem neuen Dokument. Dann verwendet er die drei PPS-Funktionen fill_textblock(), fill_imageblock() und/oder fill_pdfblock(), um je nach Blocktyp entweder Texte, Grafiken oder PDF-Dokumente zu injizieren.

TCPDF

TCPDF ist ein unter LGPL verfügbares Spin-off von FPDF. Das erste Release erschien am 06.01.2005. Inzwischen wurde der Code neu geschrieben und kommentiert und basiert auf PHP 5. Weiterhin wurde eine Vielzahl neuer Funktionen hinzugefügt. Durch die gemeinsame Codebasis können viele Add-ons von FPDF weiterverwendet werden.

Der auf den ersten Blick größte Vorteil von TCPDF ist die Unterstützung von UTF-8 und RTL-Schriften, was in einigen anderen PDF Libraries keine Selbstverständlichkeit ist. TCPDF glänzt weiterhin bei der Anzahl der unterstützten Grafikformate. Hier sind neben den Bitmap-Formaten PNG, GIF, JPEG, GD, GD2, GD2PART, WBMP, XBM und XPM auch Vektorformate verwendbar, nämlich EPS, SVG und AI (Adobe Illustrator), letzteres aber nur bis maximal Version 8. Auch die Unterstützung eigener Schriftarten ist nicht von schlechten Eltern. Neben Type1 und TrueType können auch OpenType und CID-0 verwendet werden. Allerdings muss auch hier die Schriftdatei erst in eine PHP-Schrift umgewandelt werden. Auch TCPDF bietet die Möglichkeit an, neben Graustufen, RGB und CMYK Schmuckfarben, wie Pantone und HKS, zu verwenden; auch fehlt hier die Unterstützung von ICC-Profilen nicht. Somit steht der Erzeugung von Dokumenten für die Druckvorstufe nichts im Wege – diese erfüllen sogar die Normen des Langzeitarchivierungsformats PDF/A. Kleines Manko an dieser Stelle: Es fehlt leider die PDF/X-Unterstützung. Analog zu FPDF stehen auch bei TCPDF Funktionen für den automatischen Seitenumbruch sowie das Kopf- und Fußzeilenmanagement zur Verfügung. Im Zusammenspiel mit der Unterstützung von XObject-Templates ist es dem Entwickler so möglich, schnell und auf einfachste Weise kompakte Dokumente mit längeren Inhalten zu produzieren. Auf die gleiche Weise lassen sich natürlich auch größere Tabellen erstellen. Auch die Schlipsträger werden glücklich sein: Man kann mit den Grafikfunktionen sehr schön und einfach Diagramme und Grafiken erzeugen (Text, Linien, Kurven, Kreise, Ellipsen, Polygone, Sterne, Pfeile, Kreissegmente etc). Weiterhin gibt es noch die Möglichkeit, mit Bordmitteln Barcodes verschiedenster Art zu generieren, auch QR-Codes.

Abschließend muss man nur noch die Möglichkeit erwähnen, verschlüsselte PDFs, beziehungsweise solche mit eingeschränkten Zugriffsrechten erstellen zu können. Alle diese Funktionen können auf der Beispielseite genauer unter die Lupe genommen werden.

Zend_Pdf

Zend_Pdf, verfügbar unter der New BSD License, ist im Prinzip schon seit den Anfängen von Zend Framework (Release 1 am 30.06.2007) in dieses integriert. Daher rührt gleichzeitig dessen größte Stärke: Die Komponente – von Library darf man hier ja eigentlich nicht sprechen – ist beim Herunterladen des Zend Framework automatisch dabei, und die verschiedenen Funktionen einzusetzen, fällt dem geübten Zend-Framework-Entwickler sehr leicht. Durch die Verwendung des Fluent Interface wird die Erzeugung des benötigten Quellcodes einfach und übersichtlich, wie Listing 2 zeigt.

Listing 2

// Schriftfarbe, -art und -größe einstellen, Textausgabe
$pdf->pages[0]->setFont($helvetica, 10)
              ->setFillColor(new Zend_Pdf_Color_Cmyk(.71, .58, .49, .32))
              ->drawText('Musterstraße 1', 5, 40)
              ->drawText('12345 Musterhausen', 5, 35)
              ->drawText('Deutschland', 5, 30)
              ->drawText('T  01234 56789-0', 5, 15)
              ->drawText('F  01234 56789-10', 5, 10)
              ->drawText('E  max.mustermann@acme.com', 5, 5);

Auch das Font Handling ist in Zend_Pdf sauber gelöst: Type1- und TrueType-Schriften können durch Angabe der Schriftdatei direkt verwendet werden, ohne diese erst umständlich in eine PHP-Schrift umwandeln zu müssen. Lediglich die Unterstützung von OpenType-Schriften könnte man hier vermissen. Zur Textausgabe, die übrigens UTF-8 unterstützt, steht leider nur eine einzige Methode zur Verfügung, der man lediglich die Koordinaten, an denen die Ausgabe erfolgen soll, mitgeben kann. Dies erschwert natürlich die Ausgabe von tabellarischen Daten oder größeren Mengen Text enorm. Besser ist Zend_Pdf hingegen im grafischen Bereich: Es werden zwar insgesamt nur drei Formate unterstützt (JPEG, PNG, TIFF), aber TIFF ist für die Druckvorstufe natürlich ein großer Pluspunkt. Das Farbspektrum schwächelt wiederum, da wären neben Graustufen, RGB und CMYK auf jeden Fall Schmuckfarben von Vorteil. Beim Erstellen von Grafiken werden aber wohl die meisten Pluspunkte gesammelt: Es existiert hier eine Vielzahl möglicher Formen, wie beispielsweise Linien, Rechtecke, Polygon, Kreise, Ellipsen und Kreisausschnitte. Die größten Stärken finden sich im Seitenmanagement. Man kann einzelne vorhandene Seiten klonen, sodass statt komplett neuer, eigenständiger Daten nur eine Referenz gespeichert werden muss, was wiederum zu geringeren Dateigrößen führt. Außerdem bietet Zend_Pdf die Möglichkeit, bestehende PDF-Dokumente zu laden und zu parsen.

Weiter mit: Teil 5

Alle Teile: Teil 1, Teil 2, Teil 3, Teil 4, Teil 5

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -