У меня есть приложение, где мне нужно распечатать билет. Каждый билет должен быть уникальным. Приложение представляет собой формы окон и полностью написано в С#. Для нашего применения мы используем лазерные монохромные принтеры Samsung ML-2525.
Поток в основном следующий: оператор выбирает продукт/билет (который уникален), а затем нажимает кнопку, которая выполняет 2 вещи:
- Подключение к базе данных и обновление используемого продукта
- Распечатывает билет (это делается с использованием System.Drawing и GDI +)
По какой-то причине время от времени изображение, которое нужно распечатать, не отправляется на принтер. Это редкий случай, но это случается.
Я попытался подключиться к принтеру с помощью Win32_Printer (http://msdn.microsoft.com/en-us/library/Aa394363), но я не могу получить текущее состояние принтера (онлайн, автономный режим, низкий уровень тонера, замятие бумаги и т.д.). Я могу проверить только, существует ли принтер и правильно ли установлен размер бумаги. Я попробовал код, похожий на следующий, но он не работал.
private string MonitorPrintJobWmi()
{
var jobMessage = String.Empty;
var scope = new ManagementScope(ManagementPath.DefaultPath);
scope.Connect();
var selectQuery = new SelectQuery { QueryString = @"select * from Win32_PrintJob" };
var objSearcher = new ManagementObjectSearcher(scope, selectQuery);
var objCollection = objSearcher.Get();
foreach (var job in objCollection)
{
if (job != null)
{
jobMessage += String.Format("{0} \r\n", job["Name"].ToString());
jobMessage += String.Format("{0} \r\n", job["JobId"].ToString());
_jobId = Convert.ToInt32(job["JobId"]);
jobMessage += String.Format("{0} \r\n", job["JobStatus"].ToString());
jobMessage += String.Format("{0} \r\n", job["Status"].ToString());
}
}
return jobMessage;
}
Я попытался получить API для принтера, но я не мог его удержать. Кстати, программное обеспечение принтера указывает на различные ошибки на панели инструментов Windows.
Мой вопрос в том, может ли кто-нибудь привести меня в правильном направлении относительно того, как подключиться к принтеру и проверить, была ли печать успешной.
Кроме того, было бы полезно, если бы кто-то знал о каком-то другом конкретном принтере, в котором я мог бы выполнить это, т.е. меняя аппаратное обеспечение.
Спасибо,