gpt4 book ai didi

objective-c - 如何以编程方式从 OSX 上的任何文档生成 PDF?

转载 作者:太空狗 更新时间:2023-10-30 03:15:08 31 4
gpt4 key购买 nike

我正在为 OSX 开发一个项目,用户可以在其中选择我需要从中生成 PDF 的文档集合(来自任何应用程序)。标准的 Macintosh 打印对话框有一个 PDF 按钮,它有许多与 PDF 相关的命令,包括“另存为 PDF...”。但是,我需要在不需要用户交互的情况下生成 PDF 文件。理想情况下,我希望它适用于任何类型的文档。

这是我目前探索过的选项:

  • 自动化操作。 Automator 有一个 PDF 库,但它提供了处理 PDF 文件的操作,而不是生成它们。有一个 Finder 操作可以打印任何文件,但只能打印到真正的打印机。
  • 苹果脚本。某些应用程序能够生成 PDF 文件(例如,如果您将“将文档保存在“test.pdf”中”发送到 Pages,它将生成 PDF(但这仅适用于 Pages - 我需要支持任何类型的文档) .
  • 自定义打印机。我可以创建一个虚拟打印机驱动程序,然后使用自动操作,但我不喜欢将用户与打印列表中的额外打印机混淆的想法。

我希望有某种方式可以与事件应用程序交互,就像用户正在执行以下步骤一样:

  1. 执行 Cmd-P(打开打印对话框)
  2. 点击“PDF”按钮
  3. 选择“另存为 PDF...”(菜单中的第二项)
  4. 在保存对话框中输入文件名
  5. 点击“保存”

如果这是最好的方法(是吗?),那么真正的问题是:如何将 UI 事件发送到外部应用程序(击键、鼠标事件、菜单选择)?

更新:仅澄清一点:我需要转换为 PDF 的文档是由其他应用程序创建的文档。例如,用户可能会选择 Word 文档或 Numbers 电子表格或 OmniGraffle 绘图或网页。共同点是这些文档中的每一个都有一个关联的应用程序,并且该应用程序知道如何打印它(并且 OSX 知道如何将打印输出呈现为 PDF 文件)。

因此,Cocoa Dev Central 上的示例没有帮助,因为它们是关于从我的应用程序生成 PDF。

最佳答案

我认为您可以使用 applescript 打开文档,然后使用 applescript UI scripting调用打印菜单。

例如:

tell application "System Events"
tell window of process "Safari"
set foremost to true
keystroke "p" using {command down}
delay 3
click menu button "PDF" of sheet 2
click menu item "Save as PDF…" of menu 1 of menu button "PDF" of sheet 2
keystroke "my_test.file"
keystroke return
delay 10
end tell

end tell

关于objective-c - 如何以编程方式从 OSX 上的任何文档生成 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276362/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com