假设目录中有一组 .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
错误:无法连接或启动自己的监听器。正在中止。