2017-02-08 52 views
1

如何截取并更改Windows 7打印假脱机文件(.SPL),以便在打印执行期间将此文件发送到打印机之前在标头中添加一些附加信息,如'@PJL SET NAME ='PainPoint''工作?如何以编程方式在发送到打印机之前编辑正常Windows打印队列“假脱机文件”的假脱机文件头?

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

%[email protected] 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

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

我能想到的副手几个方面:

  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具有更多功能。

+0

那么我是一个java/scala背景,你有什么建议?实际的任务是将其他PJL头文件包含到假脱机文件中,然后发送到打印机。 – PainPoints

+0

既然你暗示你想避免本地编码,我会建议先尝试选项3。 –

+0

我设置了RedMon,但它只能转发到另一台打印机/输出。 我想我会在Visual C++或其他工作,它是完全可以达到暂停打印作业后,假脱机,编辑,然后释放?我只需要为1台打印机实现此功能,但不能在其他正常工作的打印机上实现此功能。 – PainPoints

相关问题