如何在java中监听打印作业
我想知道如何查看在Java应用程序中将任何其他应用程序(Word,Excel,PDF阅读器)发送到打印机的打印详细信息。 这意味着,用户从一台PC向打印机发送各种类型的文档。
我的Java应用程序必须计算发送到打印机的文档数量。
如何在Java SE应用程序中获取这些详细信息? 任何资源,有用的链接,指导高度赞赏。
这不能使用Java直接完成,但有一种解决方法。
对于每个打印作业,Windows后台打印程序服务生成两个假脱机文件。
一个文件的作业设置为.SHD
扩展名,另一个文件的绘图命令为.SPL
扩展.SPL
。
这些文件可以基于每台打印机存储在用户定义的位置。 所有假脱机程序作业的默认位置是c:\windows\system32\spool\PRINTERS
。
基于每台打印机设置位置
-
单击“开始”,单击“运行”,在打开的框中键入
regedit
,然后单击“确定”。 -
找到以下注册表子项,其中
是您的打印机的名称:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Printers \
在右窗格中,右键单击“
SpoolDirectory
,然后单击“修改”。 -
在“数值数据”框中,键入要存储假脱机文件的位置。 例如,键入
c:\windows\system32\spool\printers
作为默认位置。 -
退出注册表编辑器。 重新启动Print Spooler服务。
所有新职位的formsXXXXX.SPL
和XXXXX.SHD
,并将与其职务ID一致编号。
使用Java,您可以监视此文件夹,以查找发送到打印机服务或特定打印机的新作业。