0

毎日印刷するページ数を監視する簡単なアプリを作成しています。私は .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 に等しくなります。実際に印刷されたページ数を取得する方法と、印刷されたページ数を確認する方法何らかの理由でプリンターが停止した場合に印刷されます。

4

2 に答える 2

0

ページ数を取得するために以下のようにメソッドを書くのはどうですか:-

public static int PrintedPageCount(PrintDocument printDocument)
{
    int counter = 0;
    printDocument.PrintController = new PreviewPrintController();
    printDocument.PrintPage += (sender, e) => counter ++;
    printDocument.Print();
    return counter;
}
于 2014-08-01T12:33:39.473 に答える
0

フラグが と等しくjob.refresh()なるまで、( を使用して) ジョブを更新する必要があります。IsSpoolingfalse

于 2016-07-09T23:37:25.930 に答える