我正在写一个简单的应用程序,它将监控我每天打印多少页。我正在使用。net,我找到了系统。打印名称空间,看起来很容易使用。
下面是我的代码。
public static void NumberOfPagesPrintedTest()
{
PrintServer ps = new PrintServer();
PrintQueueCollection printQueues = ps.GetPrintQueues();
foreach (var item in printQueues)
{
//if (item.QueueStatus == PrintQueueStatus.Printing)
//{
item.Refresh();
PrintJobInfoCollection coll = item.GetPrintJobInfoCollection();
if (coll != null)
{
foreach (var jobinfo in coll)
{
Console.WriteLine(jobinfo.NumberOfPages + " printed " + jobinfo.NumberOfPagesPrinted + " printing " + jobinfo.IsPrinting + " printed " + jobinfo.IsPrinted);
}
}
//}
}
}
,但在打印过程中,它显示打印的页数,但在一些页面已经打印和jobinfo之后,它不改变。numberofpagesprinting总是等于0。如何获得实际打印的页数,以及如果打印机由于某种原因停止,如何找出打印了多少页。
如何编写如下方法获取页面计数:-
public static int PrintedPageCount(PrintDocument printDocument)
{
int counter = 0;
printDocument.PrintController = new PreviewPrintController();
printDocument.PrintPage += (sender, e) => counter ++;
printDocument.Print();
return counter;
}
您需要刷新您的作业(使用job.refresh()
),直到IsSpooling
标志等于false
。