从命令行将一组 Office Libre 文件转换为 PDF

从命令行将一组 Office Libre 文件转换为 PDF

假设目录中有一组 .docx 文件需要转换为 .pdf 格式。有没有一种巧妙的方法可以列出这些文件并将其导入到命令中,从而将 pdf 文件“打印”到目标目录?例如,结果输出

ls -l *.docx

将被输入到 pdf 命令中(如何完成由您自行决定)。

假设 PC 上未安装 MS-Word(已安装 Office Libre)。

优先考虑需要最少安装 Ubuntu 实用程序/软件包且有详细文档的解决方案。谢谢

答案1

这个简单的命令应该有帮助:

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

或者:

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

格式为:

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

在哪里:

  • 过滤器:要转换的文件的特定格式
  • headless:以“无头模式”启动,允许在没有 GUI 的情况下使用应用程序。当应用程序由外部客户端 通过 API 控制时,
    可以使用此特殊模式。

然后,为了“输出”转换后的文件,我使用以下命令:

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

信息:

  • ls -p:将指标附加到文件夹。
  • grep -v /:仅返回文件。
  • xargs -d "\n":用于将输出传递给soffice命令,处理文件名中的空格。
  • 2> /dev/null:隐藏错误。
  • grep -Eo "/.*\.doc[x]?":仅返回受影响的文件。并且[x]?捕获了我使用的.docx.doc文件,可以将其省略。

让我使用 OP 给出的例子添加一个答案:

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

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

用户soffice --help可以看到该命令的更多选项。

答案2

unoconv 是一个快速而简单的,但由于某种原因,第一次尝试时它返回了错误。

安装:

sudo apt-get install unoconv

用法:

unoconv -f pdf -o proper_format *.docx

该命令将当前目录中的所有 .docx 文档(无论是两个还是一百个)转换为 pdf 格式,并将它们放在当前目录下的“proper_format”目录中。如果目录“proper_format”不存在,则创建该目录。

由于某种原因,第一次尝试返回错误:

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

错误:无法连接或启动自己的监听器。正在中止。

相关内容