我想知道如何查看在Java应用程序中发送给打印机的任何其他应用程序(Word,Excel,PDF阅读器)的打印详细信息。这意味着,用户可以从一台PC向打印机发送各种类型的文档。如何在java中收听打印作业
我的Java应用程序必须计算发送到打印机的文档数量。
如何在Java SE应用程序中获取这些详细信息?任何资源,有用的链接,指导高度赞赏。
我想知道如何查看在Java应用程序中发送给打印机的任何其他应用程序(Word,Excel,PDF阅读器)的打印详细信息。这意味着,用户可以从一台PC向打印机发送各种类型的文档。如何在java中收听打印作业
我的Java应用程序必须计算发送到打印机的文档数量。
如何在Java SE应用程序中获取这些详细信息?任何资源,有用的链接,指导高度赞赏。
这不能用Java直接完成,但有一个解决方法。
对于每个打印作业,都有两个假脱机文件由Windows假脱机程序服务生成。
一个文件,.SHD
扩展名用于作业设置,另一个文件扩展名为.SPL
用于绘图命令。
这些文件可以存储在基于每台打印机的用户定义位置。所有假脱机程序作业的默认位置是c:\windows\system32\spool\PRINTERS
。
要在每个打印机的基础
单击开始设置的位置,单击运行,在打开框中键入regedit
,然后单击 确定。
找到以下注册表子项,其中<printername>
是打印机的 名称:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows NT \ CURRENTVERSION \打印\打印机\
在右窗格中, 用鼠标右键单击SpoolDirectory
,然后单击修改。
在数值数据框中,键入您想要假脱机文件存储的位置。 例如,键入c:\windows\system32\spool\printers
作为默认的 位置。
退出注册表编辑器。重新启动打印后台处理程序服务。
所有新的就业机会将是形式XXXXX.SPL
和XXXXX.SHD
的,将与他们JobIDs相同的标号。
使用Java,您可以监视此文件夹中发送给打印机服务或特定打印机的新作业。
非常感谢John先生。正如你所提到的那样,有一个文件夹。你能解释一下吗?我想知道,每个打印文件都是一个.SHD文件吗?(例如打印一个文件,一个.SHD文件)和这个文件存在多长时间?(直到命令发送到打印机?,我抬头看着我的文件夹,但它是空的,尽管我已经打印了ealier),如果是这样的话,我们是否应该一直在看这个文件夹,数这些文件?另外如果有更多的打印机,我们如何识别哪个打印机属于哪个.SHD?(打印机号码是否打印哪个打印机?) – 2012-01-18 16:30:16
一个打印作业完成,这些文件被清除。我之前没有做过这方面的工作,这是我想到的一个想法。 – John 2012-01-18 17:04:52
http://www.undocprint.org/winspool/spool_files – John 2012-01-18 17:06:44