我正在尝试构建虚拟打印机。 已经有一些答案,例如this和this。
但是我的要求更具体。我只想创建一个可以添加到系统中的虚拟打印机,并且可以从任何应用程序访问。单击打印命令时,会弹出一个对话框,显示真实的打印机,并在打印时生成PDF。然后执行更多操作,例如将PDF推送到我的服务器。
我是否需要深入了解Windows驱动程序工具包?或者有免费的SDK吗?
感谢。
答案 0 :(得分:5)
不确定这个问题是否仍与您相关,但您可能想要考虑这样的事情:
使用WDK(Windows驱动程序工具包)创建Unidrv UI plugin。这将允许您在打印期间指定UI(用于打印机对话)。你想在这里展示UI的原因是因为它是在用户会话中运行的唯一打印机驱动程序组件之一(与打印应用程序相同的过程)。 XPS管道和端口监视器都是会话0。
如果您想坚持使用MS约定,您将在XPS Filter pipeline的渲染过滤器中执行假脱机文件到PDF转换(如果您使用的是XPSDrv driver)。过滤器管道是您有机会修改进入和最终过滤器中的XPS假脱机数据,将其转换为输出文档类型(在您的情况下为PDF)。
要进行后期打印处理,您可能需要考虑在端口监视器将打印输出写入磁盘后创建port monitor(再次使用WDK)并启动新进程以执行后期打印处理。
此方法的唯一问题是您无法在版本4驱动程序中使用端口监视器(这是Windows 8中的新类型驱动程序)。版本3驱动程序仍然可以在Win 8中运行,但我想它们最终会逐步淘汰。
对不起它可能不是很明显,但正如我所说,这是一个高级概述(不幸的是,除了简单的打印到文件之外,驱动程序开发仍然非常复杂)。版本4打印机驱动程序变得更容易开发,但不幸的是,删除端口监视器支持和其他改进,这使得开发任何需要后期处理的东西变得更加困难。
[免责声明:我与Mako SDK R& D团队有关]
我知道你要求一个免费的SDK,不幸的是我不知道什么是合适的,但我知道我们公司提供的虚拟打印机平台(SDK)对你有好处(打印到PDF并支持后期打印处理) )。您可以在Mako SDK website
希望无论如何这有点帮助。我知道打印机驱动程序的开发有时会非常混乱!
答案 1 :(得分:1)
在阅读并进行大量研究之后,为了设置像redmon这样的东西并使用打印机SDK,我使用此SDK完成了项目:http://www.novapdf.com/pdf-sdk.html
但是,此解决方案仅适用于Windows。
[我与novaPDF无关]
我已经调查了一个OSX版本,但是这将是一个不同的版本,您可以使用此方法设置一些内容:http://www.jms1.net/osx-pdf-services.shtml [我还没有尝试过]