PrintQueue::GetPrintCapabilitiesAsXml() не инициализируется до тех пор, пока не будет вызвано свойство DefaultPrintTicket()
Это звучит как проблема инициализации на некоторых принтерах. Вот пример использования:
// Get the default printer.
PrintQueue printer = LocalPrintServer.GetDefaultPrintQueue();
// Get the printer properties as XML from the system and populate the instance of PrinterProperties.
Stream printerDocmentStream = printer.GetPrintCapabilitiesAsXml();
Из извлеченного XML-документа элемент XML PageMediaSize не содержит исчерпывающего списка поддерживаемых размеров страниц для определенного класса принтеров.
Однако, когда документ XML извлекается после вызова DefaultPrintTicket, элемент XML PageMediaSize возвращает все поддерживаемые размеры страниц. Код выглядит следующим образом:
// This call initializes the printer properties. <--------------------
PrintTicket dummyPrintTicket = printer.DefaultPrintTicket; <-----------
// Get the default printer.
PrintQueue printer = LocalPrintServer.GetDefaultPrintQueue();
// Get the printer properties as XML from the system and populate the instance of PrinterProperties.
Stream printerDocmentStream = printer.GetPrintCapabilitiesAsXml();
Я предполагаю, что вызов DefaultPrintTicket инициализирует экземпляр PrintQueue, есть инициализированный метод, но он защищен.
Это ошибка? Кто-нибудь видит подобное поведение?
PS: принтер, который я использую: HP Designjet T7100ps HPGL2
1 ответ
Это подтверждается ошибка. Если GetPrintCapablitiesAsXml() является первым методом, вызываемым экземпляром PrintQueue, возвращаемый XML не правильно перечисляет все свойства принтера.