如何为Mac OSX编写虚拟打印机驱动程序

12

我需要为OSX编写一个“虚拟打印机驱动程序”,这样当用户按下Command+P以打开打印对话框时,他会看到我的虚拟打印机......用于生成各种类型的文件,而不是实际打印到纸张上。

我对这个主题还不熟悉,我查找了一些资料,但没有找到相关内容。您有关于覆盖此主题的文档的链接或参考资料吗?


1
请定义“各种类型的文件”!有几种可能适合您的问题。 - user3850
看看我的回答,VipRiser正是你想要的。 - Cameron Lowell Palmer
3个回答

12

不必编写驱动程序,可以考虑使用OS X打印对话框的PDF Services功能。您可以在系统范围的/Library/PDF Services或用户的~/Library/PDF Services目录中放置AppleScript、Automator工作流或应用程序或文件夹的符号链接/别名。这些项目将出现在打印对话框中的PDF弹出菜单中,如果用户选择该项目,则文件的PDF将被放置在文件夹中或传递给应用程序、脚本或工作流。


这是一个不错的解决方案,在我的情况下,我需要将文件推送到HTTP服务器上。我该如何实现呢?另外,当从列表中选择我的打印机时,我想显示我的自定义UI(其中将包含用户身份验证等)。 - Satyam
你应该打开一个新的问题并完整地描述你的问题。 - Ned Deily
我发布了一个问题:http://stackoverflow.com/questions/17691092/mac-showing-my-service-in-printers-list - Satyam
有没有关于如何做这个的信息或示例,并且这在最新版本的OSX Mountain Lion上是否可行? - Mark Redman
马克,我已经更新了回复中的链接,指向当前的苹果支持页面,用于“PDF服务”,是的,在Mountain Lion上它仍然可以工作。 - Ned Deily

1
如果绝对需要打印机驱动程序而PDF服务不适用,则需要编写自己的CUPS驱动程序。Mac OS和Linux都使用CUPS进行打印,因此该解决方案可适用于两个系统。CUPS文档提供了有关编写驱动程序(https://www.cups.org/doc/postscript-driver.html)的说明,通常包括创建以下内容:一个“过滤器”程序,将输入转换为打印机代码并将其发送到打印机;描述打印机的PPD文件(https://en.wikipedia.org/wiki/PostScript_Printer_Description)。

关于如何在Python中编写打印驱动程序,有一篇很好的教程:https://behind.pretix.eu/2018/01/20/cups-driver/,同时提供了一个开源示例用于控制FGL打印机:https://github.com/pretix/cups-fgl-printers,可以根据您的需求进行适应。


2
欢迎提供解决方案的链接,但请确保您的答案即使没有链接也是有用的:在链接周围添加上下文,以便其他用户知道它是什么以及为什么存在,然后引用您链接的页面中最相关的部分,以防目标页面不可用。仅仅是一个链接的答案可能会被删除。 - Dharman
虽然此链接可能回答了问题,但最好在此处包含答案的必要部分并提供参考链接。如果链接页面更改,则仅链接的答案可能会变得无效。- 【来自审阅】 - Gsk
@Gsk - 我已根据您的反馈扩展了答案。 - Marcin Raczkowski
@Dharman - 我根据您的反馈扩展了答案。 - Marcin Raczkowski
我正在寻找适用于Mac OSX 10.6.8的Brother MFC-L2713DW打印机驱动程序,但Brother不支持。这会让我能够编写一个吗? - Zimba

1

这被称为VipRiser - 一个可扩展的虚拟PDF打印机

已经有一个可以做到这一点的驱动程序。VipRiser安装了一个保存文件的打印机。我用它来“打印”我在线购买的乐谱。打印对话框底部现有的“保存为PDF”选项无法使用,因为音乐供应商已禁用此功能,必须打印到打印机。

为了获得对虚拟打印机的最广泛和最简单的支持,我使用VipRiser而不是使用PDF服务。PDF服务在某些情况下有效,但许多网站正在阻止使用PDF服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接