Как получить идентификатор задания печати в .NET/С#?C#

Место общения программистов C#
Ответить
Anonymous
 Как получить идентификатор задания печати в .NET/С#?

Сообщение Anonymous »

Я написал API с использованием класса PrintDocument, который отправляет запрос задания на печать на принтер каждый раз, когда я его вызываю. Теперь процесс печати работает отлично, однако я хочу иметь возможность отслеживать ход печати на случай, если выполнение задания займет много времени. В идеале после запуска процесса печати я хотел бы получить обратно соответствующий идентификатор задания печати, предоставленный принтером. Таким образом, позже я смогу использовать этот идентификатор для запроса дополнительной информации о ходе выполнения.
пока я использую метод Print() для запуска процесса печати.

Код: Выделить всё

printDocument.Print(); // Ideally I should return the given Printing Job id
Я знаю, что один из способов получить это — использовать класс LocalPrinterServer после того, как задание будет помещено в очередь:

Код: Выделить всё

LocalPrintServer printServer = new LocalPrintServer();PrintQueue printQueue = printServer.GetPrintQueue(printerName);

Код: Выделить всё

// Set an undefined jobint jobId = -1;

Код: Выделить всё

// Get the job ID from the Queue given the unique document namePrintJobInfoCollection
jobs = printQueue.GetPrintJobInfoCollection();
foreach (PrintSystemJobInfo job in jobs)
{
if (job.Name == $"{documentName}_{uniqueNameId}")
{
jobId = job.JobIdentifier;_logger.LogInformation($"Job ID: {jobId}");break;
}
}
Однако здесь я просматриваю все задания в очереди, и, вероятно, это не так эффективно, как если бы я получал их сразу из метода Print.
Есть ли у вас идеи, как этого добиться? Я обнаружил, что есть некоторые события, такие как PrintDocument.BeginPrint Event. Может быть, это может быть как-то полезно для получения идентификатора задания? Или мне придется напрямую использовать API диспетчера очереди печати?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/784 ... d-in-net-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»