LibreOffice im Terminal: ODT in PDF umwandeln

  Ralf Hersel   Lesezeit: ~1 Minute  🗪 7 Kommentare

Der Artikel beschreibt, wie man LibreOffice im CLI-Modus verwendet, um Writer-Dateien zu konvertieren.

libreoffice im terminal: odt in pdf umwandeln

Eine UNIX-Philosophie von Ken Thompson aus dem Jahr 1978 besagt: "Make each program do one thing well." Diese und weitere Kernaussagen wurden von Doug McIlroy im Bell System Technical Journal dokumentiert, das von 1922 bis 1983 erschienen ist. Dahinter steckt die Idee, dass man ein Programm für einen Zweck verwenden soll; dieses soll darauf spezialisiert sein und es richtig machen.

Ken Thompson und Dennis Ritchie, 1973

Es gibt viele Werkzeuge, mit denen bestimmte Dateiformate in PDFs konvertiert werden können. Wenn es jedoch um die Umwandlung von Open Document Text (odt) in PDF geht, sieht es mau aus. Selbstverständlich gibt es drölfzig dubiose Online-Konverter und Pandoc kann es auch, aber nur widerwillig.

Zum Glück ist es gar nicht notwendig Pandoc zu installieren oder sonst irgendetwas, denn ihr habt bereits ein ausgezeichnetes Kommandozeilen-Werkzeug für diesen Zweck auf eurem Rechner. Zugegeben, LibreOffice ist nicht unbedingt für seine CLI-Fähigkeiten bekannt; dennoch sind diese reichhaltig.

Und so geht es: Öffnet ein Terminal und navigiert in ein Verzeichnis mit den ODT-Dateien, die konvertiert werden sollen. Dann gebt ihr diesen Befehl ein, um alle ODTs im Verzeichnis in PDF-Dateien umzuwandeln:

libreoffice --headless --convert-to pdf *.odt 

Das war es auch schon. Nach Beendigung des Befehls findet ihr gleichnamige PDF-Dokumente im Verzeichnis. Es muss nicht immer ein Extra-Werkzeug sein, wenn eine bereits installierte Anwendung den Job übernehmen kann. Das würde auch Ken Thompson gefallen.

Bildquelle: https://commons.wikimedia.org/wiki/File:Ken_Thompson_and_Dennis_Ritchie--1973.jpg

Tags

LibreOffice, OpenDocumentText, ODT, PDF, Konvertierung, Umwandeln

Linux4all
Geschrieben von Linux4all am 28. November 2023 um 15:49

Hi,

gleiches gilt für die in LO enthaltene Funktion zum Exporteiern von Dokumenten via "Datei → Exportieren als → Als PDF exportieren bzw. → Direkt als PDF exportieren".

VG

Horst
Geschrieben von Horst am 28. November 2023 um 17:51

> Habe diesen Tip in einem Test-Ordner angewendet.

> Es funktioniert tadellos.

> THX!

Karoshi Takotsubo
Geschrieben von Karoshi Takotsubo am 28. November 2023 um 19:00

"Pandoc kann es nur widerwillig"? 🤨️

Pandoc ist gar nicht mal übel, und es kann mit einer "ODT Vorlage" problemlos in Kombination mit "libreoffice --headless" verwendet werden, das tue ich schon lange:

Anhand meiner "ODT-Vorlage"/ "LO Referenz Dokument" (--reference-doc=./css/template05.odt) wandele ich in einem Skript -mittels pandoc- einige meiner *.markdown Dateien in ODT, und dann noch mit libreoffice --headless das erzeugte ODT –ja, ja, ich weiß schon– in "MS Word", ...und zwar so:

(...) DATE=$(date +"%Y-%b%d%s") (...) libreoffice --headless --convert-to docx --outdir ./archiv ./archiv/"output${DATE}".odt


PS: Der im Beitrag vorgestellte Trick mit PDF über "libreoffice --headless --convert-to pdf .odt" ginge natürlich ebenfalls, bzw. ggf. zusätzlich. Wir hätten somit dann aus .markdown erzeugtes ODT und dann anschliessend als PDF und DOCX.

PPS: Rückwärts geht es übrigens DEUTLICH(!) schwieriger :D

Ralf Hersel Admin
Geschrieben von Ralf Hersel am 28. November 2023 um 19:34

Siehste, genau das meine ich mit "widerwillig" :)

Ralf
Geschrieben von Ralf am 29. November 2023 um 09:17

Hallo, @trmsc@bildung.social hat auf Github https://github.com/TRMSC/linux-snippets/tree/main/kde-servicemenus eine kleine Anleitung erstellt, wie man das in einem KDE-servicemenu unterbringt, funktioniert angepasst auch mit anderen Dateimanagern.

Bergwicht
Geschrieben von Bergwicht am 19. Februar 2026 um 02:44

Tachchen,

auf der Suche nach Lösungen zu meinem Problemchen, bin ich auf diese Seite gelandet. (Bin gerade dabei meine entstehende markdown-Dokumentation in ePUB, HTML, ODT, PDF, …) zu konvertieren.

Aber erstmal möchte ich zu obigen Befehl noch etwas beitragen. Man möchte ja auch das Inhaltsverzeichnis im PDF haben (nicht nur Bildvorschau). Steht irgendwo (indirekt) auf der LibreOffice Hilfeseite:

libreoffice --headless 'pdf:writer_pdf_Export:{"InitialView":{"type":"long","value":"1"}}' *.odt

Mein Problem ist das Inhaltsverzeichnis, das durch pandoc --toc eingefügt wird. Dazu hätte ich 2 Fragen

  • das Makro funktioniert, hat aber den Schönheitsfehler, das es die Datei nicht speichert und LO schließt. Deswegen funktioniert --headless nicht.

libreoffice "Dateiname.odt" "macro:///Standard.Markdown.Main"

Das Makro von Standard.Markdown.Main: REM BASIC sub VerzeichnisAktualisieren for i = 0 TO thisComponent.getDocumentIndexes().count - 1 thisComponent.getDocumentIndexes().getByIndex(I).update() NEXT I thisComponent.store() end sub Was müßte da noch rein?

Und die zweite Frage ist (hier scheitere ich vollkommen): Wie ruft man ein Makro, das ich in einer *.bas habe im Dokument auf. Ich vermute irgendwie in der Art: libreoffice "Dateiname.odt" "macro://pfad/zum/makro.bas(VerzeichnisAktualisieren)" was aber nicht funktioniert oder ich habe etwas übersehen.

Aber das wichtigste ist, das ich bei Frage 1 eine Lösung hätte, damit das --headless läuft. Danke

Bergwicht
Geschrieben von Bergwicht am 19. Februar 2026 um 03:52

Manchmal ist es gut, wenn man nicht schlafen kann. Meine Frage 1 konnte ich gerade beantworten. Im Makro fehlte nur noch das Dokument schließen: Das funktioniert jetzt (hoffe, die Umbrüchen gehen nicht wieder schief):

REM BASIC
sub VerzeichnisAktualisieren

for i = 0 TO thisComponent.getDocumentIndexes().count - 1  
thisComponent.getDocumentIndexes().getByIndex(I).update()  
NEXT I  
thisComponent.store()  
thisComponent.close(True)  

end sub

Bleibt noch Frage 2.