0

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

 // 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 的实例,有一个初始化的方法,但它是受保护的。

这是错误吗?有没有人看到类似的行为?

PS:我使用的打印机是:HP Designjet T7100ps HPGL2

4

1 回答 1

1

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

于 2012-09-07T22:11:43.317 回答