Technologie · Bibliothek

PDFlib — PDFs aus Daten, nach Standard und in Druckqualität

PDFlib ist die Bibliothek, zu der wir greifen, wenn ein PDF-Export nicht mehr genügt: bei großen Mengen, exakter Typografie, Druckdaten nach PDF/X, Archiv-PDFs nach PDF/A, barrierefreien PDFs nach PDF/UA und Rechnungen mit ZUGFeRD. Wir arbeiten seit mehr als 15 Jahren damit, fast immer aus PHP heraus, und betreiben die Anwendungen auf unseren eigenen Servern in Deutschland. Einsatzfelder, Ablauf und Betrieb im Detail beschreibt unsere Seite zur PDFlib-Entwicklung.

Seit mehr als 15 Jahren im Einsatz

Was ist PDFlib?

PDFlib ist eine Entwicklerbibliothek der PDFlib GmbH aus München: Eine Anwendung beschreibt Seite für Seite Text, Grafik und Bilder, PDFlib schreibt daraus das PDF — auf dem Server, ohne Layoutprogramm.

Was PDFlib ist und kann

PDFlib ist seit 1997 am Markt; der Hersteller, die PDFlib GmbH in München, war 2006 Gründungsmitglied der PDF Association. Der Kern ist in C und C++ geschrieben und lässt sich aus C, C++, Java, .NET, Objective-C, Perl, PHP, Python, RPG und Ruby ansprechen, unter Windows, macOS, Linux und Unix sowie auf IBM System i und IBM Z. Erzeugt werden PDF 1.4 bis 1.7 und PDF 2.0 — mit Unicode, TrueType- und OpenType-Schriften, Textfluss mit Silbentrennung, Tabellen über mehrere Seiten, SVG und den gängigen Bildformaten. Aktuell ist PDFlib 11.

Die Bibliothek gibt es in Stufen. PDFlib erzeugt PDFs von Grund auf. PDFlib+PDI importiert zusätzlich vorhandene PDF-Seiten und enthält pCOS, mit dem sich Metadaten, Schriften oder eingebettete Dateien abfragen lassen. Der PDFlib Personalization Server (PPS) ergänzt Blöcke, die in einer Acrobat-Vorlage angelegt und per Programm gefüllt werden. TET 6 arbeitet in die Gegenrichtung und extrahiert Text, Bilder und Metadaten. An Standards deckt PDFlib PDF/A-1, -2 und -3, PDF/X-3, PDF/X-4, PDF/X-4p und PDF/X-5n, PDF/UA-1, PDF/VT-1 sowie ZUGFeRD und Factur-X ab.

Wie wir mit PDFlib arbeiten

Bei uns läuft PDFlib fast immer in PHP, geladen als Erweiterung — in eigenen Anwendungen auf Symfony oder Laminas, in TYPO3-Extensions und in Shopware-Plugins. Die Erzeugung bekommt ein eigenes Modul: Daten hinein, PDF heraus. Wo sich das Layout öfter ändert als die Logik, arbeiten wir mit PPS-Vorlagen, damit eine Gestaltungsänderung keine Programmänderung nach sich zieht. Große Läufe gehen in den Hintergrund und werden protokolliert, damit sich jedes Dokument auf seinen Datensatz zurückführen lässt.

Ein Standard gilt bei uns erst als erfüllt, wenn ein unabhängiges Prüfwerkzeug das bestätigt; barrierefreie PDFs testen wir zusätzlich mit dem Screenreader. Betrieben werden die Anwendungen auf unseren eigenen Servern in Deutschland, wo PHP-Version, PDFlib-Erweiterung, Schriften und Ausgabeprofile zusammen gepflegt werden — mit Wartung und SLA und mit Updates auf neue PDFlib-Versionen, die wir vorher gegen dieselben Testdaten laufen lassen. Der Quellcode gehört Ihnen, die PDFlib-Lizenz läuft auf Ihr Unternehmen.

