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

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

CentOS 6でlibreofficeを使用しています。次のコマンドを使用してODTファイルをPDFに変換できます。

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

--env:UserInstallation=file:///path/to/some/directory コメントの1つが提案したとおりに指定した場合この問題 、役に立ちません。

私は何が間違っていましたか? before コマンドを実行する前にすべての libreoffice インスタンスを終了するのは面倒です。

答え1

1つの可能な方法はインストールすることですunoconv(まだインストールされていない場合)。

unoconv file.odt

unoconv詳しくは男をご覧ください

unoconvLibreOfficeがインポートできるすべてのファイル形式を、LibreOfficeがエクスポートできるすべてのファイル形式に変換できるコマンドラインユーティリティ。 unoconvLibreOfficeのUNOバインディングを使用した非対話型変換...

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

答え2

コメントの提案が不完全で(ディレクトリを指定できない)、正しくないため(ディレクトリを指定する必要があります--env:...-env:..、これは機能しません。

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

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

    /home/username ホームディレクトリに置き換える必要があります(.configCentOSにない場合は調整してください。私は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

答え3

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

これは、最近新しいコンバージョン経路のセットが開かれたために可能です。読書ODTファイルを読み取る機能を新しく入手しました。

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

その後、文書を元の形式からさまざまな異なる形式にエクスポートできます。 PDFだけでなく、DocBook、HTML、EPUB、DOCX、ASCIIdoc、DokuWiki、MediaWikiなど...

ここで必要な出力形式はPDFなので、Pandocが提供する他のパスの別のオプションがあります。PDFエンジン。以下は現在利用可能なPDFエンジンのリストです(Pandoc v2.7.2以降 - 以前のバージョンはより小さいリストのみをサポートできます)。

  • PDFラテックス:これが必要ですエマルジョンPandocに追加インストールします。

  • エマルジョン:これが必要ですXeLaTeXPandocの他に追加インストール可能(ユニバーサルパッケージの追加パッケージとしてもインストール可能)TeXのデプロイ)。

  • コンテキスト:これが必要ですコンテキストPandocへの追加インストールは、最も多様なアドオンパッケージで提供されています。TeXのデプロイ)。

  • ルラテックス:これが必要ですルアテックスPandocの他に追加インストール可能(ユニバーサルパッケージの追加パッケージとしてもインストール可能)TeXのデプロイ)。

  • pdfroff:これが必要ですGNUロープPandocに追加インストールします。

  • wkhtml2pdf:これが必要ですwkhtmlをpdfにPandocに追加インストールします。

  • 王子:これが必要ですPrinceXMLPandocに追加インストールします。

  • ウェイ印刷:これが必要ですウェイプリントPandocに追加インストールします。

Pandocに統合されているますます新しいPDFエンジンがありますが、私は自分で試したことがなく、現在では詳細に説明できません。設定そしてエマルジョン

警告する:すべてのPDF出力で、元の文書がODTの印刷プレビューまたはPDF書き出しと同じように見えるとは思わないでください! Pandoc、変換時レイアウトを維持しない、これコンテンツそして構造文書の内容:段落はまだ段落であり、強調表示された単語はまだ強調表示され、タイトルは依然としてタイトルです。しかし、全体的な外観は大きく変わることがあります。

コマンド例

PDFラテックス:

 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

コンテキスト:

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

GNUチーム:

 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

ウェイ印刷:

 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)を使用します。

答え4

次のことを試すことができます。

$ libreoffice2 pdf *.odt

とにかく、このpb.は少なくともlibreoffice 6からlibreofficeチームがこの問題を解決しました。

関連情報