首页 文章

如何使用C#获取打印作业状态

提问于
浏览
10

我能够打印文档,但我不知道如何获得它的状态 . 我经历了很多资源(MSDNLinks for checking Job Status),但未能找到答案 .

我实际上想要从打印机确认文档是否已成功打印 . 此外,我也很感兴趣,如果我可以从打印机获得错误信号,就像纸张被卡住一样 .

我有打印机发送的打印机名称和文档名称 . 有没有人在这方面做过一些研究,可以告诉我如何做到这一点?

2 回答

  • 3

    网上有样品...谷歌“在c#中发送PJL命令”(PJL代表打印机工作语言)

    codeproject Reading Data Directly from the Printer是一篇不错的文章/样本

  • 3

    您可能可以使用WMI . 它提供了几个printing-related classes,包括Win32_PrintJob .

    这是未经测试的,但是这样的事情应该让你开始:

    SelectQuery query = new SelectQuery("Win32_PrintJob");
    
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
    using (ManagementObjectCollection printJobs = searcher.Get())
        foreach (ManagementObject printJob in printJobs)
        {
            // The format of the Win32_PrintJob.Name property is "PrinterName,JobNumber"
            string name = (string) printJob["Name"];
            string[] nameParts = name.Split(',');
            string printerName = nameParts[0];
            string jobNumber = nameParts[1];
            string document = (string) printJob["Document"];
            string jobStatus = (string) printJob["JobStatus"];
    
            // Process job properties...
        }
    

相关问题