Facebook
Twitter
Google+
Kommentare
0

04.12. PDF nicht nur mit PHP

Eine Suche nach „php pdf“ bei der Suchmaschine meiner Wahl ergibt eine Vielzahl an Tutorials, Blog-Einträgen und natürlich auch Klassen und Bibliotheken. In diesem Blog-Artikel möchte ich einen knappen Überblick über einige der gebräuchlichsten PHP-Tools zur PDF-Generierung geben und Alternativen zeigen die keine Programmierung erfordern.

PHP: PDF – Manual

Das erste Suchergebnis führt uns auf die PHP Manual Seite. Das braucht Ihr Euch nicht anzuschauen weil es einfach nur verwirrend und unvollständig ist. Dahinter steht eine PECL Erweiterung, welche PHP einen Wrapper zur kommerziellen PDFlib bietet.

PDFlib

Ist in Version 8 verfügbar und unterstützt laut Hersteller verschiedene Features aus Acrobat 9, der PDF-Spezifikation 1.7 extension level 3. Etwas ausführlicher betrachtet bedeutet das:

  • Es kann über Verweise auf Ressourcen in externen PDF-Dokumenten zugegriffen werden.
  • Der Inhalt kann in durch den Benutzer auswählbare Ebenen aufgeteilt sein welche sich gruppieren
    lassen um zum Beispiel in Sprachspezifischen Ebenen ein und dieselbe Bildebene zu zeigen.
  • Bilder, Seiten und Teile von Seiten können mit Georeferenzen ausgestattet werden.
  • AES-256 Verschlüsselung und Unicode Passwörter werden unterstützt.

Im Gegensatz zum PHP:PDF – Manual bietet sich auf der Herstellerseite ein Haufen an Dokumentation. Dort findet Ihr neben einem Installations- und Konfigurations-Howto für PHP, eine 256-seitige PDFlib API Dokumentation und ein 312-seitiges PDFlib Tutorial.

Schon alleine die Länge der API Dokumentation lässt darauf schließen das die PDFlib umfangreiche Funktionen zum gestalten von PDF Dokumenten mit sich bringt. Auszugsweise, wie auch unter „What’s new in PDFlib 8?“ nachzulesen:

  • Bidirektionale Schriftformatierung für internationale Sprachen und Fallback Fonts.
  • Unterstützung OpenType spezifischer Font-Features
  • Textumbruch um Bilder, in Pfaden sowie Text an Pfaden entlang
  • Transparenz in TIFF und PNG Bildern
  • Interaktive Formulare
  • Druckvorlagen Farbmanagement PDF/X-4 und PDF/X-5

PDFlib ist ein renommiertes Produkt und auch in PHP können damit professionelle PDF Dokumente erstellt werden.

Zend Framework PDF

Wer etwas weniger komplexe Ansprüche an die PDF-Generierung stellt ist auch mit dem Zend_PDF Modul des unter OpenSource Lizenz veröffentlichten Zend Frameworks gut beraten.

  • Laden von PDF Dokumenten (Acrobat 5, Spezifikation 1.4)
  • Versionsverwaltung: Laden von Versionen, Rollback nach Änderung
  • Schreiben oder Ausgeben und diese Vorgänge auf die geänderten Stellen beschränken
  • Seiten als Vorlagen verwenden, Seiten zu einem Dokument hinzufügen oder entfernen
  • Einfache Vektorgrafikelemente
  • Seitentransformationen (Drehen, Zoomen)
  • 14 gebrauchsfertige „PDF-Fonts“, Unterstützung von TrueType Fonts
  • Unterstützung von Sprungzielen, Lesezeichen-Menüs, Anhängen und Aktionen
  • Unterstützung von Dokument Information und Metadaten


Das erstellen und Laden von PDF Dokumenten geht dank der durchdachten API sehr einfach von statten. Einzig den automatisierten Textumbruch mag man vermissen. Zwar kann man sich anhand der API die Weiten der einzelnen Zeichen berechnen lassen, das erscheint dann aber doch etwas aufwendig zu sein für jedes Zeichen eines Textes.

Verschiedene Typen von Anhängen und Aktionen, sofern noch nicht in Zend_PDF enthalten, lassen sich nach Lektüre der gesuchten Funktionalität in der 980-seitigen Adobe PDF Reference relativ einfach und schnell integrieren.

FPDF

Verspricht High-Level Funktionen und steht auch unter OpenSource Lizenz zum Download bereit. Ebenso wie bei Zend_PDF werden PDF-Dokumente mit FPDF nur durch Einsatz von PHP generiert und es ist keine weitere Bibliothek notwendig.

  • Auswahl der Maßeinheit, Seitenformat und -ränder
  • Seitenkopf- und Fußzeilen Verwaltung
  • Automatisierter Seitenumbruch, Zeilenumbruch und Textausrichtung

bietet FPDF unter anderem und füllt damit die Lücke in Bezug auf Automation der Textgestaltung. Es gibt FPDF Tutorials für verschiedene Anwendungsfälle und eine überschaubare FPDF API Dokumentation.
Anhand einer Extension FPDI ist es möglich Seiten aus anderen PDF-Dokumenten auszulesen und in das zu erstellende Dokument zu importieren.

Dazu gibt es auch noch eine Menge an FPDF Scripts die die Funktionalität um viele interessante Features wie Barcodes, SVG Templates bis hin zu Formularausfüllung erweitern.

Prince XML

ist eine kommerzielle aber im Privatgebrauch kostenfreie Lösung zum erstellen von PDF-Dokumenten aus XML oder HTML Quellen mithilfe gängiger CSS 2, 2.1 und 3 Eigenschaften und Selektoren sowie eigenen CSS Erweiterungen. Prince misst sich mit den gängigen Browsern im bewältigen des Acid2 Tests und bewirbt:

  • (X)(HT)ML, SVG, CSS, JPEG, PNG, TIFF, JavaScript / ECMAScript
  • Seitenkopf- und Fußzeilen, Seitennummerierung sowie Duplex drucken.
  • Mehrspalten Layouts, fließende und positionierte Blöcke
  • Verweise, Sprungziele, PDF-Metadaten und Anhänge
  • Verschlüsselung und Dokumenten Zugriffschutz

Neben dem Kommandozeilenprogramm gibt es auch für PHP eine Wrapperklasse und unter Windows gibt es sogar eine GUI zum bedienen des Programms. Die Dokumentation ist ausführlich und übersichtlich aufgebaut.

Eine schöne Lösung zum erstellen von PDF-Dokumenten wenn man sich nicht direkt mit der programmatischen Erstellung von PDF-Dokumenten beschäftigen möchte.

Online Service

Des weiteren gibt es unzählige von kostenpflichtigen und kostenfreien Online-Services wie zum Beispiel pdfcrowd das in der Lage ist HTML-Seiten von einer angegebenen Url oder auch mit einem WYSIWYG Editor erstelltes HTML-Dokument als PDF auszugeben. In einer kostenpflichtigen Version lassen sich dann auch noch verschiedene Optionen zur Konvertierung angeben.

Mit cometdocs lassen sich über 50 Dateiformate in andere Formate konvertieren. Unter anderen mit dabei Word nach PDF, HTML nach PDF und sogar Excel nach PDF.

Über den Autor

Mayflower Blog

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen