【问题标题】:How to get number of printed pages using system.printing?如何使用 system.printing 获取打印页数?
【发布时间】:2014-08-01 12:30:44
【问题描述】:

我正在编写一个简单的应用程序,它将监控我每天打印的页面数。 我正在使用 .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之后它不会改变。如何获得实际打印的页数以及如何找出如何如果打印机因某种原因停止,则会打印很多页。

【问题讨论】:

    标签: c# printing system.printing


    【解决方案1】:

    如何编写如下获取页数的方法:-

    public static int PrintedPageCount(PrintDocument printDocument)
    {
        int counter = 0;
        printDocument.PrintController = new PreviewPrintController();
        printDocument.PrintPage += (sender, e) => counter ++;
        printDocument.Print();
        return counter;
    }
    

    【讨论】:

      【解决方案2】:

      您需要刷新您的工作(使用job.refresh()),直到IsSpooling 标志等于false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多