9

我正在尝试构建虚拟打印机。已经有一些像thisthis这样的答案。

但是我的要求更具体。我只想创建一个可以添加到系统中并且可以从任何应用程序访问的虚拟打印机。单击打印命令时,会弹出一个看起来像真实打印机的对话框,并在打印时生成 PDF。然后执行更多操作,例如将 PDF 推送到我的服务器。

我需要深入研究 Windows 驱动程序工具包吗?或者有没有免费的SDK?

谢谢。

4

2 回答 2

7

不确定这个问题是否仍然与您相关,但您可能想考虑这样的事情:

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

如果您想遵守 MS 约定,您将在XPS 过滤器管道的渲染过滤器中将假脱机文件转换为 PDF (如果您使用的是XPSDrv 驱动程序)。过滤器管道是您有机会修改传入和最终过滤器中的 XPS 假脱机数据的地方,将其转换为您的输出文档类型(在您的情况下为 PDF)。

要进行打印后处理,您可能需要考虑创建一个端口监视器(再次使用 WDK)并在端口监视器将打印输出写入磁盘后启动一个新进程来执行打印后处理。

这种方法的唯一问题是您不能在版本 4 驱动程序中使用端口监视器(这是 Windows 8 中的新型驱动程序)。版本 3 驱动程序仍然可以在 Win 8 中使用,但我想它们最终会被淘汰。

抱歉,这可能不是很明显,但正如我所说,这是一个高级别的概述(不幸的是,驱动程序开发仍然非常复杂,除了简单的打印到文件之外)。版本 4 打印机驱动程序的开发变得更加容易,但不幸的是,由于移除了端口监视器支持和其他改进,开发任何需要后处理的东西变得更加困难。

[免责声明:我是 Mako SDK 研发团队的成员]
我知道您要求提供免费的 SDK,不幸的是我不知道有什么合适的,但我知道我们公司提供了一个虚拟打印机平台 (SDK),它对您有好处(打印为 PDF 并支持打印后处理)。您可以在Mako SDK 网站上找到更多信息

无论如何,希望这会有所帮助。我知道打印机驱动程序开发有时会非常混乱!

于 2013-10-24T16:06:18.373 回答
2

在阅读并进行了大量研究之后,为了设置类似 redmon 的东西并使用打印机 SDK,我使用这个 SDK 完成了这个项目:http ://www.novapdf.com/pdf-sdk.html

但是,此解决方案仅适用于 Windows。

[我不隶属于novaPDF]

我调查了一个 OSX 版本,但是这将是一个不同的版本,您可以使用此方法进行设置:http ://www.jms1.net/osx-pdf-services.shtml [我还没有尝试过]

于 2013-10-25T11:00:14.587 回答