web-dev-qa-db-ja.com

コマンド `libreoffice --headless --convert-to pdf test.docx --outdir / pdf`が機能しない

DOCXをPDFに変換することを目的としたこのLibreOfficeコマンドを使用した後、長い間待たなければなりません。

libreoffice --headless --convert-to pdf test.docx --outdir /pdf

しかし、応答もエラーもありません。ファイルは変換されません。端末がハングしているようです。

だから、エラーを追跡する方法はありますか?

50
vishal
  1. まず、コマンドへの絶対パスを指定して試してみます。

  2. libreofficeバイナリが機能しないのではないかと疑っています。sofficeバイナリを見つけて、機能するかどうかを確認する必要があります。

  3. 次に、--convert-to pdfでは不十分です。次のことが必要です。

    --convert-to pdf:writer_pdf_Export
    

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

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

     "-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 v4.4.3.2を搭載したMac OS X Mavericks 10.9.5で動作します(とにかく異なるバイナリsofficeを使用します...)。

    すべてうまくいかない場合:

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

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

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

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

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

    $ /path/to/libreoffice -h
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • ここで出力を取得しますか?
    • 3つのバイナリ/シンボリックリンクのうち、どれですか?
    • 出力を記録します。
    • 出力を教えてください!!!

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

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

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

    $ /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.
    
  12. 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にのみ変換できません。

  • 任意の入力フォーマットを処理し、それを開いて「読み取る」ことができます:DOC、XLS、XLSX、PPT、PPTX、...
  • any出力形式に変換できます。この出力形式は、DOC、XLS、XLSX、PPT、PPTXなどです。

もちろん、結果が完璧になることは決してなく、時にはあなたに受け入れられないことさえあります。

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
91
Kurt Pfeifle

ばかげているように聞こえるかもしれませんが、私はこれに悩まされました:Ubuntu 14.04では、libreoffice-coreまたは-commonパッケージのみをインストールしてPDFに変換するだけでは不十分ですが、libreoffice-writerを代わりに/追加でインストールする必要があります。注意すべき重要なことは、libreoffice-core | commonは何らかの機能的なlibreofficeベース、つまり名前;-)をもたらすようであるため、ファイルを変換するために実行してもエラーにならず、代わりにソケットで待機するように見えることです入力などに... -core | commonを依存関係として持つlibreoffice-writerをインストールした後、ODTファイルをPDFに変換すると、使用したのとまったく同じコマンドラインでチャームのように機能しました前。

アプリケーションが何らかの形で動作しているように見えるが、パッケージが欠落しているためにまったく不可能であり、それについて何も伝えていないことに少し狂っているようです。

4

更新

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
    
3
lumos0815

LibreOffice 4.2.8.2も使用しています(GNU/Linux)が、DOCファイルをHTMLファイルに変換しようとしました。 libreoffice-headlessをインストールしましたが、端末もハングしていました。 Kurt Pfeifleの各弾丸を試しましたが、うまくいきませんでした…

ソリューションは簡単でした:libreoffice-writer(おそらくlibreoffice-filtersも問題ありませんが、libreoffice-writerとLibreOfficeの他の大きなコンポーネントに依存します)。

これが役立つことを願っています。

0
Linkid

私は同じ問題を抱えて一日中動けなくなった。愚かな私は、私がネットワークファイルシステムとの間で変換しようとしていたことを理解することで終わりました。でも私はそれをサポートしないために、または少なくとも私の構成ではない正しいlibreofficeのseemesを書いています。

これを解決するには、/ tmpに変換してからファイルを手動で移動しました。それが役に立てば幸い。

0