【发布时间】:2012-01-18 15:50:53
【问题描述】:
我想知道如何在 Java 应用程序中查看任何其他应用程序(Word、Excel、PDF 阅读器)发送到打印机的打印详细信息。这意味着,用户可以从一台 PC 将各种类型的文档发送到打印机。
我的 Java 应用程序必须计算发送到打印机的文档数量。
如何在 Java SE 应用程序中获取这些详细信息?非常感谢任何资源、有用的链接和指导。
【问题讨论】:
我想知道如何在 Java 应用程序中查看任何其他应用程序(Word、Excel、PDF 阅读器)发送到打印机的打印详细信息。这意味着,用户可以从一台 PC 将各种类型的文档发送到打印机。
我的 Java 应用程序必须计算发送到打印机的文档数量。
如何在 Java SE 应用程序中获取这些详细信息?非常感谢任何资源、有用的链接和指导。
【问题讨论】:
这不能直接使用 Java 完成,但有一种解决方法。
对于每个打印作业,Windows 假脱机服务会生成两个假脱机文件。
一个带有.SHD 扩展名的文件用于作业设置,一个带有.SPL 扩展名的文件用于绘图命令。
这些文件可以按打印机存储在用户定义的位置。所有后台处理程序作业的默认位置是c:\windows\system32\spool\PRINTERS。
按打印机设置位置
单击开始,单击运行,在打开的框中键入regedit,然后单击
好的。
找到以下注册表子项,其中<printername> 是
您的打印机名称:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\
在右侧窗格中,
右键单击SpoolDirectory,然后单击修改。
在“数值数据”框中,键入要存储假脱机文件的位置。
例如,键入 c:\windows\system32\spool\printers 作为默认值
地点。
退出注册表编辑器。重新启动 Print Spooler 服务。
所有新工作都将采用XXXXX.SPL 和XXXXX.SHD 的形式,并且将与其 JobID 一致地编号。
使用 Java,您可以监视此文件夹是否有新作业发送到打印机服务或特定打印机。
【讨论】: