我正在尝试在命令行上将一堆分类的 iWork 文件(Numbers、Pages、Keynote)批量转换为 PDF。
我一直在尝试 cups-filter 但 iWork 类型没有 MIME 类型的过滤器。然后我研究了使用 qlmanage 生成预览图像并使用它,但这似乎不适用于多文件 Keynote 文档,因为它们生成为 HTML 而不是 PDF。
有什么建议么?我宁愿不求助于 AppleScript。
这就是我最终要使用的,因为我真的想避免使用 AppleScript。
保存 iWork 文档时,有一个“在文档中包含预览”复选框。选中此项会在 iWork 文档包(实际上是一个 zip 文件)中创建一个“QuickLook/Preview.pdf”。幸运的是,我检查了大多数 zip 文件,所以这只是解压缩到 NSTemporaryDirectory 并抓取该文件的情况。
对于那些没有的人,我整理了一个脚本来运行 qlmanage 来创建文档预览。对于一些创建 PDF 的人,对于其他人,它会创建一个 HTML 文件。然后,您可以使用http://code.google.com/p/wkhtmltopdf/将此 HTML 转换为 PDF。
我创建了一个.applescript
脚本,将.pages
文件夹中的所有文件转换为.docx
. .pdf
可以轻松添加支持。在pages2docx.applescript
你只需要替换Microsoft Word
为PDF
.
嗯...你需要的东西
除非你想重新发明 iWork 套件……听起来更简单,只是告诉 iWork 应用你想从它们那里得到什么。
我会使用 Applescript,但也许您可以将Ruby 和 Python与 Scripting Bridge一起使用来完成您需要的工作
借助 Scripting Bridge,RubyCocoa 和 PyObjC 脚本可以做 AppleScript 脚本可以做的事情:控制可编写脚本的应用程序并与它们交换数据。
我有一段时间没有使用 Scripting Bridge,但我相信您可以告诉应用程序打印文档。任何可以在 OS X 中打印的应用程序都可以将其发送到 PDF。
这里有几个命令可以帮助那些想不假思索地让它工作的人。它适用于我的 ppt 文件。
确保从这里获取 wkhtmltopdf 。
qlmanage -p -o /tmp /path/of/file.ppt
wkhtmltopdf /tmp/file.ppt.qlpreview/Preview.html /output/to/file.pdf
如果您希望原始页面保持一致,您可能不得不摆弄尺寸,因为我使用以下参数的 ppt 完成了这项工作:
wkhtmltopdf --page-width 200 --page-height 145 Preview.html file.pdf
编辑:我编写了一个 Python 脚本来进行批量转换。希望人们可以做出贡献,使其更加强大: