我有一个问题,我需要帮助.对于我当前的项目,我需要制作Batch Plot应用程序.该应用程序将有大约约2000个AutoCAD图纸,需要打印.
该应用程序需要5台打印机,每种格式1台,从A4到A0.到目前为止还没有问题.
现在我们都明白,我们不能在没有任何麻烦的情况下同时排队2000张图纸.我在网上进行了研究,找到了查看当前打印机队列的方法.使用PrintServer和PrintQueue.
这是问题开始的地方.首先,我无法找到我需要的网络打印机.打印机位于此网络地址:192.168.0.14(\ vps01w2k8).
遵循MSDN的指南:
PrintServer m_PrintServer = new PrintServer(@"\\vps01w2k8");
PrintQueueCollection m_PrintQueueCollection = m_PrintServer.GetPrintQueues();
foreach (PrintQueue queue in m_PrintQueueCollection)
{
cbPrinters.Items.Add(queue.Name.ToString());
}
这不会给我任何打印机.尝试使用LocalPrintServer(或只是没有传递任何参数的PrintServer).给我本地打印机(显然),而不是我的网络打印机.
我的下一步是找到一种方法来查找我所安装的所有打印机using System.Drawing.Printing;而不是using System.Printing;.
foreach (String printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
cbPrinters.Items.Add(printer.ToString());
}
这个简单的代码给了我所有的打印机,包括联网打印机.但是,现在我陷入了.NET 2.0和3.0之间(以及之后).PrinterSettings和PrintServer/PrintQueue类没有连接.
最后,我尝试使用WMI方法访问打印机队列.查询给我结果的Win32_PrintJob.不幸的是,这些都伴随着10秒锁定来检索这些结果.
我没有想法.我正在寻找一个修复PrintServer以正确返回我的网络打印机或任何建议使用PrinterSettings类进行批量绘图的类似技术.
提前致谢,
约迪