Raketeninspektor: Ergebnisse aller Lösungen unterscheiden sich

Beitrag lesen

Er sucht … nicht Deine Lösung.

Nunja, ich hatte zwei Vorschläge gemacht:

  1. pageres (node.js) - Erzeugt ein Bildschirmfoto mit Hilfe eines headless aufgerufenen chromium. Vorteil: Kann an HTML, CSS, sogar Javascript, was ein Browser kann. Man kann das Format des Bildschirmfotos (durch Angabe der Größe des Ports) frei bestimmen. Nachteil: Das erzeugte PDF ist nicht durchsuchbar. Verwendung: Wenn ich keinen Einfluss auf die Seiten bzw. deren Quelltext habe und ein garantiert anständiges Ergebnis mit der Wiedergabe dessen haben will, was ein Benutzer am Bildschirm sieht, welches nicht durchsuchbar sein muss und dessen Dateigröße auch mal 50 oder 2MB (Denken wir an Hintergrundbilder auf der fremden Webseite) betragen darf, dann wäre das mein Mittel der Wahl. Es versagt aber, wenn sich z.B. diese neumodische Cookie-Abfrage in den Vordergrund drängelt. Javascript ist, so scheints, nicht abstellbar und man müsste also das Cookie herausfinden und setzen.

  2. LaTeX. Verwendung: Wenn ich immer die gleichen - eigenen - Seite aus einer Datenbank (aus Daten) mit einer begrenzten Anzahl von Strukturen erzeugen und ein optimales Ergebnis mit allen Vorteilen eines PDF haben will, welches also auch durchsuchbar sein soll und dessen Dateigröße mininimal sein soll, dann wäre das Erzeugen eines PDF aus einer tex-Vorlage mein Mittel der Wahl.

Und hier schreibe ich mal komprimiert hin, warum ich diese Vorschläge gemacht habe:

  • Habe ich - weil es fremde Webseiten sind - keinen Einfluss auf das in den Webseiten enthaltene HTML, CSS und Javascript, dann bringen alle mir bekannten Lösungsansätze, bei denen versucht wird, PDFs direkt aus HTML und CSS von fremden Webseiten erzeugen, schon aus technischen (also zwingenden!) Gründen quasi nicht vorhersagbare und in vielen Fällen sehr schlechte Ergebnisse.

  • Das von Gunnar vorgeschlagene wkhtml benutzt ebenfalls einen headless aufgerufenen Webbrowser (libqt5webkit5 +Abhängigkeiten werden installiert). Das intern via Postscript-Treiber „gedruckte“ und „nicht wirklich“ durchsuchbare (ab dem 3. Zeichen kommt „nicht gefunden“) PDF basiert, wenn im CSS vorgesehen, auf der Druckversion der Seite (was nicht „schlecht“ ist, was man aber nicht immer so will) - und ist auch recht groß. Anders als bei pageres führt die genutzte webkitengine Javascript nur auf Anweisung aus. CSS wird oft ganz ignoriert - möglicherweise dann, wenn es keine Anweisungen für den Druck enthält. Und es verteilt auch Zeilen auf zwei Seiten:

wkhtml verteilt Zeilen auf zwei Seiten

Summa summarum:

Anders ausgedrückt hat jede der von mir untersuchten Lösungen Vor- und Nachteile also auch Grenzen…