如何构建虚拟打印机?

9
我正在尝试构建一个虚拟打印机。 已经有一些类似于这个这个的答案。
然而,我的需求更具体。我只想创建一个虚拟打印机,可以添加到系统中,并可以从任何应用程序访问。在点击打印命令时,会弹出类似于真实打印机的对话框并生成PDF文件。然后,执行一些其他操作,例如将PDF文件推送到我的服务器。
我需要深入了解Windows Driver Kit吗?还是有免费的SDK可用?
谢谢。
2个回答

7

不确定这个问题对您是否仍然相关,但您可能希望考虑类似以下的解决方案:

使用WDK(Windows Driver Kit)创建Unidrv UI插件。这将允许您在打印期间指定UI(用于打印机对话框)。您希望在此处显示UI的原因是因为它是仅在用户会话中运行的打印机驱动程序组件之一(与打印应用程序相同的进程)。XPS管道和端口监视器都在会话0中。

如果您想坚持使用微软的约定,您可以在XPS过滤器管道的渲染过滤器中将溢出文件转换为PDF(如果您正在使用XPSDrv驱动程序)。过滤器管道是您有机会修改输入的XPS溢出数据并在最终过滤器中将其转换为输出文档类型(在您的情况下为PDF)的地方。
要进行打印后处理,您可能需要考虑创建一个端口监视器(再次使用WDK),并在端口监视器将打印输出写入磁盘后启动新进程进行打印后处理。
这种方法的唯一问题是,在Version 4驱动程序中无法使用端口监视器(这是Windows 8中的新型驱动程序)。Version 3驱动程序仍然适用于Win 8,但我想它们最终会被淘汰。
抱歉,可能不太明显,但正如我所说,这是一个高层次的概述(不幸的是,驱动程序开发仍然比简单的打印到文件复杂得多)。版本4的打印机驱动程序变得更加容易开发,但不幸的是,随着端口监视器支持和其他改进的删除,它使得开发任何需要后处理的东西变得更加困难。
[免责声明:我与Mako SDK研发团队有关联] 我知道你要求一个免费的SDK,不幸的是,我不知道有什么适合的,但我知道我们公司提供一个虚拟打印机平台(SDK),对你很有帮助(可以打印为PDF并支持后处理)。你可以在Mako SDK网站找到更多信息。
希望这会有所帮助。我知道打印机驱动程序开发有时可能非常令人困惑!

2

在阅读了大量资料和研究之后,我想搭建类似redmon并使用打印机SDK,我使用了这个SDK完成了该项目:http://www.novapdf.com/pdf-sdk.html

然而,这个解决方案仅适用于Windows操作系统。

[我与novaPDF无关]

我已经调查了一个OSX版本,但它将是一个不同的构建,您可能可以使用这种方法设置:http://www.jms1.net/osx-pdf-services.shtml [我尚未尝试过此方法]


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