Grenzen: wann PDFlib zu viel ist

PDFlib ist kommerziell lizenziert, je Rechner und Betriebssystem, und es ist eine Bibliothek, kein Gestaltungswerkzeug: Jedes Layout wird programmiert oder als Vorlage gebaut. Für eine überschaubare Zahl einfacher Dokumente ohne Standardvorgabe ist das mehr, als die Aufgabe verlangt. Dann setzen wir eine quelloffene HTML-zu-PDF-Lösung ein — in derselben PHP-Anwendung, mit denselben Tests und ohne Lizenzkosten für PDFlib. Wächst die Anforderung später, wechselt nur die Erzeugung.

Die zweite Grenze betrifft die Erwartung. PDFlib erzeugt ein Dokument nach PDF/UA-1, aber die Struktur — Überschriften, Lesereihenfolge, Alternativtexte — muss die Anwendung liefern. Dasselbe gilt für ZUGFeRD: Die Bibliothek bettet die XML normgerecht in ein PDF/A-3 ein, für richtige Rechnungsdaten sorgt Ihr System. Wer das vor dem Projekt weiß, plant die Datenseite von Anfang an mit, statt sie am Ende nachzureichen.

Häufige Fragen

Was ist der Unterschied zwischen PDFlib, PDFlib+PDI und PPS?

PDFlib erzeugt PDFs von Grund auf. PDFlib+PDI kann zusätzlich vorhandene PDF-Seiten importieren — etwa Briefpapier oder Formulare — und enthält pCOS zum Abfragen von PDF-Informationen. PPS baut darauf auf und ergänzt Blöcke für variable Daten, die in einer Vorlage mit dem Block Plugin für Acrobat angelegt werden. Welche Stufe Sie brauchen, ergibt sich aus Ihren Dokumenten; wir empfehlen die kleinste, die trägt.

Welche PDF-Standards unterstützt PDFlib?

PDFlib erzeugt PDF/A-1, -2 und -3 für die Archivierung, PDF/X-3, PDF/X-4, PDF/X-4p und PDF/X-5n für die Druckvorstufe, PDF/UA-1 für barrierefreie Dokumente und PDF/VT-1 für variable Druckdaten. Dazu kommen ZUGFeRD 1.0, 2.0 und 2.1 sowie Factur-X für E-Rechnungen, jeweils als PDF/A-3 mit eingebetteter XML. Ob ein erzeugtes Dokument den Standard tatsächlich erfüllt, prüfen wir mit unabhängigen Werkzeugen.

Läuft PDFlib auch in TYPO3 und Shopware?

Ja. PDFlib wird in PHP als Erweiterung geladen und steht damit jeder PHP-Anwendung zur Verfügung, TYPO3 und Shopware 6 eingeschlossen. Wir bauen die Erzeugung als TYPO3-Extension, die etwa Datenblätter aus Datensätzen setzt, oder als Shopware-Plugin, das Dokumente aus dem Shop heraus erzeugt. Voraussetzung ist ein Server, auf dem die Erweiterung zur PHP-Version passt; bei uns sind das eigene Server in Deutschland.

Brauchen wir eine eigene PDFlib-Lizenz?

Ja. PDFlib ist kommerziell lizenziert, je Rechner und Betriebssystem; Entwicklungs- und Testsysteme sind inbegriffen, Herstellersupport ist optional jährlich buchbar. Die Lizenz kaufen Sie bei der PDFlib GmbH auf Ihr Unternehmen — was Ihnen gehört, läuft auf Sie, wie der Quellcode in Ihrem Repository. Vor dem Kauf lässt sich mit der voll funktionsfähigen Evaluierungsversion ein Musterdokument aus echten Daten bauen.

PDFlib im Bestand oder im Neubau?

Wir übernehmen auch Systeme, die woanders gebaut wurden — nach einem Blick in Code und Hosting.

Womit wir sonst arbeiten

Anrufen Projekt anfragen