web-dev-qa-db-ja.com

libreoffice ODTをbashでPDFに変換する方法

CentOS 6でlibreofficeを使用しています。ODTファイルをPDFに変換できます。

libreoffice --headless --convert-to pdf *.odtしかし、問題はlibreofficeで開いているドキュメントがない場合にのみ機能することです。

この質問 のコメントの1つで提案されているように--env:UserInstallation=file:///path/to/some/directoryを指定しても、役に立ちません。

何が悪いのですか? beforeコマンドを実行する前にすべてのlibreofficeインスタンスを閉じるのは面倒です。

7
Johan

コメントの提案が不完全であるだけで(一部のディレクトリを指定することはできません)、正しくない(_--env:..._は_-env:.._である必要があるため、これは機能しそうにありません。推奨事項は次のとおりです。

  1. Libreofficeのすべてのインスタンスを停止します
  2. _--headless_を指定せずにコマンドラインからlibreofficeを起動します。

    _libreoffice -env:UserInstallation=file:///home/username/.config/libreoffice-alt
    _

    _/home/username_をホームディレクトリに置き換える必要があります(CentOSにない場合は_.config_を調整してください。UbuntuとLinux Mintでこれを行いました)。上記は、.configディレクトリに代替libreofficeの新しい設定ディレクトリを作成します。これがないと、Javaが見つからないというエラーが表示されます。

  3. Libreofficeのインスタンスを終了します
  4. そのディレクトリ_/home/username/.config/libreoffice-alt_が作成されているはずです。

コマンドラインから別のlibreofficeを開始します(これにより、2番目のインスタンスの開始時に問題が発生した場合にいくつかの有用なメッセージを表示できます)。_-env:..._は使用しません。使用する変換:

_libreoffice -env:UserInstallation=file:///home/username/.config/libreoffice-alt --headless --convert-to pdf *.odt
_
7
Anthon

可能なアプローチの1つは、unoconvをインストールすることです(まだインストールされていない場合)。

unoconv file.odt

詳細はman unoconvをご覧ください

unoconvは、LibreOfficeがインポートできる任意のファイル形式を、LibreOfficeがエクスポートできる任意のファイル形式に変換できるコマンドラインユーティリティです。 unoconvは、非インタラクティブな変換にLibreOfficeのUNOバインディングを使用します...

一部のプラットフォームでは、libreoffice-headless\thanks {Aaron}もインストールする必要があります

8
JJoao

これはまったく異なるアプローチです。

最近では、一連の新しい変換パスがPandoc'sODTファイルを読み取るために新しく取得した機能によって開かれたため、可能です。 。

Pandocがファイル形式を読み取る場合、それを「ネイティブ」(JSONの形式)の内部形式に変換します。

ネイティブ形式から、ドキュメントを他のさまざまな形式にエクスポートできます。 PDFだけでなく、DocBook、HTML、EPUB、DOCX、ASCIIdoc、DokuWiki、MediaWiki、その他...

ここで必要な出力形式はPDFなので、Pandocがpdf-engineと呼んでいるものによって提供される別のパスの選択肢があります。ここに現在利用可能なPDFエンジンのリストがあります(Pandoc v2.7.2以降で有効です-以前のバージョンはより小さなリストしかサポートしていません):

  • pdflatex:これには、Pandocに加えてLaTeXをインストールする必要があります。

  • xelatex:これには、Pandocに加えてXeLaTeXをインストールする必要があります(追加パッケージとしても利用可能)一般 TeXディストリビューション )。

  • context:これには、Pandocに加えてConTeXtをインストールする必要があります。 ConTeXtは、最も一般的な TeXディストリビューション )の追加パッケージとして利用できます。

  • lualatex:これには、Pandocに加えてLuaTeXをインストールする必要があります(一般的な追加パッケージとしても利用できます TeXディストリビューション )。

  • pdfroff:これには、Pandocに加えてGNU Roffをインストールする必要があります。

  • wkhtml2pdf:これには、Pandocに加えてwkhtmltopdfをインストールする必要があります。

  • prince:これには、Pandocに加えてPrinceXMLをインストールする必要があります。

  • weasyprint:これには、Pandocに加えてweasyprintをインストールする必要があります。

いくつかの新しいPDFエンジンがPandocに統合されました。これはまだ使用していませんが、現在は詳しく説明できません:tectonicおよびlatexmk

警告:元のドキュメントの外観がすべてのPDF印刷物への出力で同一であることを期待しないでくださいプレビューまたはPDF ODTのエクスポート!Pandoc、変換時はレイアウトを保持しませんcontentsドキュメントの構造:段落は段落のまま、強調された単語は強調されたまま、見出しは見出しのままです。しかし、全体的な外観は大幅に変わる可能性があります。

コマンドの例

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

ConTeXt:

 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

上記のコマンドは、変換の最も基本的なものです。 PDF選択したエンジンによっては、出力の外観を制御するために可能な他の多くのオプションPDFファイルがあります。たとえば、次の追加パラメーターLaTeXを経由するすべてのパスに追加できます。

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

これは、カスタムページサイズを使用します(DIN A4)より少し大きいですが、上端に2cm、他の3つの端に1.12cmのマージンがあります)。

2
Kurt Pfeifle