it-swarm.com.de

Wie kann ich eine ODT-Datei in eine PDF-Datei konvertieren?

Weiß jemand, wie man eine ODT -Datei (LibreOffice) in PDF konvertiert?

61
SoftTimur

Öffnen Sie einfach das Dokument mit libre office und wählen Sie Als PDF exportieren ... :

enter image description here

Für eine Kommandozeilenlösung gibt es noconvInstall NAME das konvertiert Dateien von der Kommandozeile:

unoconv -f pdf mydocument.odt

Hinweis: Nur ab Ubuntu 11.10 hängt Unoconv von Libre Office ab. Frühere Unoconv-Versionen (von Ubuntu <= 11.04) hängen von Open Office ab (laufen aber auch mit Libre Office).

68
Takkat

Sie können für Ihren Zweck auch die Befehlszeile von libreoffice verwenden. Das gibt Ihnen den Vorteil der Batch-Konvertierung. Es sind aber auch einzelne Dateien möglich. In diesem Beispiel werden alle ODT-Dateien im aktuellen Verzeichnis in PDF konvertiert:

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

Weitere Informationen zu Befehlszeilenoptionen erhalten Sie mit:

man libreoffice
86
Tapper

Im Folgenden finden Sie einige Details zur Methode "Nicht-GUI".

  1. Mit dieser Methode können Sie nicht nur ODT-Dateien in PDF konvertieren. Es funktioniert auch für MS Word DOCX-Dateien (es funktioniert ebenso wie LibreOffice mit dem jeweiligen ODT umgehen kann) und im Allgemeinen für alle Dateitypen, die LibreOffice öffnen kann.

  2. Ich glaube nicht, dass es eine Binärdatei mit dem Namen libreoffice als eine der anderen vorgeschlagenen Antworten gibt. Es gibt jedoch soffice(.bin) - die Binärdatei, mit der LibreOffice über die Befehlszeile gestartet werden kann. Es befindet sich normalerweise in /usr/lib/libreoffice/program/; und sehr oft zeigt ein Symlink /usr/bin/soffice auf diesen Ort.

  3. In den meisten Fällen reichen dann die Parameter --headless --convert-to pdf nicht aus. Es muss sein:

    --headless --convert-to pdf:writer_pdf_Export
    

    Beachten Sie genau diese Groß- und Kleinschreibung!

  4. Als nächstes funktioniert der Befehl nicht, wenn auf Ihrem System bereits eine LibreOffice-GUI-Instanz ausgeführt wird. Es wird durch den Fehler # 37531, bekannt seit 2011 verursacht. Fügen Sie Ihrem Befehl diesen zusätzlichen Parameter hinzu:

     "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
    

    Dadurch wird eine neue, separate Umgebung erstellt, die von einer zweiten kopflosen LO-Instanz verwendet werden kann, ohne eine möglicherweise ausgeführte erste GUI-LO-Instanz zu beeinträchtigen, die von demselben Benutzer gestartet wurde.

  5. Stellen Sie außerdem sicher, dass der von Ihnen angegebene --outdir /pdf vorhanden ist und dass Sie über eine Schreibberechtigung dafür verfügen. Oder verwenden Sie lieber ein anderes Ausgabeverzeichnis. Auch wenn es sich nur um eine erste Test- und Debugging-Runde handelt:

    $ mkdir ${HOME}/lo_pdfs
    
  6. Daher:

    /path/to/soffice                                                     \
      --headless                                                         \
      "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" \
      --convert-to pdf:writer_pdf_Export                                 \
      --outdir ${HOME}/lo_pdfs                                           \
    /path/to/test.docx
    

    Dies funktioniert für mich unter Mac OS X Yosemite 10.10.5 mit LibreOffice v5.1.2.2 (unter Verwendung meines spezifischen Pfads für die Binärdatei soffice, die unter Ubuntu ohnehin anders sein wird ...). Es funktioniert auch unter Debian Jessie 8.0 (unter Verwendung von Pfad /usr/lib/libreoffice/program/soffice). Es tut uns leid, ich kann es momentan nicht auf Ubuntu testen.

    Wenn dies alles nicht funktioniert, wenn Sie versuchen, DOCX zu verarbeiten:

  7. Möglicherweise liegt ein Problem mit der spezifischen DOCX-Datei vor, mit der Sie den Befehl ausführen ... Erstellen Sie also zuerst ein sehr einfaches DOCX-Dokument. Verwenden Sie dazu LibreOffice. Schreiben Sie "Hallo Welt!" auf einer ansonsten leeren Seite. Speichern Sie es als DOCX.

  8. Versuch es noch einmal. Funktioniert es mit der einfachen DOCX?

  9. Wenn es erneut nicht funktioniert, wiederholen Sie Schritt 7, aber speichern Sie diesmal als ODT.

  10. Wiederholen Sie Schritt 8, achten Sie jedoch darauf, diesmal auf das ODT zu verweisen.

  11. Last: Verwenden Sie den vollständigen Pfad zu soffice, zu soffice.bin und zu libreoffice und führen Sie jeweils den Parameter -h aus:

    $ /path/to/libreoffice -h  # if that path exists, which I doubt!
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • Erhalten Sie hier eine Ausgabe?
    • Für welche der drei Binaries/Symlinks?
    • Notieren Sie die Ausgaben.
    • Sagen Sie uns Ihre Ergebnisse !!!

    Vergleichen Sie sie mit der Befehlszeile, die Sie verwendet haben:

    • Gibt es Änderungen an Parameternamen, Großbuchstaben, Anzahl der verwendeten Bindestriche usw .?

    Zum Vergleich: Meine eigene Ausgabe (Mac OS X) ist hier:

     $ /Applications/LibreOffice.app/Contents/MacOS/soffice -h 
    
     LibreOffice 5.1.2.2 d3bf12ecb743fc0d20e0be0c58ca359301eb705f
    
     Usage: soffice [options] [documents...]
    
     Options:
     --minimized    keep startup bitmap minimized.
     --invisible    no startup screen, no default document and no UI.
     --norestore    suppress restart/restore after fatal errors.
     --quickstart   starts the quickstart service
     --nologo       don't show startup screen.
     --nolockcheck  don't check for remote instances using the installation
     --nodefault    don't start with an empty document
     --headless     like invisible but no user interaction at all.
     --help/-h/-?   show this message and exit.
     --version      display the version information.
     --writer       create new text document.
     --calc         create new spreadsheet document.
     --draw         create new drawing.
     --impress      create new presentation.
     --base         create new database.
     --math         create new formula.
     --global       create new global document.
     --web          create new HTML document.
     -o             open documents regardless whether they are templates or not.
     -n             always open documents as new files (use as template).
    
     --display <display>
           Specify X-Display to use in Unix/X11 versions.
     -p <documents...>
           print the specified documents on the default printer.
     --pt <printer> <documents...>
           print the specified documents on the specified printer.
     --view <documents...>
           open the specified documents in viewer-(readonly-)mode.
     --show <presentation>
           open the specified presentation and start it immediately
     --accept=<accept-string>
           Specify an UNO connect-string to create an UNO acceptor through which
           other programs can connect to access the API
     --unaccept=<accept-string>
           Close an acceptor that was created with --accept=<accept-string>
           Use --unnaccept=all to close all open acceptors
     --infilter=<filter>[:filter_options]
           Force an input filter type if possible
           Eg. --infilter="Calc Office Open XML"
               --infilter="Text (encoded):UTF8,LF,,,"
     --convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files
           Batch convert files (implies --headless).
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --convert-to pdf *.doc
               --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
               --convert-to "html:XHTML Writer File:UTF8" *.doc
               --convert-to "txt:Text (encoded):UTF8" *.doc
     --print-to-file [-printer-name printer_name] [--outdir output_dir] files
           Batch print files to file.
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --print-to-file *.doc
               --print-to-file --printer-name nasty_lowres_printer --outdir /home/user *.doc
     --cat files
           Dump text content of the files to console
           Eg. --cat *.odt
     --pidfile=file
           Store soffice.bin pid to file.
     -env:<VAR>[=<VALUE>]
           Set a bootstrap variable.
           Eg. -env:UserInstallation=file:///tmp/test to set a non-default user profile path.
    
     Remaining arguments will be treated as filenames or URLs of documents to open.
    
  12. Fügen Sie Ihrer Befehlszeile ein weiteres Argument hinzu, um die Anwendung eines Eingabefilters zu erzwingen, wenn soffice Ihre DOCX-Datei öffnet:

    --infilter="Microsoft Word 2007/2010/2013 XML"
    

    oder

    --infilter="Microsoft Word 2007/2010/2013 XML"
    --infilter="Microsoft Word 2007-2013 XML"
    --infilter="Microsoft Word 2007-2013 XML Template"
    --infilter="Microsoft Word 95 Template"
    --infilter="MS Word 95 Vorlage"
    --infilter="Microsoft Word 97/2000/XP Template"
    --infilter="MS Word 97 Vorlage"
    --infilter="Microsoft Word 2003 XML"
    --infilter="MS Word 2003 XML"
    --infilter="Microsoft Word 2007 XML Template"
    --infilter="MS Word 2007 XML Template"
    --infilter="Microsoft Word 6.0"
    --infilter="MS WinWord 6.0"
    --infilter="Microsoft Word 95"
    --infilter="MS Word 95"
    --infilter="Microsoft Word 97/2000/XP"
    --infilter="MS Word 97"
    --infilter="Microsoft Word 2007 XML"
    --infilter="MS Word 2007 XML"
    --infilter="Microsoft WinWord 5"
    --infilter="MS WinWord 5"
    
