Automatisierte Umwandlung von Word zu PDF mit Gotenberg: Eine FileMaker-Lösung
Ein Kunde hatte folgende Aufgabenstellung: Word-Dokumente, die in FileMaker Medienfelder Felder vorliegen, sollen in PDF Dokumente umgewandelt und wieder in einem FileMaker Medienfeld gespeichert werden.
Wichtig war:
- Automatisiert
- Nutzbar per FileMaker Client und/oder FileMaker Server
- Datenschutz beachten
- leistbar
Automatisiert
Word-Dokumente in PDFs umzuwandeln ist prinzipiell nicht schwer. Die Datei manuell in Word öffnen und dort als PDF speichern. Dieses PDF dann in FileMaker ins korrekte Medienfeld hineinziehen – fertig.
Das kann man so machen, wenn man 2-3 Dokumente umwandeln will, nicht aber, wenn es hunderte oder tausende sein sollen.
Der Prozess sollte daher vollständig automatisiert werden.
Nutzbar per FileMaker Client und Server
Als Schnittstelle war für mich von vorne herein klar, dass das ganze per JSON/REST genutzt werden sollte, sodass man es plattformunabhängig unter Windows, Mac und Linux, einfach in FileMaker Client, Server, Go und WebDirect (oder andere Programme) integrieren kann.
Datenschutz
Es gibt viele online Anbieter, wo man Word-Dokumente hochladen und das PDF-Ergebnis herunterladen kann. Bei solchen Diensten kann man sicher unkritische Daten einfach konvertieren, aber irgendwelche datenschutzrechtlich relevante Inhalte wie Bilanzen, personenbezogene Gesundheitsdaten oder ähnliches würde ich nicht in fremde Hände geben.
Die Lösung sollte also selbst hostbar sein.
Leistbar
Es gibt professionelle Anbieter, die solche serverseitigen Lösungen anbieten, beispielsweise Aspose. Solche Anbieter verlangen aber saftige Preise.
Gotenberg
Bei meiner Recherche bin ich über Gotenberg gestolpert.
Also genau das was ich gesucht habe: Eine stateless API auf Docker-Basis.
Sogar noch besser, denn das ganze ist komplett kostenlos!
Docker-powered heißt, ich kann das ganze also selbst und ganz einfach auf einem Linux oder mac System installieren (Windows geht wohl auch, aber mit Docker und Linux habe ich mich nicht beschäftigt).
Auf der Webseite von Gotenberg steht auch eine Demo-API zur Verfügung, sodass man das ganze sofort ausprobieren kann, ohne es installieren zu müssen. (Dafür lädt man seine Dokumente aber zum Anbieter hoch. Was für eine Demo OK ist.)
Ich habe dafür gleich eine FileMaker Datenbank gebaut, die Sie hier herunterladen und ausprobieren können:
Umsetzung
Die Umsetzung ist wirklich einfach – mit dem Befehl Aus URL einfügen
rufen wir die URL https://demo.gotenberg.dev/forms/libreoffice/convert
der Gotenberg Demo zum konvertieren von Worddokumente in PDF auf.
Als Ziel wählen wir die FileMaker Variable $$curl
und speichern den Variableninhalt in Scriptzeile #5 im Container, sofern die Fehlerprüfung auf Zeile #4 positiv war.
In den CURL Optionen senden wir ein POST-Request und sagen FileMaker mit dem Parameter --FM-return-container-variable
dass wir als Ergebnis keinen Text, sondern eben eine Datei für ein Containerfeld erwarten.
Mit -F \"files=@$container;filename=" & HoleContainerAttribute ( $container ; "filename" )&"\"
senden wir das Worddokument aus der Variable $container
zum Webservice inklusive dem original Dateinamen. Das ist wichtig, denn sonst kommt die Datei als “file.bin” beim Webservice an und dieser weiß nicht, wie die Datei umzuwandeln ist. Denn neben Word können folgende Dateitypen konvertiert werden:
.bib
.bmp
.csv
.dbf
.dif
.doc
.docx
.dotx
.emf
.eps
.epub
.fodg
.fodp
.fods
.fodt
.gif
.html
.jpeg
.jpg
.key
.ltx
.met
.odd
.odg
.odp
.ods
.odt
.otg
.ots
.ott
.pages
.pbm
.pct
.pdb
.pdf
.pgm
.png
.pot
.potm
.ppm
.pps
.ppt
.pptx
.psw
.pwp
.pxl
.ras
.rtf
.sda
.sdc
.sdd
.sdw
.slk
.stc
.std
.sti
.stw
.svg
.svm
.swf
.sxc
.sxd
.sxi
.sxw
.sxw
.tif
.tiff
.txt
.uop
.uos
.uot
.vor
.wmf
.wps
.xhtml
.xls
.xlsx
.xlt
.xltx
.xml
.xpm
Technik und Einschränkungen
Im Hintergrund werden die hochgeladenen Dateien mit LibreOffice, dem freien Officepaket, geöffnet und konvertiert.
Das heißt, es ist kein Original Microsoft Word für die Konvertierung zuständig, sondern ein kompatibles Programm. Wie weit die Kompatibilität geht muss man selbst anhand von Beispieldokumenten testen. Normale Worddokumente sind hier kein Problem, wenn Sie aber ausgefallene Features von Word nutzen oder verrückte Schriftarten nutzen, dann würde ich hier Probleme erwarten. (Schriften kann man in Gotenberg bestimmt nachinstallieren, habe ich aber nicht probiert.)
Hier am besten einfach testen!
Installation
Der Endkunde hat nun die Wahl – Installation von Gotenberg auf einem Linux Rechner im eigenen Netzwerk? Kein Problem!
In meinem konkreten Fall haben wir Gotenberg auf einem kleinen Linux Server in der Hetzner-Cloud * installiert. Kostenpunkt mit Backups um die 8 € monatlich.
Das ist datenschutzrechtlich OK, weil es eben ein eigenes Linux Cloud System nur für diesen Kunden ist und nicht mit anderen geteilt wird. Und – wie gesagt – für hochsensible Daten lässt sich das Ganze ja auch einfach im eigenen Netzwerk installieren.
Interesse?
Gotenberg ist kostenlos und lässt sich mit Docker rasch und unkompliziert installieren. Die Anleitung dazu unter https://gotenberg.dev/docs/getting-started/installation
Die FileMaker Datenbank oben können Sie ebenfalls kostenlos herunterladen und sofort loslegen!
Wenn Sie Gotenberg nicht selbst (unter Linux) installieren können oder wollen sowie die Pflege des Linux Systems mit Updates und Backups in guten Händen wissen möchten, so kontaktieren Sie mich gerne unter bernhard.schulz@schubec.com und wir sprechen ganz unverbindlich über Umfang meiner Hilfe und Preise.
*Links zu Hetzner sind Affiliate Links
Titelbild: DALL·E
Kommentieren und Diskutieren