如何使用PrintServer类和PrintQueue类控制PrintServer上的所有打印作业

时间:2013-12-16 16:19:24

标签: c# .net

我是C#的新手,我被指派在连接了近50台IP打印机的打印服务器上控制打印作业(暂停,验证,恢复)。

现在,我可以在运行时使用printServer类在我的开发PC上暂停和访问特定打印机的打印作业的详细信息,例如:

PrintServer myprintServer = new PrintServer();

foreach (var job in myprintServer.GetPrintQueue("printerA").GetPrintJobInfoCollection()) 

job.pause();

当我的程序正在运行并打印作业时,让我们说打印机B或打印机C它们不受控制。我将不得不为所有不可能的循环运行。

是否有任何方法可以控制和暂停所有打印作业,无论它们是针对打印服务器上接收到的打印机A,b,c等,并检查是否有身份验证。要么我没有在System.Printing命名空间中找到所需的方法,要么无法实现任务。

1 个答案:

答案 0 :(得分:2)

GetPrintQueues应返回打印机上所有打印队列的集合:

PrintServer myprintServer = new PrintServer();

foreach (var queue in myprintServer.GetPrintQueues)
    foreach (var job in queue.GetPrintJobInfoCollection()) 
        job.pause();

请注意,overload有一个有效打印队列类型列表

或者使用Linq的SelectMany

    foreach (var job in queue.GetPrintQueues.SelectMany(q => GetPrintJobInfoCollection()) 
        job.pause();