C# 如何使用system.printing获取打印页数?
我正在编写一个简单的应用程序,它将监控我每天打印多少页。 我正在使用.Net,我发现System.printing命名空间似乎很容易使用 下面是我的代码C# 如何使用system.printing获取打印页数?,c#,printing,system.printing,C#,Printing,System.printing,我正在编写一个简单的应用程序,它将监控我每天打印多少页。 我正在使用.Net,我发现System.printing命名空间似乎很容易使用 下面是我的代码 public static void NumberOfPagesPrintedTest() { PrintServer ps = new PrintServer(); PrintQueueCollection printQueues = ps.GetPrintQueues(); for
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.NumberOfPagesPrinted始终等于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