Teil 3: Vergleich gängiger PDF Libraries
Kommentare

Haru Free PDF Library: Der zweite Kandidat nimmt eine Außenseiterrolle ein: PECL/haru habe ich zufällig bei der Recherche entdeckt und direkt ausprobiert.

Die PECL Extension (0.0.1-beta vom 26.03.2007) benötigt für den Betrieb die in C geschriebene Haru Free PDF Library, die am 07.09.2003 releast wurde. Die C Library ist für Windows als Binary erhältlich, unter Linux muss sie erst kompiliert werden. libHaru unterliegt der ZLIB/LIBPNG License, PECL/haru der PHP License. Somit steht auch hier einem kommerziellen Einsatz nichts im Wege. Haru weist insgesamt gesehen einen, im Vergleich zu FPDF, wesentlich höheren Funktionsumfang auf. So ist beispielsweise die Erzeugung von Grafiken ohne Weiteres möglich, und auch Verschlüsselung und Zugriffsbeschränkung werden größtenteils unterstützt. Auch das Font Handling läuft einfacher als bei FPDF und TCPDF, da man hier nicht erst vorhandene Schriftdateien in PHP-Schriften umwandeln muss. Näher betrachtet vermisst man neben den automatisierten Textflussoptionen jedoch auch hier einige weitere Eigenschaften. So lassen sich beispielsweise keine Tabellen erzeugen. Man kann hier lediglich selbst Hand anlegen und eine entsprechende Funktionalität implementieren. Das Farbspektrum beschränkt sich ebenfalls auf das Nötigste, hier sind nur Graustufen, RGB und CMYK verfügbar. Auch vermisst man wieder eine UTF-8-Unterstützung. Nichtsdestotrotz: Die möglichen Einsatzgebiete von Haru und FPDF sind fast deckungsgleich, wobei die technische Grundlage bei dieser Extension wesentlich sauberer ist. Wer das technische Wissen hat und sich auch nicht davor scheut, die C Library gegebenenfalls selbst zu kompilieren und natürlich auch entsprechend die Möglichkeit zur Installation auf dem Webserver hat, dem sei Haru an dieser Stelle durchaus ans Herz gelegt. Ein Tutorial zu Installation und Erweiterung fehlender Funktionen findet sich hier.

PDFlib

Der Dritte im Bunde ist ebenfalls ein alter Bekannter: PDFlib ist seit 22.09.1997 auf dem Markt. Die damit älteste Extension in diesem Artikel bietet gleichzeitig den mit Abstand größten Funktionsumfang. PDFlib ist in diesem Vergleich die einzige kostenpflichtige Software, beginnend mit 795 Euro pro Rechner für die Basisversion. PDFlib zusammen mit PDI kostet 1590 Euro, der PDFlib Personalization Server (PPS) schlägt mit 2390 Euro pro System zu Buche. Die verschiedenen Versionen, auf die ich gleich noch weiter eingehen werde, befinden sich alle in der gleichen Datei. Eine Unterscheidung des erworbenen Pakets erfolgt über den Lizenzschlüssel. Es existiert auch eine „Light“-Variante: PDFlib Lite. Diese ist aber in ihrem Funktionsumfang stark beschnitten. Für Entwicklungszwecke kann ohne Weiteres die kostenpflichtige Variante eingesetzt werden; in diesem Fall druckt PDFlib allerdings ein Wasserzeichen quer über die Seite.

In der aktuellen Version 8 unterstützt PDFlib alle PDF-Versionen von 1.3 bis 1.7ext3 (Acrobat 4 bis 9), PDF/X von Version 1a bis 5pg und PDF/A-1a und 1b. Das Schriftenmanagement ist besonders gut gelöst: Man kann prinzipiell jedes bekannte Schriftformat (Type1, TrueType, OpenType, EUDC, SING, CJK, Cmaps) ohne weitere Zwischenschritte einbinden. Im weiteren Verlauf bestehen äußerst umfangreiche Möglichkeiten der Manipulation typografischer Eigenschaften, wie Kerning, Anpassung der Unter- und Oberlängen, Wortabstand und viele mehr. Abgerundet wird das Ganze durch die Verfügbarkeit einer Unmenge an Encodings, so natürlich auch UTF-8. Es gibt mehrere Funktionen zur Textausgabe, von denen die Textflow-Funktionen am interessantesten sind. Mit diesen kann man Bereiche für Text definieren und Inhalt zuweisen. Als Rückgabe erhält man einen Wert, der aussagt, ob und wie der auszugebende Text in die Abgrenzungen gepasst hat. Für den Fall, dass der Rahmen nicht genügend Platz bietet, kann man nun in einem anderen Bereich die Textausgabe fortsetzen. Sehr spannend ist die Möglichkeit bei Textflow-Funktionen mit Makros zu arbeiten. Das funktioniert sehr einfach und selbsterklärend: Man definiert im Text oder in den Funktionsparametern die Eigenschaften der Makros und aktiviert diese einfach durch ein Tag, wie Listing 1 zeigt.

