ODTファイルをPDFに変換するにはどうすればよいですか?


回答:


68

libre officeでドキュメントを開き、Export as PDF ...を選択するだけです

ここに画像の説明を入力してください

コマンドラインソリューションには、コマンドラインからファイルを変換するunoconv がありNAMEをインストールます。

unoconv -f pdf mydocument.odt

注: Ubuntu 11.10 unoconvからのみLibre Officeに依存しています。以前のunoconvバージョン(Ubuntu <= 11.04以降)はOpen Officeに依存しています(ただし、Libre Officeでも実行されます)。


3
言及するためのTHX unoconv、それは素晴らしいです!
ボリスデッペン

1
UnoconvとLibreofficeのコマンドラインの長所と短所を知りたい人は、この問題が役立つかもしれません:github.com/dagwieers/unoconv/issues/364
Sebastien Lorber

@Takkat unoconvは、それが言う、MacOSのシエラのlibreoffice5場所を見つけるように見えることはありませんunoconv: Cannot find a suitable office installation on your system.ので、それは使用不可能:(だ、
SebMa

87

libreoffice目的に合わせてコマンドラインを使用することもできます。これにより、バッチ変換の利点が得られます。ただし、単一のファイルも可能です。この例では、現在のディレクトリ内のすべてのODTファイルをPDFに変換します。

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

次のコマンドラインオプションの詳細を取得します。

man libreoffice

コマンドラインの使用に関するもう1つの議論は、たとえば私の場合、GUIが突然欠陥のあるpdfを作成し始めたが、コマンドラインは依然として魅力のように機能するということです。
ヘルマンインガルドソン

4
Thi9sは動作しますが、問題があります:GUIが開いている場合、コマンドは何もしません(エラーを表示しません)。glyいですが、この回避策を使用すると、新しいインスタンスを開くことができます:--env:UserInstallation=file:///path/to/some/directory
トックランド

1
@tokland:そのためのバグレポートがあります:bugs.freedesktop.org/show_bug.cgi?id
機械式カタツムリ

1
バッチ変換unoconvもできました。たとえば、私はこの行をunoconv -f pdf *.ppt正常に使用しました。
-XavierStuvw

2
UnoconvとLibreofficeのコマンドラインの長所と短所を知りたい人は、この問題が役立つかもしれません:github.com/dagwieers/unoconv/issues/364
Sebastien Lorber

8

「非GUI」メソッドの詳細を次に示します。

  1. この方法は、ODTファイルをPDFに変換するだけでなく使用できます。また、MS Word DOCXファイル(LibreOfficeが特定のODTを処理できるのと同様に機能します)、およびLibreOfficeで開くことができるすべてのファイルタイプでも機能します。

  2. libreoffice提案された他の回答の1つとして名付けられたバイナリがあるとは思わない。ただし、soffice(.bin)コマンドラインからLibreOfficeを起動するために使用できるバイナリがあります。通常、次の場所にあり/usr/lib/libreoffice/program/ます。非常に多くの場合、シンボリックリンク/usr/bin/sofficeはその場所を指します。

  3. その後、ほとんどの場合、パラメーター--headless --convert-to pdfは十分ではありません。次のことが必要です。

    --headless --convert-to pdf:writer_pdf_Export
    

    必ずこの大文字を使用してください。

  4. 次に、システムでLibreOffice GUIインスタンスがすでに稼働している場合、コマンドは機能しません。これは、2011年以来知られているバグ#37531が原因です。この追加パラメーターをコマンドに追加します。

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

    これにより、同じユーザーが最初に実行する可能性のある最初のGUI LOインスタンスを妨げることなく、2番目のヘッドレスLOインスタンスで使用できる新しい別個の環境が作成されます。

  5. また、--outdir /pdf指定したが存在すること、およびそれに対する書き込み権限を持っていることを確認してください。または、別の出力ディレクトリを使用します。最初のテストとデバッグのラウンドだけの場合でも:

    $ mkdir ${HOME}/lo_pdfs
    
  6. したがって:

    /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
    

    これは、LibreOffice v5.1.2.2を搭載したMac OS X Yosemite 10.10.5で動作します(sofficeUbuntuでは異なるバイナリの特定のパスを使用します...)。Debian Jessie 8.0でも機能します(pathを使用/usr/lib/libreoffice/program/soffice)。申し訳ありませんが、今はUbuntuでテストできません。...

    これがすべてうまくいかない場合、DOCXを処理しようとすると:

  7. コマンドを実行する特定のDOCXファイルに問題がある可能性があります...まず、独自の非常に単純なDOCXドキュメントを作成します。これにはLibreOffice自体を使用します。「Hello World!」と書く それ以外の場合は空のページ。DOCXとして保存します。

  8. 再試行する。シンプルなDOCXで動作しますか?

  9. 再び機能しない場合は、手順7を繰り返しますが、今回はODTとして保存します。

  10. 手順8を繰り返しますが、今回は必ずODTを参照してください。

  11. 最後:パラメータsofficeへのフルパスを使用して、へsoffice.bin、およびへlibreoffice実行し、それぞれを実行し-hます:

    $ /path/to/libreoffice -h  # if that path exists, which I doubt!
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • ここで出力が得られますか?
    • 3つのバイナリ/シンボリックリンクのうち、どれですか?
    • 出力を記録します。
    • アウトプットを教えてください!!!
       

    それらを使用したコマンドラインと比較します。

    • パラメータ名、大文字、使用するダッシュの数などに変更はありますか??
       

    比較のために、私自身の(Mac OS X)出力は次のとおりです。

     $ /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. コマンドラインに引数をもう1つ追加してsoffice、DOCXファイルを開くときに入力フィルターの適用を強制します。

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

    または

    --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"
    


4

ノーチラススクリプト

このスクリプトは、libreofficeを使用して、LibreOfficeと互換性のあるファイルをPDFに変換します。

#!/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

インストール手順については、こちらをご覧ください:Nautilusスクリプトをインストールするにはどうすればよいですか?


2
「lipreoffice」などの機能がOSXにもあることを願っています。時々、Macを使用しなければならないとき、手がとても短く感じます。
レオレオポルトヘルツ준영

2

注:ファイルをまったく処理せず、他の形式に正常に変換できないことがわかったときに、この質問から回答を削除し、修正版をここに投稿することにしました。また、フォーマットに問題がある可能性があります。unoconvpswdocxxlsx


ただし、Libreoffice多くのファイルタイプを完全にサポートしています。有効な入力および出力形式の詳細については、公式サイトから完全なドキュメントを入手できます。

リポジトリで利用可能なコマンドラインlibreoffice変換ユーティリティまたはunoconvを使用できます。私はunoconv非常に有用であることがわかり、それはおそらくあなたが望むものです。にもかかわらずTakkatが簡単に言及しているunoconv、私はいくつかの詳細とバッチ変換ワンライナーを与えるために有用であろうと思いました。

ターミナルを使用してcd、ファイルを含むディレクトリに移動し、次のようなワンライナーを実行することにより、それらすべてをバッチ変換できます。

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

(このワンライナーは、この回答で取り上げ翻訳スクリプトの修正です。)

後で他のファイル形式を使用する場合はodtpdfサポートされている他の入力形式および出力形式をand に置き換えてください。を入力すると、ファイルタイプでサポートされている形式を見つけることができますunoconv -f odt --show。単一のファイルを変換するには、たとえばを使用しますunoconv -f pdf myfile.odt

プログラムの詳細とオプションについては、ターミナルに入力するman unoconvか、Ubuntuのマンページにオンラインでアクセスしてください。


1

別のNautilusスクリプト

この非常にシンプルで軽量なNautilusスクリプトはunoconv、LibreOfficeと互換性のある選択したファイルをPDF形式に変換するために使用します。

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

1

最近、ODCファイルを読み取る機能を獲得したPandocによって一連の新しい変換パスが開かれたため、新しい答えを追加しています。

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ディストリビューションの追加パッケージとしても利用可能です)。

  • コンテキスト:これには、Pandocに加えてConTeXtをインストールする必要があります。ConTeXtは、ほとんどの一般的なTeXディストリビューションの追加パッケージとして利用可能です。

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

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

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

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

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

Pandocに統合された、より新しいPDFエンジンがいくつかありますが、まだ使用していませんが、詳細を説明することはできません:tectoniclatexmk

警告:元のドキュメントの外観が、すべてのPDF出力でODTの印刷プレビューまたはPDFエクスポートと同じになるとは思わないでください!Pandocでは、変換時にレイアウトが保持されない場合、ドキュメントの内容構造が保持されます。段落は段落のまま、強調された単語は強調されたまま、見出しは見出しのままです。

コマンド例

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

状況:

 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のマージンを設定します)。


上から4番目のパラを確認してください。不完全に見えます。
DKボーズ

@DKBose:Thx、完了。
カート・ファイフル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.