【问题标题】:Writing a virtual printer driver for windows为 Windows 编写虚拟打印机驱动程序
【发布时间】:2012-06-08 17:17:02
【问题描述】:

我是 Windows 开发的新手,我正在尝试编写用户模式 ​​Windows(XP、Vista 和 7)虚拟打印机驱动程序。我的目标是拦截第三方应用程序发送到硬件打印机的输出,并在输出结束时向该输出添加一些额外的数据(文本+图形)。然后发送最终的有效载荷以由硬件打印机打印。请注意,我的数据不会添加到机器的每次打印输出中,而只会添加到特定的第三方应用程序中。

我想在打印输出转换为任何页面描述语言 (PDL) 之前将其添加到打印输出中。我可以这样做吗?我是否能够以正确的格式在输出末尾添加我的额外数据?如果是,那么我需要编写什么样的驱动程序以及layer of the architecture 的位置?

有没有比编写用户模式打印机驱动程序更好的方法来做同样的事情?

最后,有没有示例代码、在线博客或书籍可以帮助我解决这个问题?

【问题讨论】:

  • 您打算如何识别打印应用程序?
  • 由于我打算编写打印机驱动程序,因此它将作为应用程序选择打印的选项之一出现。因此,当打印请求来自我的打印机驱动程序时,我会假设它来自该特定应用程序本身。
  • 我认为您不需要驱动程序。只需使用随 WDK 提供的标准 Postscript 驱动程序,添加 .PPD 和 .INF 文件为其命名并指定特征,然后将您的代码放入端口监视器中。端口监视器比打印驱动程序更容易构建和维护。
  • @CareyGregory:非常感谢凯里!实际上,我正在探索为我的目的使用端口监视器的选项。您可以添加您的评论作为答案吗?此外,我正在尝试使用this link 在 Windows 7 上安装 WDK 示例端口监视器(localmon)。但我不断收到此错误:“复制文件 ddklocalmon.dll 时发生错误。无法将文件复制到目标文件夹。”如果这是权限问题,那么我不确定如何以管理员身份执行此操作。你能帮忙吗?

标签: windows device-driver postscript wdk printers


【解决方案1】:

我认为最好让应用程序写入通用 Postscript 驱动程序并对生成的 Postscript 进行后处理,而不是试图理解写入打印机驱动程序的数据;有很多优秀的开源工具可用于操作 Postscript。

This page describes setting up a driver on Windows that will produce Postscript 尽管您会想要对 Postscript 做其他事情,而不是按照此处所述将其发送到另一台打印机。

【讨论】:

  • 感谢您的回复!实际上,我在浏览您的suggested link 时有疑问。实际上,使用我的软件的人可能正在使用带有任何类型的页面描述语言 (PDL) 的打印机,例如 ESC/PAGE(来自 Epson)、PCL、PostScript 等。所以我想知道所有这些打印机都能够打印输出来自 GhostScript,即预期文档的光栅化图像?
  • 按照您想要的方式转换 Postscript 后,您可以通过 Ghostscript 打印机驱动程序发送它,该驱动程序将 Postscript 转换为打印机可接受的格式。
【解决方案2】:

我认为您不需要司机。只需使用随 WDK 提供的标准 Postscript 驱动程序,添加 .PPD 和 .INF 文件为其命名并指定特征,然后将您的代码放入端口监视器中。端口监视器比打印驱动程序更容易构建和维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2017-12-16
    • 2017-08-31
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多