Я работаю над приложением, где я должен поместить дополнительную строку текста после оригинального печатного текста.Метод PrintQueue.AddJob не работает
Для этого я использую методы FindFirstPrinterChangeNotification и FindNextPrinterChangeNotification API печати Spooler, который отлично работает.
Я в состоянии получить очереди печати, который показывает количество подсчета рабочих мест 1.
Я использую следующий код, чтобы добавить новое задание в очереди печати:
// Create the printer server and print queue objects
LocalPrintServer localPrintServer = new LocalPrintServer();
PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();
// Call AddJob
PrintSystemJobInfo myPrintJob = defaultPrintQueue.AddJob();
// Write a Byte buffer to the JobStream and close the stream
Stream myStream = myPrintJob.JobStream;
Byte[] myByteBuffer = UnicodeEncoding.Unicode.GetBytes("This is a test string for the print job stream.");
myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
myStream.Close();
Мой код успешно выполнить без каких-либо исключение, но новое задание не печатается вместе с оригинальным текстом.
Вы просто скопировал образец кода MSDN , Что предупреждает: «Этот код работает только с принтерами, которые могут обнаруживать и печатать обычный текст. Некоторые из них не могут». Поверните «некоторые» в «большинство», а не много точечно-матричных принтеров. Не делайте этого, вместо этого используйте PrintDocument. –
, пожалуйста, проверьте это http://stackoverflow.com/a/6106155/1849024 – imsome1
@HansPassant спасибо за ответ. Будет ли этот код работать на термопринтеры POS, или я также должен использовать PrintDocument для них? –