我想将给定 Windows 打印作业的假脱机数据复制到磁盘上的任意位置。
我有来自Print Spooler API的打印作业的作业 ID 。我知道这项工作已经完成了假脱机。我知道在我有时间完成我需要做的任何事情之前,该工作不会被删除。
如果禁用了文件池,我可以通过在假脱机目录中查找格式为“xxxxx.spl”的文件来执行此操作,其中 xxxxx 是填充为 0 的作业 ID。
如果启用了文件池,我该怎么做?
如果有一种方法可以获取作业 ID 并返回假脱机数据流,我会很高兴,但目前这似乎不太可能。OpenPrinter
据推测,使用“PrinterName,Job xxxx”和 ReadPrinter可能会出现类似的情况,如此处所述,但到目前为止我还无法让它工作,即使我这样做了,它看起来也会将数据加载到内存中,而且我不确定这将如何处理大型假脱机文件(> 1 GB 并不罕见)。
我的第二个偏好是传递 ID 并使用磁盘上的假脱机数据取回文件位置的方法(无论文件池设置如何)。
我的第三个偏好是将池文件(“FPyyyyy.spl”)映射到它的作业 ID 的方法。
这些是否可行,或者是否有人对如何解决这个问题有更好的想法?
(编辑添加,因为不清楚我们是否知道此选项):我们的后备方案是要求我们的客户通过编辑每台打印机的注册表来禁用假脱机文件池,但我们更希望避免这种情况。