cocoa - 如何从 Cocoa 应用程序创建 "print utility"?

标签 cocoa osx-lion

我想创建一个简单的应用程序,在“另存为 pdf”组合框中创建一个新的系统范围条目。该应用程序的结果可能是“将 pdf 保存到 dropbox 发票”菜单条目。

save pdf to dropbox invoices example

工作原理:将示例流程从 /Library/PDF Services 复制粘贴到 ~/Library/PDF Services 中,并编辑包的内容(工作流程包含几项)。

The contents of the example workflow looks like this:

对于我的应用程序,我希望在我的 bundle 中包含此工作流程的模板,并动态编辑新工作流程,然后将其导出到 ~/Library/PDF Services 文件夹。 这样,我就可以实现新菜单条目的本地化,以及其他优点。

那么,创建这样一个“工作流程”包的最佳方法是什么,包括 info.plist、一些本地化、...复制/编辑现有的包,还是有更神奇的方法? 最后,我认为我需要的是动态创建一个新的应用程序。

最佳答案

工作流程(包括您所询问的打印插件)通常是使用/Applications/Automator.app 创建的。你熟悉吗?

您的工作流程可以引用“变量”。基于文本模板的变量可以有一个初始值。该值存储在定义工作流的 .wflow 文件(位于 .workflow 包内)中。我想您可以在复制工作流程后编辑该初始值以对其进行自定义。这似乎有些脆弱,因为 .wflow 文件的格式没有记录。

除了 Automator 工作流程之外,您还可以将文件夹、应用程序、命令行工具和 AppleScript 文件或其中任何文件的别名放入 PDF 服务目录中。如果您发现使用其中之一更容易,请这样做。脚本文件可能是最容易动态创建和自定义的。

有关更多信息,请参阅Providing PDF Workflow Options in the Print Dialog .

关于cocoa - 如何从 Cocoa 应用程序创建 "print utility"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462804/

相关文章:

Swift StatusBarItem,使按钮支持拖放

ios - 如何判断当前线程是否创建为 NSThread?

macos - Heroku 需要 OpenJDK 版本 6 用于 Playframework - 有适用于 Mac os Lion 的 OpenJDK 6 吗?

cocoa - 全屏狮子复合动画

objective-c - 从 IOUSBInterface 管道中找出数据

php - Cocoa Mac App Webview session 丢失

objective-c - 通过 NSView 点击

postgresql - 为什么我在 Mac OS Lion 中遇到 postgres 无法连接到服务器错误?

macos - 无法在 vim 中安装 FuzzyFinder

objective-c - NSTextView 的自定义对焦环