У меня есть проблема, с которой мне нужна помощь.Для моего текущего проекта мне нужно сделать приложение Batch Plot.В этом приложении будет около ~ 2000 чертежей AutoCAD, которые необходимо будет распечатать.
Приложению требуется 5 принтеров, по одному для каждого формата, от 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.
Заранее спасибо,
Джорди