コマンドラインからOffice LibreファイルのセットをPDF化する


2

一連の.docxファイルが.pdf形式に変換されるディレクトリにあると想定します。ファイルを一覧表示し、PDFファイルをターゲットディレクトリに「印刷」するコマンドにそれをパイプする巧妙な方法はありますか?たとえば

の結果の出力
ls -l *.docx

pdf-commandに入力されます(これがどのように行われるかはあなたの裁量です)。

MS-WordがPCにインストールされていない(Office Libreがインストールされている)とします。

プリファレンスは、Ubuntuユーティリティ/パッケージの最小限のインストールを必要とするソリューション用であり、十分に文書化されています。ありがとうございます

4

This simple command should help:

soffice --headless --convert-to pdf ./* --outdir /path/to/target

Or:

soffice --headless --convert-to pdf /path/to/files/folder --outdir /path/to/target

The format is:

soffice --headless --convert-to <TargetFileExtension>[:NameOfFilter] file_to_convert.xxx

Where:

  • filter: specific format of file to convert
  • headless: Starts in "headless mode" which allows using the
    application without GUI. This special mode can be used
    when the application is controlled by external clients
    via the API.

Then to "output" the converted files I used this command:

ls -p | grep -v / | xargs -d "\n" soffice --headless --convert-to pdf --outdir /tmp/convert/target 2> /dev/null | grep -Eo "/.*\.doc[x]?"

Info:

  • ls -p: Append indicators to folders.
  • grep -v /: Only return files.
  • xargs -d "\n": Used to pass the output to the soffice command, takes care of white spaces in filenames.
  • 2> /dev/null: Hide errors.
  • grep -Eo "/.*\.doc[x]?": Return only affected files. And the [x]? catches both .docx and .doc files as used on my end and can be left out.

Let me add an anwser using the example OP gave:

ls *.docx | xargs -d "\n" soffice --headless --convert-to pdf --outdir /tmp/container/target

see: https://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/

User soffice --help to see more options to that command.


1

unoconv was a fast and simple, though for some reason on the first try it returned an error.

Install:

sudo apt-get install unoconv

Usage:

unoconv -f pdf -o proper_format *.docx

The command to converts all .docx documents in the current directory (whether two or a hundred) to pdf format and place them in the “proper_format” directory beneath the current directory. The directory "proper_format" is created if it does not exist.

For some reason the first attempt returned an error:

mkdir ./pdftarget
unoconv -f pdf -o pdftarget *.docx

Error: Unable to connect or start own listener. Aborting.