PDFlib oder ein einfacher PDF-Export: wann sich die Bibliothek lohnt
PDFlib ist eine Entwicklerbibliothek der PDFlib GmbH aus München, die seit 1997 am Markt ist. Sie ist weder Layoutprogramm noch Konverter: Die Anwendung beschreibt jede Seite — Text, Grafik, Bilder, Lesezeichen, Anmerkungen —, und PDFlib schreibt daraus das PDF. Der Kern ist in C und C++ geschrieben, angesprochen wird er aus PHP, Java, .NET, Python und weiteren Sprachen; bei uns fast immer aus PHP, wo PDFlib als Erweiterung geladen wird. Das bedeutet mehr Arbeit als eine HTML-Vorlage, die ein Werkzeug in ein PDF umrechnet. Dafür ist das Ergebnis vorhersehbar: Jede Zeile steht dort, wo sie stehen soll, auf der ersten Seite wie auf der letzten.
Vier Merkmale sprechen für PDFlib. Volumen: viele Dokumente in kurzer Zeit, als Hintergrundprozess auf dem Server. Präzision: Textfluss in Rahmen und Formen, Silbentrennung, Tabellen über mehrere Seiten, OpenType-Schriften mit ihren Layout-Funktionen. Standards: PDF/A für das Archiv, PDF/X für die Druckvorstufe, PDF/UA-1 für Barrierefreiheit, PDF/VT für variable Daten, ZUGFeRD und Factur-X für die E-Rechnung. Druckqualität: CMYK, ICC-Profile, Output Intents, Sonderfarben aus PANTONE und HKS. Trifft eines dieser Merkmale auf Ihr Vorhaben zu, ist PDFlib eine ernsthafte Option. Treffen zwei zu, ist es meist die richtige.
Umgekehrt gilt: Wer im Monat eine überschaubare Zahl Dokumente mit einfachem Layout erzeugt, keinen Standard erfüllen muss und das Aussehen ohnehin aus einer Web-Vorlage übernimmt, braucht keine PDFlib-Lizenz. Dann genügt eine quelloffene HTML-zu-PDF-Lösung — und die bauen wir genauso, in derselben PHP-Anwendung, mit denselben Tests. Das sagen wir im ersten Gespräch, nicht nach dem Kauf. Kommen später Anforderungen dazu, etwa die E-Rechnung oder Druckdaten für eine Druckerei, wechselt die Erzeugung auf PDFlib, und die Datenseite der Anwendung bleibt, wie sie ist. Eine Lizenz, die nichts leistet, was Sie brauchen, ist kein Qualitätsmerkmal.
PDFlib, PDFlib+PDI, PPS oder TET: welches Produkt passt
Das Basisprodukt PDFlib erzeugt PDFs von Grund auf: Seiten, Text, Grafik, Bilder aus SVG, PNG, JPEG, TIFF und weiteren Formaten, Tabellen und Textfluss. PDFlib+PDI ergänzt die PDF Import Library. Damit lassen sich vorhandene PDF-Seiten einlesen und weiterverwenden — ein Briefpapier als Hintergrund, ein Formular, das Datenblatt eines Lieferanten —, zusammenstellen, bestempeln und neu anordnen, ohne dass dabei eine PDF/A-, PDF/X- oder PDF/UA-Konformität verloren geht. Ab PDFlib+PDI ist außerdem pCOS enthalten, mit dem eine Anwendung Informationen aus PDFs abfragt. Wer Dokumente aus vorhandenen PDFs zusammensetzt, braucht PDI. Wer nur neu erzeugt, braucht es nicht.
Der PDFlib Personalization Server, kurz PPS, ist PDFlib+PDI plus Blöcke für variable Daten. In einer PDF-Vorlage werden mit dem Block Plugin für Acrobat (macOS und Windows) Bereiche festgelegt, die die Anwendung später mit Text, Bildern, SVG oder PDF-Seiten füllt; vorhandene Formularfelder lassen sich in Blöcke umwandeln. Der Vorteil liegt in der Arbeitsteilung: Die Gestaltung lebt in der Vorlage, die Logik im Code. Ändert sich das Layout, wird die Vorlage angepasst, nicht die Anwendung. Für Web-to-Print, personalisierte Werbemittel und Formulare, deren Aussehen sich öfter ändert als ihre Daten, ist PPS deshalb meist die bessere Wahl.
TET 6, das Text and Image Extraction Toolkit, arbeitet in die Gegenrichtung: Es liest Text als Unicode, Bilder und Metadaten aus vorhandenen PDFs, erkennt Tabellen und Listen und gibt das Ergebnis auf Wunsch als TETML aus, einem XML-Format — etwa für einen Suchindex oder die Weiterverarbeitung in einer Fachanwendung. Lizenziert wird jedes Produkt kommerziell, je Rechner und Betriebssystem; Entwicklungs- und Testsysteme sind inbegriffen, Support beim Hersteller gibt es optional als Jahresvertrag. Die Lizenz kaufen Sie bei der PDFlib GmbH auf Ihr Unternehmen. Wir empfehlen das kleinste Produkt, das Ihre Anforderungen trägt — wer nur Rechnungen erzeugt, braucht kein PPS.
Rechnungen, Kataloge, Serienbriefe: wo PDFlib eingesetzt wird
Seit dem 1. Januar 2025 müssen Unternehmen in Deutschland im B2B-Geschäft E-Rechnungen empfangen können. ZUGFeRD und Factur-X verbinden zwei Rechnungen in einer Datei: eine lesbare als PDF/A-3 und eine maschinenlesbare als XML, die darin eingebettet ist. PDFlib unterstützt ZUGFeRD 1.0, 2.0 und 2.1 sowie Factur-X — die komplette Erzeugung, das Anhängen der XML an vorhandene PDF/A-Dokumente und das Auslesen der XML aus eingehenden Rechnungen über pCOS. Welches ZUGFeRD-Profil Sie brauchen, bis hin zum Profil XRechnung, klären wir mit Ihrer Buchhaltung. Die eigentliche Sorgfalt gilt der Übereinstimmung: Was in der XML steht, muss in der sichtbaren Rechnung stehen, Betrag für Betrag.
Kataloge und Datenblätter entstehen aus den Daten, in denen sie ohnehin gepflegt werden: PIM, Shop, ERP oder eine eigene Datenbank. PDFlib setzt Text in Rahmen oder beliebige Formen, trennt Silben, lässt Text um Bilder fließen und baut Tabellen, die über mehrere Seiten laufen — mit Zellen, die Text, Bilder, SVG oder ganze PDF-Seiten enthalten. Schriften kommen als TrueType oder OpenType mit Layout-Funktionen, auch als WOFF und WOFF2; Fallback-Schriften fangen Zeichen ab, die der Hausschrift fehlen. Arabisch, Hebräisch, Thai und Devanagari sind abgedeckt. Ändert sich ein Preis, wird der Katalog neu erzeugt, nicht korrigiert.
Serien- und Transaktionsdokumente sind die dritte große Gruppe: Serienbriefe, Konto- und Transaktionsauszüge, Verträge, personalisiertes Werbematerial. Für variable Druckdaten gibt es PDF/VT-1, für das Archiv PDF/A-1, PDF/A-2 und PDF/A-3. Erzeugt wird als Hintergrundprozess auf dem Server, nicht auf Knopfdruck im Browser: Jeder Lauf wird protokolliert, ein abgebrochener Lauf setzt dort wieder auf, wo er stand, und jedes Dokument lässt sich auf den Datensatz zurückführen, aus dem es entstanden ist. Wer zum Monatsende einen großen Lauf verschickt, braucht diese Nachvollziehbarkeit dringender als ein schöneres Layout.
Druckdaten, Barrierefreiheit, Prüfung: Standards, die nachweisbar sein müssen
Für die Druckvorstufe erzeugt PDFlib PDF/X-3, PDF/X-4, PDF/X-4p und PDF/X-5n, mit Output Intent und ICC-Profilen, in Graustufen, RGB, CMYK oder CIE L*a*b*, mit Sonderfarben aus PANTONE und HKS und mit DeviceN. Das ist die Grundlage für Web-to-Print: Ihre Kundin gestaltet Visitenkarte, Flyer oder Schild im Browser, eine PPS-Vorlage nimmt die Eingaben auf, und Vorschau und Druckdatei entstehen aus derselben Quelle. Was am Bildschirm zu sehen war, landet so auf dem Bogen. Welches PDF/X-Format und welches Ausgabeprofil gelten, gibt die Druckerei vor — diese Vorgabe steht vor der ersten Zeile Code.
Barrierefreie PDFs nach PDF/UA-1 (ISO 14289-1) sind getaggte PDFs: Überschriften, Absätze, Listen, Tabellen und Bilder sind als Struktur ausgezeichnet, die Lesereihenfolge ist festgelegt, Bilder tragen Alternativtexte, die Sprache ist angegeben. PDFlib erzeugt die Tags für Tabellen und für Artefakte, also Inhalte ohne Bedeutung für das Vorlesen, automatisch; die übrige Struktur liefert die Anwendung. Bei erzeugten Dokumenten ist das ein Vorteil: Die Struktur wird einmal in der Vorlage gebaut und gilt für jedes Dokument, statt jedes PDF einzeln nachzubessern. Ob für Ihre Dokumente eine gesetzliche Pflicht gilt — etwa aus dem Barrierefreiheitsstärkungsgesetz (BFSG) oder, für öffentliche Stellen des Bundes, aus der Barrierefreie-Informationstechnik-Verordnung (BITV 2.0) —, bewertet im Einzelfall eine Anwältin oder ein Anwalt.
Eingehende PDFs prüft eine Anwendung mit pCOS, bevor sie sie weiterverarbeitet: Seitenzahl, Metadaten, verwendete Schriften, ICC-Profile, eingebettete Dateien. Ein Upload-Portal für Druckdaten weist eine unpassende Datei so sofort zurück, statt dass der Fehler erst in der Druckvorstufe auffällt; aus eingehenden ZUGFeRD-Rechnungen liest pCOS die XML. TET extrahiert Text und Bilder für Suchindizes und Fachanwendungen. Für alles, was wir erzeugen, gilt eine Regel: Jeder Standard wird mit unabhängigen Prüfwerkzeugen validiert, nicht nur auf das Wort der Bibliothek hin, und PDF/UA zusätzlich von Hand mit einem Screenreader. Ein PDF, das einen Standard nur behauptet, fällt bei der ersten Prüfung auf — besser bei uns als beim Empfänger.
Integration und Betrieb: PHP, Symfony, TYPO3, Shopware
In PHP wird PDFlib als Erweiterung geladen, die zur PHP-Version auf dem Server passen muss. Wir bauen die Erzeugung dort ein, wo die Daten liegen: in eigene PHP-Anwendungen auf Symfony oder Laminas, als TYPO3-Extension, die Datenblätter aus Datensätzen erzeugt, oder als Shopware-Plugin, das Produktdatenblätter oder Geschäftsdokumente direkt aus dem Shop heraus setzt. Die Erzeugung bekommt dabei ein eigenes Modul mit klarer Grenze — Daten hinein, PDF heraus —, damit Vorlagen und Logik getrennt testbar bleiben. Große Läufe gehen in eine Warteschlange und laufen im Hintergrund, nicht im Seitenaufruf. So bleibt die Website schnell, während nebenan der Monatslauf rechnet.
PDFlib läuft serverseitig, und damit gehört der Betrieb zum Projekt. Bei Sharpness laufen PDFlib-Anwendungen auf eigenen Proxmox-PVE-Clustern im Hetzner-Rechenzentrum Falkenstein, jede Kundenumgebung für sich; PHP-Version, PDFlib-Erweiterung, Schriften und ICC-Profile werden dort gemeinsam gepflegt. Die Wartung läuft mit Service-Level-Vereinbarung — 24, 8 oder 4 Stunden Reaktionszeit, als Monatspauschale netto; ohne Vereinbarung bearbeiten wir Anfragen innerhalb von 48 Stunden in unseren Geschäftszeiten Mo–Do 9:00–16:00 Uhr, Fr 9:00–13:00 Uhr. Rufbereitschaft außerhalb dieser Zeiten gibt es nur mit SLA. Updates auf neue PDFlib-Versionen wie PDFlib 11 testen wir mit denselben Daten in alter und neuer Fassung und vergleichen die Ergebnisse, bevor umgestellt wird.
Kalkuliert wird in Personentagen, mit getrennten Posten für Musterdokument, Vorlagen, Implementierung, Validierung und Betrieb. Die PDFlib-Lizenz ist kein Posten von uns: Sie kaufen sie beim Hersteller. Den Stundensatz und einen Preis nennen wir auf Anfrage und nach der Einordnung, nicht am Telefon. Der Quellcode gehört Ihnen und liegt in Ihrem Git-Repository, die PDFlib-Lizenz läuft auf Ihr Unternehmen. Bestehende PDFlib-Anwendungen übernehmen wir mit einer Bestandsaufnahme — PHP-Stand, PDFlib-Version, Vorlagen, Schriften, Abhängigkeiten — und heben sie danach auf ein aktuelles PHP und PDFlib 11. Betrieb und Weiterentwicklung liegen dann in einer Hand.