Listing 1

Max Mustermann
Musterstraße 1
12345 Musterhausen
Deutschland

Zu beachten ist hier, dass die Tags nicht wie bei XML wieder geschlossen werden müssen, sondern die Makros so lange gültig sind, bis ein anderes Makro aktiviert wurde.

Für Diagramme und ähnliches existieren jede Menge Funktionen, mit denen sich auf einfache Weise Linien, Kurven, Polygone, Kreissegmente, Kreise, Ellipsen und Rechtecke zeichnen lassen. Wer es bunt mag, hat die Qual der Wahl zwischen verschiedenen Farbräumen. Standardmäßig erwartet man natürlich Graustufen, RGB und CMYK, und man wird hier auch nicht enttäuscht. Vielmehr hat man neben selbst erstellten Füllmustern zusätzlich noch die Möglichkeit, CIE-Lab-Farben, Schmuckfarben (Pantone, HKS etc.) oder ICC-basierte Farben einzusetzen. Möchte man Bilddaten einfügen, hat man auch hier sehr viele Bildformate zur Verfügung. Die Standardformate GIF, PNG und JPEG sind selbstverständlich ebenso verfügbar wie BMP, TIFF und einige weitere. Leider werden in der Basisversion nur Bitmap-Grafiken unterstützt. Vektorbasierte Grafiken sind nur möglich, wenn man diese ins PDF-Format konvertiert und dann mittels PDI lädt. Hier wäre also definitiv noch eine Verbesserungsmöglichkeit für PDFlib gegeben.

Ein weiteres sehr nützliches Feature ist die Template-Funktion: Nehmen wir an, wir sollen einen Serienbrief erzeugen. Ein Serienbrief unterscheidet sich in der Regel nur durch die persönlichen Daten; also Adresse, Anrede und eventuell noch Kundennummern oder ähnliches. Andere Elemente, wie Logos oder Firmenanschrift, bleiben hingegen immer gleich. Bei den meisten PDF Libraries darf man nun die Logos und Texte beim Iterieren über die Datensätze jedes Mal neu anlegen, was natürlich dazu führt, dass wir viele redundante Datenobjekte im PDF speichern müssen. Dies wirkt sich wiederum massiv auf die Dateigröße aus, was nicht nur Downloadzeiten betrifft, sondern beispielsweise in der Druckvorstufe sehr viel Rechenzeit kostet. PDFlib bietet hier nun die Möglichkeit, solche Seitenelemente auf einer virtuellen Seite – eben dem Template – abzulegen und dann auf jeder Seite zu platzieren. Intern wird dann jeweils nur ein Handle des Template-Objekts erstellt und dann zum Beispiel die Logodaten nur ein einziges Mal benötigt und gespeichert. Auf jeden Fall ist die extrem gute Eignung zur Erstellung von druckfähigen Produkten zu nennen. Durch die Möglichkeit, Schmuckfarben und typische Druckformate wie TIFF verwenden zu können, fällt dies extrem leicht. Unterstützt wird das Ganze durch die Optionen, gemäß der verschiedenen PDF/X-Spezifikationen Objekte wie Schriften einzubetten. So können auch ICC-Profile, die die Farbräume der verschiedenen Geräte normativ definieren, durchgängig verwendet werden.

Der Vollständigkeit halber muss auch noch erwähnt werden, dass PDFlib viele interaktive Elemente unterstützt, wie zum Beispiel Links, Aktionen, Bemerkungen, Formularfelder, Lesezeichen, Portfolios und vieles mehr. Weiterhin können multimediale Inhalte (3-D, Video etc.) und geografische Informationen verarbeitet werden. Abschließend sei dem an PDFLib interessierten Entwickler das PDFlib Cookbook ans Herz gelegt, das eine Vielfalt an verschiedensten Beispielen anbietet. Die Beispiele sind in Java, allerdings gibt es zu den meisten Beispielen auch eine PHP-Variante.

Weiter mit: Teil 4

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 -