在调用属性DefaultPrintTicket()之前,PrintQueue :: GetPrintCapabilitiesAsXml()不会初始化

时间:2012-08-30 20:34:44

标签: c# .net printing printqueue

这听起来像某些打印机上的初始化问题。 这是用例:

 // 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不包含某些类别打印机支持的页面大小的完整列表。

但是,在调用DefaultPrintTicket后检索XML文档时,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的实例,有一个初始化的方法,但它受到保护。

这个错误吗?有人看到过类似的行为吗?

P.S:我使用的打印机是:HP Designjet T7100ps HPGL2

1 个答案:

答案 0 :(得分:1)

这是证实了Bug。如果GetPrintCapablitiesAsXml()是PrintQueue实例调用的第一个方法,则返回的XML不会正确枚举打印机的所有属性。