© VectorMine/Shutterstock.com
Erstellen von PDF-Dokumenten mit PHP

PDFrePRO für PHP als PDF SaaS


Dynamisierte, also mit Daten angereicherte PDF-Dokumente aus Onlinelösungen heraus zu generieren ist heute immer öfter Voraussetzung für einen vollständigen Workflow. In diesem Artikel erfahren Sie, wie Sie WYSIWYG-Layouts per Browser erstellen und die PDF-Generierung per RESTful API gelingt.

Für die Generierung von dynamisierten PDFs steht Entwicklern komplexer Anwendungen oder Onlineportalen oft nur ein einziges Standardlayout pro Dokumentenart zur Verfügung, das noch dazu nur durch Softwareanpassungen, verbunden mit hohem Aufwand, angeglichen werden kann. Als Entwickler und Betreiber einer Software sollten Sie Ihren B2B-Kunden idealerweise aber die Möglichkeit bieten, ihre PDF-Layouts selbst zu entwerfen. So könnte sich z. B. ein Autohaus alle Printouts gemäß der eigenen CI kreieren und Datenfelder, die durch die jeweiligen Onlinelösungen im Rahmen der üblichen Verarbeitung bereitgestellt werden, im Layout frei platzieren. Ihr Kunde (hier also das Autohaus) stellt damit dem eigenen Endkunden (hier z. B. den Autokäufer) wirklich individualisierte Dokumente zur Verfügung, sei es als PDF im E-Mail-Anhang, in Form eines gedruckten Angebotes, eines Exposés oder eines technischen Datenblattes, bis hin zum ausgefüllten Kaufvertrag. Dabei liefert die B2B-Anwendung die für den jeweiligen Prozess notwendigen Daten, das Aussehen des PDF bestimmt aber das Autohaus selbst. Sobald ein Template durch das Autohaus entworfen und zentral gespeichert wurde, kann es von Ihrer Software als Printlayout durch das Beimischen von Nutzdaten on the fly verwendet und ein PDF-Dokument als Ergebnis generiert werden. Als praktikable Lösung beider Anforderungen (WYSIWYG-Layouts per Browser erstellen und die PDF-Generierung per RESTful API) wird im Folgenden die SaaS-Lösung PDFrePRO vorgestellt. Einen Überblick über die Funktionsweise des Tools zeigt die Abbildung 1.

richter_pdf_1.tif_fmt1.jpgAbb. 1: Beteiligte Komponenten: Endkunde, Ihr Portal und PDFrePRO als SaaS

Wie alles begann

Die Idee zur dynamischen Generierung von Listen und Dokumenten wurde bei uns schon vor vielen Jahren geboren, da die Anforderungen an individuelle Layouts seitens unserer Kunden immer größer wurden. Dabei ging es tatsächlich nicht mehr um Print-outs, die von allen Nutzern gleichermaßen genutzt werden konnten und deren Individualisierungsgrad aus fachlicher Sicht unnötig war, sondern um PDF-Dokumente, die zwar eine gleiche Datenbasis hatten, aber auf Wunsch des B2B-Kunden unbedingt der Firmen-CI folgen mussten. Zunächst haben wir als Softwareunternehmen bezahlte Aufträge zur Anpassung von Printlayouts im B2B-Portal unseres Kunden, jeweils im kleinen Rahmen angenommen. Spezielle Weichen im Code und Konfigurationstabellen im PHP Backend waren im beschränkten Umfang und für große Kunden noch machbar, aber technisch nicht elegant und auf Dauer nicht mehr ordentlich zu warten. Die Nachfrage nach Anpassungen von anderen Nutzern wuchs ständig, jeder wollte seine eigenen CI-Wünsche umgesetzt wissen. Allerdings waren die Anpassungen von Printlayouts auf Dauer weder eine adäquate Herausforderung für einen Softwareentwickler noch konnten wir uns auf unser Kerngeschäft konzentrieren, nämlich anspruchsvolle Software zu entwickeln. Der Zeitaufwand der Anpassungen in der Breite war einfach zu groß, um unsere damals verwendete Lösung auf Dauer professionell zu pflegen.

Zunächst entwickelten wir für den Eigenbedarf, also für das Entwerfen und Anpassen von Templates „im Auftrag“, eine browserbasierte Lösung zur schnelleren Anpassung gewisser Standardlayouts innerhalb der bestehenden B2B-Kundenlösung, die zumindest die Zeit bis zur Auslieferung von Sonderwünschen verkürzte und das notwendige Know-how vom Programmierer auf unseren L2-Support verlagerte, aber bezüglich Bedienbarkeit und Funktionalität immer noch sehr zu wünschen übrigließ. Zu dieser Zeit waren aber auch die Browser kaum in der Lage, komfortable WYSIWYG-Ansätze zu unterstützen. So ging es vor mehr als 15 Jahren hauptsächlich um X- und Y-Koordinaten von Texten und Feldplatzhaltern, Umbrüche und Logopositionen. Merkmale eines so entstandenen einfachen Layouts wurden von unserem damals noch in PHP 3, PHP 4 und PHP 5.x entwickelten Backend und im Zusammenspiel mit der PDFlib [1] aber trotzdem problemlos und robust in das PDF-Format umgesetzt. Das Print-Backend sowie der WYSIWYG-Editor (letzterer damals tatsächlich auf den Microsoft IE begrenzt) wurden per SOAP initiiert und waren sehr verlässlich, bis die Anforderungen weiter stiegen. Grenzen der Variabilität waren in unserer Version 1.x beispielsweise durch fehlende Container für Listdaten gegeben. Auflistungen wiederkehrender Elemente wurden durch kommaseparierte angelieferte Daten erreicht, eine Formatierung dieser Auflistung war jedoch nur durch uns als Programmierer möglich. Bestimmte vorgefertigte sog. Blöcke bestimmten das Aussehen, welches dann fix zu verwenden war.

Das Entwerfen von PDF-Layouts sollte zukünftig an weitere Benutzergruppen abgegeben werden, d. h., auch der Helpdesk eines Portalbetreibers bis hin zu Power-Usern der Endkunden selbst sollten Templates anpassen können, Programmierer sollten – bis auf die einmalige Anbindung der Schnittstelle – nicht mehr grundsätzlich beteiligt werden müssen. Moderne Browser bieten seit einigen Jahren fast dieselben Möglichkeiten wie native Anwendungen auf dem Desktop. Unser eingangs beschriebener WYSIWYG-Editor der ersten Generation sollte komplett neu entwickelt werden. Dazu haben wir uns 2014 für AngularJS (ja, richtig: 1.x) am Frontend entschieden. Das führte zu einem gänzlich neuen Bedienerlebnis für unsere Kunden, das Gestalten von PDF-Templates in dieser Form war nicht mehr wegzudenken. Der spät...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang