lorempdf.com - Schnell und einfach Test-PDF erstellen

Die besten Projekte sind vermutlich immer die, die auch irgendwie aus Eigennutz entstehen. Zumindest ist das bei meiner neuesten kleinen Bastelei teilweise der Fall. Auch wenn der “das wollte ich schon immer mal ausprobieren”-Teil wieder einmal überwiegt.

Bei der Arbeit benötige ich immer mal wieder Testdateien um ganze Workflows oder auch nur einzelne Prozessschritte zu testen. Aus diversen Gründen will man für sowas nicht unbedingt reale Kundendaten nehmen, also wird öfters mal InDesign gestartet und ein PDF mit irgendeinem Text oder Bild erstellt. Das braucht aber natürlich jedes Mal seine Zeit.

Um diesen Prozess zu vereinfachen, habe ich am Wochenende endlich lorempdf.com fertiggestellt. Das war jetzt eine ganze Zeit schon zu ca. 90% fertiggestellt, aber das Umschalten der App in den Produktivmodus bei Unsplash stand noch aus. Das habe ich erledigt und damit kann das Ganze jetzt aktiv genutzt werden.

Was macht das?

Ganz im Sinne des weltberühmten “Lorem Ipsum”-Blindtextes, erzeugt dieser kleine Service PDF-Dateien ohne wirklichen Inhalt. Blind-PDFs, wenn man so möchte. Dazu wird ein PDF-Dokument in der gewünschten Größe und mit der gewünschten Seitenanzahl angelegt und zufällig mit Bildern von Unsplash gefüllt. Das Endergebnis kann man dann verwenden, wie auch immer es in den eigenen Workflow passt.

Wie funktioniert das?

Zunächst prüft dieser kleine Service, ob alle drei Parameter in der URL gesetzt und innerhalb des gültigen Rahmens sind. Dabei gibt der erste Wert die Breite in mm an, der zweite die Höhe in mm, der dritte die Seitenzahl des erzeugten PDFs.

Gültige Werte sind 1 bis 1000 für Breite und Höhe und 1 bis 100 für die Seitenzahl. Das ist für den Moment relativ zufällig gewählt, sollte jemand mit diesen Werten an seine Grenzen stoßen, dann gerne melden und ich erhöhe das.

Passen diese Werte wird mittels PDFlib ein neues, leeres PDF erzeugt. Über die API von Unsplash wird dann eine zufällige Bilddatei angefordert, die dem Seitenverhältnis des PDF entspricht. Diese wird temporär zwischengespeichert, in das Endformat skaliert und im PDF platziert. Schließlich kommen noch Overlays mit Informationen zum Fotografen auf das PDF, bevor es finalisiert und an den Browser geschickt wird.

Etwaige Fehler erzeugen entsprechende Meldungen, die man verarbeiten und darauf entsprechend reagieren kann.

Warum PDFlib?

In der Druck- und Medienindustrie haben wir zwar, gerade im Bereich der Automatisierungslösungen, noch leistungsfähigere PDF-Generatoren/Manipulatoren (pdfToolbox/pdfChip von Callas zum Beispiel), aber die PDFlib hat den großen Vorteil, dass man sie auch auf relativ einfachen Webservern ausführen und über PHP nutzen kann.

Hosteurope hat das PHP-Modul für die PDFlib auch in vielen seiner kleineren Tarife integriert, so dass man da ohne großen Aufwand PDF-Dateien erzeugen kann. Aber die Installation bzw. Integration eines PHP-Moduls sollte für einen Serveradministrator auch kein allzu großes Problem darstellen. Ich hab damit zugegebenermaßen zunächst etwas kämpfen müssen, aber jeder fängt mal klein an…

PDFlib ist übrigens auch die Technologie die im Hintergrund Web2Print-Systeme wie printQ von Cloudlab antreibt, oder mit der ich seinerzeit bei Longo eine Anwendung zur Erstellung von Labels für mymuesli umgesetzt habe. (Den Beitrag gibt es anscheinend nur noch in der Wayback Machine, der Blog ist irgendwie defekt.)

Kurzum: PDFlib ist kein Unbekannter, wenn es um die automatisierte Erzeugung von PDF-Dateien geht. Und da ich mich damit einigermaßen auskenne, lag es nahe, dass auch für diese Bastelei einzusetzen.

Was geht noch besser?

Einige Verzögerung bringt das Abrufen eines Bildes von Unsplash mit sich. Um hochauflösende Daten in den PDFs unterzubringen, ruft das Script die größtmögliche Version des Bildes vom Server ab. Das ist gut für die Qualität aber schlecht für die Ladezeit.

Denkbar wäre es, die Bilder zwischenzuspeichern, allerdings hat es auch einen gewissen Charme, dass jeder Aufruf des Generators ein anderes, zufälliges Motiv zurückliefert. Cachen der Ergebnisse wäre also eventuell kontraproduktiv.

Ansonsten sind sicher PDF-seitig noch ein paar Spielereien denkbar. Verschiedene Seitengrößen pro Seite, wechselnde Inhalte, gezielt erzeugte Fehler, verschiedene PDF-Standards, die Liste ist lang.

Aber da es in der jetzigen Form insbesondere meine Ansprüche erfüllt, bräuchte ich da schon Feedback von außen was etwaige Featurewünsche angeht.

Wie immer: Viel Spaß damit und ich freue mich über jegliches Feedback.