Java 如何以编程方式实现对普通windows打印队列的spool文件头的编辑';假脱机文件';在发送到打印机之前?
如何截取并更改windows 7打印假脱机文件(.SPL),以便在执行打印作业期间将此文件发送到打印机之前,在标题中添加一些附加信息,如“@PJL SET NAME=“PainPoint” 从顶部部分提取的.SPL文件是:Java 如何以编程方式实现对普通windows打印队列的spool文件头的编辑';假脱机文件';在发送到打印机之前?,java,c#,printing,print-spooler-api,pjl,Java,C#,Printing,Print Spooler Api,Pjl,如何截取并更改windows 7打印假脱机文件(.SPL),以便在执行打印作业期间将此文件发送到打印机之前,在标题中添加一些附加信息,如“@PJL SET NAME=“PainPoint” 从顶部部分提取的.SPL文件是: 编辑spool文件显然很简单。诀窍是如何访问spool文件 我可以马上想到几个方法: 后台打印后暂停打印作业,对其进行编辑,然后释放。这不是小事,您可能需要根据可用的时间/精力求助于第三方软件 创建打印驱动程序或,如端口或,以编辑文件。(感谢Carey Gregory建议使
编辑spool文件显然很简单。诀窍是如何访问spool文件 我可以马上想到几个方法:
我有java/scala背景,你有什么建议?实际任务是在spool文件中包含额外的PJL头,然后发送到打印机。由于您暗示要避免本机编码,我建议先尝试选项3。我设置了RedMon,但它只能转发到另一台打印机/输出。我想我会在Visual C++或其他方面工作,在打印后暂停打印任务,编辑它然后释放它是完全可以实现的吗?我只需要为1台打印机实现此功能,但不能在正常工作的其他打印机上实现。我认为您可以使用其他端口监视器,但它们是商用的。VeryPDF在他们的众多产品中有一种——它是。另一个。或者,您可以使用Windows SDK监视器示例作为基础编写自己的端口监视器(选项2),也可以使用RedMon源代码。但是,是的,选择1是绝对可能的。我的另一个答案链接到示例。这就是语言监视器的用途。
%-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???........