DOCXをPDFに変換することを目的としたこのLibreOfficeコマンドを使用した後、長い間待たなければなりません。
libreoffice --headless --convert-to pdf test.docx --outdir /pdf
しかし、応答もエラーもありません。ファイルは変換されません。端末がハングしているようです。
だから、エラーを追跡する方法はありますか?
まず、コマンドへの絶対パスを指定して試してみます。
libreoffice
バイナリが機能しないのではないかと疑っています。soffice
バイナリを見つけて、機能するかどうかを確認する必要があります。
次に、--convert-to pdf
では不十分です。次のことが必要です。
--convert-to pdf:writer_pdf_Export
必ずこの大文字を使用してください。
次に、システムでLibreOffice GUIインスタンスがすでに稼働している場合、コマンドは機能しません。バグが原因です 2011年以降に知られています 。この追加パラメーターをコマンドに追加します。
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
これにより、同じユーザーが最初に実行する可能性のある最初のGUI LOインスタンスに干渉することなく、2番目のヘッドレスLOインスタンスで使用できる新しい別個の環境が作成されます。
また、指定する--outdir /pdf
が存在すること、および書き込み許可を持っていることを確認してください。または、別の出力ディレクトリを使用してください。最初のテストとこのデバッグラウンドだけの場合でも:
$ mkdir ${HOME}/lo_pdfs
したがって:
/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 v4.4.3.2を搭載したMac OS X Mavericks 10.9.5で動作します(とにかく異なるバイナリsoffice
を使用します...)。
すべてうまくいかない場合:
コマンドを実行する特定のDOCXファイルに問題がある可能性があります...最初に独自の非常に単純なDOCXドキュメントを作成します。これにはLibreOffice自体を使用します。 「Hello World!」と書くそれ以外の場合は空のページ。 DOCXとして保存します。
再試行する。 シンプルなDOCXで動作しますか?
再び機能しない場合は、手順7を繰り返しますが、今回はODTとして保存します。
手順8を繰り返しますが、今回は必ずODTを参照してください。
最後:soffice
、soffice.bin
、およびlibreoffice
へのフルパスを使用し、-h
パラメーターでそれぞれを実行します。
$ /path/to/libreoffice -h
$ /path/to/soffice -h
$ /path/to/soffice.bin -h
それらを使用したコマンドラインと比較します。
パラメーター名、大文字、使用するダッシュの数などに変更はありますか??
比較のために、私自身の出力は次のとおりです。
$ /Applications/LibreOffice.app/Contents/MacOS/soffice -h
LibreOffice 4.4.3.2 88805f81e9fe61362df02b9941de8e38a9b5fd16
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 userinteraction 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.
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.
soffice
がDOCXファイルを開いたときに入力フィルターの適用を強制するために、コマンドラインにもう1つの引数を追加します。
--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"
LibreOfficeは、コマンドラインでDOCXをPDFにのみ変換できません。
もちろん、結果が完璧になることは決してなく、時にはあなたに受け入れられないことさえあります。
Re。 PDF:として出力
どのLibreOfficeコンポーネントがPDF出力を生成するかを制御するには、次のバリアントを使用できます。
--convert-to pdf:writer_pdf_Export
--convert-to pdf:calc_pdf_Export
--convert-to pdf:draw_pdf_Export
--convert-to pdf:impress_pdf_Export
--convert-to pdf:writer_web_pdf_Export
Re。 DOCXではない::
非DOCX入力形式にフィルターを適用するには、次を使用できます(リストは完全ではありません)。
--infilter="HTML Document" # for HTML input
--infilter="MediaWiki" # for MediaWiki input
--infilter="Text CSV" # for CSV spreadsheet input
--infilter="Microsoft PowerPoint 2007/2010 XML" # for PPTX input
--infilter="Microsoft PowerPoint 97/2000/XP" # for PPT input
--infilter="Windows Metafile" # for WMF input
--infilter="Enhanced Metafile" # for EMF input
--infilter="Scalable Vector Graphics" # for SVG input
--infilter="Microsoft Excel 2007/2010 XML" # for XLSX input
--infilter="Microsoft Excel 97/2000/XP" # for XLS input
--infilter="Microsoft Excel 95" # for some XLS input
--infilter="Microsoft Excel 5.0" # for some XLS input
Re。 PDFではない:
特定の出力形式に変換するには、次を使用できます(完全ではないリスト):
--convert-to html:HTML
--convert-to html:draw_html_Export # force "Draw" to generate the HTML
--convert-to mediawiki:MediaWiki_Web # generate MediaWiki output
--convert-to csv:"Text - txt - csv (StarCalc)" # generate CSV spreadsheet output
--convert-to pptx:"Impress MS PowerPoint 2007 XML" # generate PPTX
--convert-to ppt:"MS PowerPoint 97" # generate PPT
--convert-to wmf:impress_wmf_Export # force "Impress" to generate the WMF
--convert-to wmf:draw_wmf_Export # force "Draw" to generate the WMF
--convert-to emf:impress_emf_Export # force "Impress" to generate the EMF
--convert-to emf:draw_emf_Export # force "Draw" to generate the EMF
--convert-to svg:impress_svg_Export # force "Impress" to generate the SVG
--convert-to svg:draw_svg_Export # force "Draw" to generate the SVG
--convert-to xlsx:"Calc MS Excel 2007 XML" # generate XLSX
--convert-to xls:"MS Excel 97" # generate XLS like Excel 97
--convert-to xls:"MS Excel 95" # generate XLS like Excel 95
--convert-to xls:"MS Excel 5.0/95" # generate XLS like Excel 5.0/95
ばかげているように聞こえるかもしれませんが、私はこれに悩まされました:Ubuntu 14.04では、libreoffice-coreまたは-commonパッケージのみをインストールしてPDFに変換するだけでは不十分ですが、libreoffice-writerを代わりに/追加でインストールする必要があります。注意すべき重要なことは、libreoffice-core | commonは何らかの機能的なlibreofficeベース、つまり名前;-)をもたらすようであるため、ファイルを変換するために実行してもエラーにならず、代わりにソケットで待機するように見えることです入力などに... -core | commonを依存関係として持つlibreoffice-writerをインストールした後、ODTファイルをPDFに変換すると、使用したのとまったく同じコマンドラインでチャームのように機能しました前。
アプリケーションが何らかの形で動作しているように見えるが、パッケージが欠落しているためにまったく不可能であり、それについて何も伝えていないことに少し狂っているようです。
更新
Libreofficeの現在のバージョンは機能しています:v5.2.6.2(mac)
私は次のコマンドを使用しています
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir . the_file_to_convert
OLD
新しいバージョン(> 4.2.4.2)で変換が機能していないようですlibreoffice 4.2.4.2を使用しています古いバージョンは http://downloadarchive.documentfoundation.org/libreoffice/old/4.2からダウンロードできます.4.2 /
linux(debパッケージを使用):
libreoffice4.2 --headless --convert-to pdf myfile.odt
窓:
swriter.exe --headless --convert-to pdf myfile.odt
LibreOffice 4.2.8.2も使用しています(GNU/Linux)が、DOCファイルをHTMLファイルに変換しようとしました。 libreoffice-headless
をインストールしましたが、端末もハングしていました。 Kurt Pfeifleの各弾丸を試しましたが、うまくいきませんでした…
ソリューションは簡単でした:libreoffice-writer
(おそらくlibreoffice-filters
も問題ありませんが、libreoffice-writer
とLibreOfficeの他の大きなコンポーネントに依存します)。
これが役立つことを願っています。
私は同じ問題を抱えて一日中動けなくなった。愚かな私は、私がネットワークファイルシステムとの間で変換しようとしていたことを理解することで終わりました。でも私はそれをサポートしないために、または少なくとも私の構成ではない正しいlibreofficeのseemesを書いています。
これを解決するには、/ tmpに変換してからファイルを手動で移動しました。それが役に立てば幸い。