我正在使用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幻灯片一页)时,它出错了,我无法获得正确的总计数打印。
有没有人见过这个问题〜请帮助,非常感谢
答案 0 :(得分:0)
您的问题类似于另一个问题(请参阅我的answer there并点击此链接了解更多信息)但也许它的不同之处在于可以在此处提供不同的答案。
基本上所有打印驱动程序都不支持NUP。您正在使用的应用可能会检查DEVMODE(或忽略它)并自行处理NUP,而不是letting the Spooler handle it。
正如我在另一个答案中所说的那样,所有应用和驱动程序都无法依赖Windows页面数量。使用新的XPS打印系统可能会有所改善,但对于旧的应用程序和驱动程序,获得可靠页数的唯一方法是解析打印假脱机文件。