Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用system.printing获取打印页数?_C#_Printing_System.printing - Fatal编程技术网

C# 如何使用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

我正在编写一个简单的应用程序,它将监控我每天打印多少页。 我正在使用.Net,我发现System.printing命名空间似乎很容易使用

下面是我的代码

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