我有一些学生,当被要求提供 PDF 时,他们有时会给我一份 OpenOffice 文档或电子表格。 file(1)
我可以识别这些文档,但我一直无法找到如何使用命令行将它们转换为 PDF。(的手册页ooffice(1)
列出了一个选项打印一个文档,但不能转换为 PDF。)Google 没什么帮助,只是让我感到不安,如果没有一个用我不了解的语言编写的漂亮脚本,以及我找不到其文档的 API,就无法做到这一点。
有人能帮助我解决仅使用 Unix 命令行将 OpenDocument 转换为 PDF 的问题吗?
答案1
我认为最直接的方法是在你的盒子上设置一个 pdf 打印机,然后:
ooffice -pt pdfprinter studentwhodoesntfollowdirectionswell.odt
编辑:刚刚在 Ubuntu 论坛上发现一篇帖子,其中有人提出了与我建议的相同的解决方案(并附有方便的说明)。从命令行打印为 PDF [已解决]
编辑2:我刚刚遇到unoconv
这是一个使用 OOo 的 UNO 绑定的 Python 脚本。所以我只是想更新这个答案
答案2
我使用杯子-pdf。您需要安装 OpenOffice,并且必须以无头模式运行 ooffice,这样应用程序才不会启动 GUI。
PDF 打印机通常位于存储库中,因此简单sudo apt-get install cups-pdf
或yum install cups-pdf
。
接下来你需要安装打印机。如果你愿意,你可以安装打印机通过命令行。
如果你通过 GUI 安装打印机(在 Ubuntu 上),那么很简单系统 -> 管理 -> 打印. 单击箭头并选择新打印机:
按照向导操作,记下打印机的名称,在命令行中需要用到它。如您所见,我使用了 cups-pdf:
完成向导后,您就可以进行转换了。打开终端并运行:
ooffice -headless -nologo -pt cups-pdf doc.odt
在您的主目录下,您将有一个 PDF 文件夹。里面是您转换后的文档。
答案3
$oowriter --convert-to pdf --invisible name.odt
就这些。如果您的 CLI 是图形化的,则可以省略“--invisible”选项。已在 opensuse 12.3 上测试。
答案4
使用 CentOS 7 (4.1.4) 自带的 libreoffice:
soffice --headless --convert-to pdf file.odt
soffice --headless --convert-to doc file.odt
soffice --headless --convert-to html file.odt
soffice 和 libreoffice 是彼此相似的相同二进制文件。oowriter 是调用 libreoffice --writer 的脚本。因此,上述内容应适用于所有 staroffice 衍生产品(libreoffice、openoffice)。
我每天用它转换数百份文档,效果很好。