我想将给定 Windows 打印作业的假脱机数据复制到磁盘上的任意位置。
我有打印作业的作业 ID后台打印程序 API http://msdn.microsoft.com/en-us/library/windows/desktop/dd162863%28v=vs.85%29.aspx。我知道这项工作已经完成了假脱机。我知道在我有时间完成我需要做的事情之前,该作业不会被删除。
如果文件池被禁用,我可以通过在假脱机目录中查找格式为“xxxxx.spl”的文件来完成此操作,其中 xxxxx 是用 0 填充的作业 ID。
如果启用文件池,我该如何执行此操作?
如果有一种方法可以获取作业 ID 并返回假脱机数据流,我会很高兴,但目前看来这不太可能。据说类似的东西可能可以使用OpenPrinter
包含“PrinterName,Job xxxx”和 ReadPrinter,如文档所示here http://msdn.microsoft.com/en-us/library/windows/desktop/dd162863%28v=vs.85%29.aspx,但到目前为止我还没能让它发挥作用 https://stackoverflow.com/questions/12866444/why-do-i-get-error-access-denied-attempting-to-open-a-specific-job-using-openpri,即使我这样做,它看起来也会将数据加载到内存中,而且我不确定这将如何处理大型假脱机文件(> 1 GB 并不罕见)。
我的第二个偏好是传入 ID 并获取磁盘上带有假脱机数据的文件位置的方法(无论文件池设置如何)。
我的第三个偏好是将池文件(“FPyyyyy.spl”)映射到它所属的作业 ID 的方法。
这些是否可行,或者有人对如何解决这个问题有更好的想法吗?
(编辑添加,因为不清楚我们是否知道这个选项):
我们的后备措施是要求客户通过编辑每台打印机的注册表来禁用假脱机文件池,但我们更希望避免这种情况。
I 想通了 https://stackoverflow.com/questions/12866444/why-do-i-get-error-access-denied-attempting-to-open-a-specific-job-using-openpri为什么我打电话给OpenPrinter
失败了,我已经使用成功读取了线轴数据OpenPrinter
and ReadPrinter
,很好地解决了我们的问题。
不过,我仍然会将赏金奖励给任何提出更好解决方案的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)