8
Kurt Pfeifle

Nautilus Script

Dieses Skript verwendet libreoffice, um mit LibreOffice kompatible Dateien in PDF zu konvertieren.

#!/bin/bash
## PDFconvert 0.1
## by Glutanimate (https://askubuntu.com/users/81372/)
## License: GPL 3.0
## depends on python, libreoffice
## Note: if you are using a non-default LO version (e.g. because you installed it 
## from a precompiled package instead of the official repos) you might have to change
## 'libreoffice' according to the version you're using, e.g. 'libreoffice3.6'

# Get work directory
base="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

#Convert documents
while [ $# -gt 0 ]; do
    document=$1
    libreoffice --headless --invisible --convert-to pdf --outdir "$base" "$document" 
    shift

done

Installationsanweisungen finden Sie hier: Wie kann ich ein Nautilus-Skript installieren?

4
Glutanimate

Hinweis: Ich habe beschlossen, meine Antwort aus dieser Frage zu löschen und eine geänderte Version hier zu veröffentlichen, als ich feststellte, dass unoconv überhaupt nicht mit psw -Dateien zurechtkommt und konvertiert sie nicht erfolgreich in andere Formate. Möglicherweise treten auch Probleme mit den Formaten docx und xlsx auf.


Libreoffice unterstützt jedoch viele Dateitypen vollständig. vollständige Dokumentation ist auf der offiziellen Website verfügbar, auf der die gültigen Eingabe- und Ausgabeformate aufgeführt sind.

Sie können das Befehlszeilenprogramm libreoffice convert oder noconv verwenden, das in den Repositorys verfügbar ist. Ich finde unoconv sehr nützlich, und es ist wahrscheinlich das, was Sie wollen. Obwohl Takkatunoconv kurz erwähnt hat, hielt ich es für sinnvoll, einige Details und eine Batch-Konvertierung einzeilig anzugeben.

Mit dem Terminal können Sie cd in das Verzeichnis, in dem sich Ihre Dateien befinden, wechseln und anschließend alle Dateien stapelweise konvertieren, indem Sie einen Einzeiler wie diesen ausführen:

for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done

(Dieser Einzeiler ist eine Modifikation meines Übersetzungsskripts in dieser Antwort .)

Wenn Sie später andere Dateiformate verwenden möchten, ersetzen Sie einfach odt und pdf durch andere unterstützte Eingabe- und Ausgabeformate. Sie finden die unterstützten Formate für einen Dateityp, indem Sie unoconv -f odt --show eingeben. Verwenden Sie zum Konvertieren einer einzelnen Datei beispielsweise unoconv -f pdf myfile.odt.

Weitere Informationen und Optionen für das Programm finden Sie in Terminal man unoconv oder auf den buntu-Hilfeseiten online .

2
user76204

Ich füge eine neue Antwort hinzu, weil in letzter Zeit eine Reihe neuer Konvertierungspfade eröffnet wurden, indem Pandoc die Fähigkeit erlangt hat ODT-Dateien lesen.

Wenn Pandoc ein Dateiformat liest, konvertiert es es in ein internes Format, "native" (eine Form von JSON).

Von seiner ursprünglichen Form aus kann es das Dokument dann in eine ganze Reihe anderer Formate exportieren. Nicht nur PDF, sondern auch DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki und was-nicht ...

Da hier das gewünschte Ausgabeformat PDF ist, haben wir eine andere Auswahl an verschiedenen Pfaden, die von Pandoc als pdf-engine bezeichnet wird. Hier ist die Liste der derzeit verfügbaren PDF Engines (gültig für Pandoc v2.7.2 und höher - frühere Versionen unterstützen möglicherweise nur eine kleinere Liste):

  • pdflatex: Dies setzt voraus, dass LaTeX zusätzlich zu Pandoc installiert ist.

  • xelatex: Dies setzt voraus, dass XeLaTeX zusätzlich zu Pandoc installiert ist (auch als Zusatzpaket zu general TeX Distributionen ).

  • context: Dazu muss ConTeXt zusätzlich zu Pandoc installiert werden. ConTeXt ist als Zusatzpaket zu den meisten allgemeinen TeX-Distributionen ) verfügbar.

  • lualatex: Dies erfordert, dass LuaTeX zusätzlich zu Pandoc ( auch als Zusatzpaket zu general TeX-Distributionen ) erhältlich.

  • pdfroff: Dies setzt voraus, dass GNU Roff zusätzlich zu Pandoc installiert ist .

  • wkhtml2pdf: Dazu muss wkhtmltopdf zusätzlich zu Pandoc installiert sein.

  • prince: Dies setzt voraus, dass PrinceXML zusätzlich zu Pandoc installiert ist.

  • weasyprint: Dies setzt voraus, dass weasyprint zusätzlich zu Pandoc installiert ist.

Es gibt einige weitere und neuere PDF Engines in Pandoc, die ich selbst noch nicht benutzt habe und die ich derzeit nicht näher beschreiben kann: tectonic = und latexmk.

WARNUNG: Erwarten Sie nicht, dass das Erscheinungsbild Ihres Originaldokuments in allen PDF Ausgaben der Druckvorschau oder _ identisch ist.PDF Export des ODT! Pandoc behält beim Konvertieren keine Layouts bei, sondern die Inhalt und die Struktur von Dokumenten: Absätze bleiben Absätze, hervorgehobene Wörter bleiben hervorgehoben, Überschriften bleiben Überschriften usw. Aber das allgemeine Erscheinungsbild kann sich erheblich ändern.

Beispielbefehle

pdflatex:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdflatex

XeLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=xelatex

LuaLaTeX:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=lualatex

Inhalt:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=context

GNU troff:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdfroff

wkhtmltopdf:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=wkhtml2pdf

PrinceXML:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=prince

weasyprint:

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=weasyprint

Die obigen Befehle sind die grundlegendsten für die Konvertierung. Abhängig von der ausgewählten PDF Engine gibt es möglicherweise viele andere Optionen, mit denen Sie das Erscheinungsbild der Ausgabedatei PDF steuern können. Beispielsweise können die folgenden zusätzlichen Parameter zu allen Pfaden hinzugefügt werden, die über LaTeX geleitet werden:

 -V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"

hierfür wird ein benutzerdefiniertes Seitenformat (etwas größer als DIN A4) mit Rändern von 2 cm am oberen Rand und 1,12 cm an den anderen drei Rändern verwendet.

1
Kurt Pfeifle

Ein weiteres Nautilus-Skript

Dieses sehr einfache und leichte Nautilus-Skript verwendet unoconv, um ausgewählte Dateien, die mit LibreOffice kompatibel sind, in das PDF -Format zu konvertieren:

#!/bin/sh
#Nautilus Script to convert selected LibreOffice-compatible file(s) to PDF
#
OLDIFS=$IFS
IFS="
"
for filename in [email protected]; do
unoconv --doctype=document --format=pdf "$filename"
done
IFS=$OLDIFS
1
Sadi