如何在java中监听打印作业

我想知道如何查看在Java应用程序中将任何其他应用程序(Word,Excel,PDF阅读器)发送到打印机的打印详细信息。 这意味着,用户从一台PC向打印机发送各种类型的文档。

我的Java应用程序必须计算发送到打印机的文档数量。

如何在Java SE应用程序中获取这些详细信息? 任何资源,有用的链接,指导高度赞赏。

这不能使用Java直接完成,但有一种解决方法。

对于每个打印作业,Windows后台打印程序服务生成两个假脱机文件。

一个文件的作业设置为.SHD扩展名,另一个文件的绘图命令为.SPL扩展.SPL

这些文件可以基于每台打印机存储在用户定义的位置。 所有假脱机程序作业的默认位置是c:\windows\system32\spool\PRINTERS

基于每台打印机设置位置

  1. 单击“开始”,单击“运行”,在打开的框中键入regedit ,然后单击“确定”。

  2. 找到以下注册表子项,其中是您的打印机的名称:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Print \ Printers \

    在右窗格中,右键单击“ SpoolDirectory ,然后单击“修改”。

  3. 在“数值数据”框中,键入要存储假脱机文件的位置。 例如,键入c:\windows\system32\spool\printers作为默认位置。

  4. 退出注册表编辑器。 重新启动Print Spooler服务。

所有新职位的formsXXXXX.SPLXXXXX.SHD ,并将与其职务ID一致编号。

使用Java,您可以监视此文件夹,以查找发送到打印机服务或特定打印机的新作业。