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