打印机打印纸张和页面,因此在某个阶段将副本转换为页面。
您获得的通知数据取决于正在打印的应用程序以及处理假脱机和呈现的系统和驱动程序组件。根据我的经验,不能依赖数据,最好的数据是通过解析假脱机文件获得的。这可能包含也可能不包含副本数。
Word 的“副本问题”由来已久。据说有一个补丁可以解决这个问题,但另一种观点是,这是因为它使用了一种不寻常的打印方式。我将在这里引用一些链接内容:
由于臭名昭著的 Word Copy Count 错误……提交的 dmCopies 在 SHD 中为 1。在 SPL 文件的 DEVMODE 记录中可以找到正确的值(如果它是 EMF 假脱机)。
我发现的唯一其他方法是在作业已发送到打印机时监视 JOB_INFO_2 结构的 PrintedPages 字段,并查看它是否是 TotalPages 的倍数。
[...]
发生的不是 Word 错误,而是 Windows 错误。Word 始终调用 startDoc 并将副本设置为 1。之后调用 DocumentProperties 并在 dmCopies 中进行更改并调用 ResetDC 进行更新。这是一种奇怪的打印方式,但并没有错。问题是 shd 文件和 printer_info 没有使用此信息更新,只是保持在 StartDoc 调用上设置的 Devmode 信息。
但是生成新 DevMode 的 ResetDC 调用保留在 SPL 文件中。如果您挂钩 DocumentProperties API 调用,您也可以获得该信息。