我正在用 C# 开发一个程序,用于在打印时暂停并获取总页数,这是主要代码:
string wql = "SELECT * FROM Win32_PrintJob";
ManagementObjectCollection mos;
Dictionary<uint,short> checkedJobs = new Dictionary<uint,short>();
while (true)
{
Thread.Sleep(SleepTime);
try
{
mos = new ManagementObjectSearcher(wql).Get();
if (mos != null && mos.Count > 0)
{
foreach (ManagementObject mo in mos)
{
if (mo != null)
{
uint jobId = ProcessJob(mo);
if (!checkedJobs.ContainsKey(jobId))
checkedJobs.Add(jobId, 0);
}
}
}
// ...
}
}
它在正常任务中工作正常。但是在 N-Up 打印中,当我在一页中打印多张幻灯片(N Slides-In-One Page)时,它出错了,我无法获得正确的总数打印。
有没有遇到过这个问题的~求助,万分感谢
您的问题与另一个问题类似(请参阅我的 answer there 并点击链接了解更多信息)但也许它的不同足以保证在此处提供不同的答案。
基本上,并非所有打印驱动程序都支持 NUP。您正在使用的应用程序可能正在检查 DEVMODE (或忽略它)并自行处理 NUP 而不是 letting the Spooler handle it .
正如我在另一个答案中所说,Windows 页数不能依赖于所有应用程序和驱动程序。这可能会通过新的 XPS 打印系统得到改善,但对于旧的应用程序和驱动程序,获得可靠页数的唯一方法是解析打印假脱机文件。
我是一名优秀的程序员,十分优秀!