// HEISE ONLINE — LINUX & OPEN SOURCE
Aus HTML und Word mach PDF: PDF-Generator Gotenberg 9 komplett umgebaut
Gotenberg 9 ersetzt externe PDF-Tools durch die eigene Engine litho, bringt flexible Pipelines und modernisiert die LibreOffice-Anbindung.
This article is also available in
English.
It was translated with technical assistance and editorially reviewed before publication.
Version 9.0.0 von Gotenberg ist erschienen, kurz darauf folgte bereits Version 9.1.0. Die PDF-API erhält eine eigene Engine für die PDF-Bearbeitung, Verarbeitungsschritte in frei wählbarer Reihenfolge und eine neue LibreOffice-Anbindung. Der Umstieg von Version 8 erfordert Änderungen an API-Aufrufen und Konfiguration.
Mit Gotenberg können Entwickler PDF-Erzeugung und -Bearbeitung in ihre Anwendungen einbinden. Die quelloffene, als Docker-Container verfügbare API wandelt Webseiten, HTML, Markdown und Office-Dokumente in PDFs um. Für Webinhalte nutzt sie Chromium, für Office-Dateien LibreOffice.
Die in Go geschriebene PDF-Engine litho ersetzt pdfcpu, QPDF, pdftk und ExifTool. Sie läuft direkt im Gotenberg-Prozess. Die neue Engine signiert Dokumente, versieht sie mit Zeitstempeln und rendert Seiten als PNG oder JPEG. Beim Schwärzen entfernt sie die betroffenen Inhalte aus der Datei, statt sie nur in der Anzeige zu verdecken. Außerdem kann sie Formulare ausfüllen, Formularfelder in statische Seiteninhalte (Flattening) umwandeln und PDFs ohne Verlust an Bildqualität verkleinern. Verarbeitungsschritte, die vorhandene Signaturen entfernen würden, lehnt Gotenberg mit HTTP 400 ab.
Mit remediate korrigiert litho PDFs anhand eines gewählten Konformitätsprofils und prüft anschließend das Ergebnis. Unterstützt werden elf PDF/A-Konformitätsstufen für die Langzeitarchivierung sowie PDF/UA-1 und PDF/UA-2 für barrierefreie Dokumente. Auch die Kombination von PDF/A und PDF/UA sowie Factur-X gehören dazu. Letzteres verbindet eine lesbare PDF-Rechnung mit maschinenlesbaren XML-Rechnungsdaten.
Zwei Response-Header melden verbleibende Regelverstöße und Korrekturen, die litho zum Erhalt von Seiten, Text und Bildern zurückgenommen hat. Eine automatische Reparatur bedeutet damit nicht zwangsläufig vollständige Normkonformität. Über /forms/pdf/validate lassen sich auch vorhandene PDFs unabhängig von einer Konvertierung prüfen.
Bisher steuerten einzelne Formularfelder die Nachbearbeitung in einer festen Reihenfolge. Nun übergeben Clients im Feld stages eine Liste von Verarbeitungsschritten, die Gotenberg in der angegebenen Reihenfolge ausführt. Das funktioniert mit den Konvertierungsendpunkten für Chromium und LibreOffice. Für vorhandene Dokumente steht /forms/pdf/pipe bereit. Version 9.0.0 bietet 26 solcher Schritte, die auch einzeln über /forms/pdf/ erreichbar sind. Details zum Aufbau der Listen finden sich in der Dokumentation zur Anfrageverarbeitung.
So kann eine Anwendung etwa zuerst ein Wasserzeichen aufbringen und anschließend mit remediate die gewünschte Normkonformität wiederherstellen. Ungültige Reihenfolgen weist Gotenberg mit HTTP 400 zurück, bevor die Verarbeitung beginnt. Sechs weitere Endpunkte liefern Informationen, Validierungsergebnisse, Metadaten, Lesezeichen, Anhänge und Formularfelder als JSON.
Für Office-Konvertierungen ersetzt der dauerhaft laufende LibreOfficeKit-Prozess lok den bisherigen unoconverter samt Python und soffice-Listener. Gotenberg überwacht lok und startet ihn nach einem Absturz neu. Durch den Umbau der PDF- und Office-Anbindung verschwinden neben den bisherigen PDF-Werkzeugen auch Java und Python aus dem Docker-Image. Damit müssen Betreiber weniger Pakete patchen und erhalten keine CVE-Meldungen mehr zu Werkzeugen, die Gotenberg gar nicht mitliefert. Makros bleiben in LibreOffice standardmäßig deaktiviert; einschalten lässt sich ihre Ausführung über das Flag --libreoffice-enable-macros.