gpt4 book ai didi

C# 批处理绘图应用程序(PrintServer 和 PrintQueue 问题)

转载 作者:太空狗 更新时间:2023-10-30 00:08:38 25 4
gpt4 key购买 nike

我有一个问题需要帮助。对于我当前的项目,我需要制作一个 Batch Plot 应用程序。此应用程序将有大约 2000 张需要打印的 AutoCAD 图纸。

该应用程序需要 5 台打印机,每种格式各一台,从 A4 到 A0。到目前为止还没有问题。

现在我们都明白了,我们不能同时排队 2000 张图纸而不会有一些麻烦。我在网上进行了研究,找到了查看当前打印机队列的方法。使用PrintServer和打印队列。

这就是问题开始的地方。首先,我找不到我需要的网络打印机。打印机位于此网络地址: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 approach 访问打印机队列.查询给了我结果的 Win32_PrintJob。不幸的是,这些伴随着 10 秒的锁定来检索这些结果。

我没主意了。我正在寻找 PrintServer 的修复程序以正确返回我的网络打印机,或者寻找任何建议来使用 PrinterSettings 类进行类似的批量打印技术。

提前致谢

乔迪

最佳答案

找到了。调用 GetPrintQueues 时,您必须传入一个 EnumeratedPrintQueueTypes 数组。它现在返回我的本地和网络打印机(所有已安装的打印机)。

PrintServer m_PrintServer = new PrintServer();
PrintQueueCollection m_PrintQueueCollection = m_PrintServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });

关于C# 批处理绘图应用程序(PrintServer 和 PrintQueue 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com