如何以编程方式实现正常Windows打印队列'假脱机文件'的假脱机文件标题的编辑在它发送到打印机之前?

时间:2017-02-08 01:06:09

标签: java c# printing print-spooler-api pjl

如何拦截和更改Windows 7打印假脱机文件(.SPL)以在标题中添加一些其他信息,例如' @PJL SET NAME =" PainPoint" '在执行打印作业期间将此文件发送到打印机之前?

顶部的.SPL文件部分提取是:

%-12345X@PJL SET STRINGCODESET=UTF8
@PJL COMMENT DATE=02/08/2017
@PJL ENTER LANGUAGE=PCLXL
) HP-PCL XL;2;1;FXXPL2-1.0.0,WINNT-6.1,XPL2DRV-6.9.1.1
?X???........

1 个答案:

答案 0 :(得分:1)

编辑假脱机文件显然是微不足道的。诀窍是如何访问假脱机文件。

我可以想到一些方法:

  1. 假脱机后暂停打印作业,编辑它,然后将其释放。 See my answer here。这不是微不足道的,您可能需要根据可用的时间/精力求助于第三方软件。
  2. 创建打印驱动程序或spooler component,例如端口或language monitor以编辑文件。 (感谢Carey Gregory关于使用语言监视器的建议)。这是一个很大的主题,您必须阅读大量文档才能弄清楚如何操作,但WDK中有一个示例(Pjlmon)。请注意,适用于Windows 8 / Server 2012的较新V4驱动程序模型doesn't support these components
  3. 如果您不需要透明地执行此操作,则可以设置RedMon(免费)来调用您的应用来编辑假脱机文件。然后RedMon将其发送到所需的打印机。

  4. VeryPDF有一些similar commercial products具有更多功能。