确定默认打印机的当前纸张类型

时间:2009-10-29 10:08:43

标签: c# printing

我正在尝试使用C#确定默认打印机上的当前纸张类型选择。

我已确定使用WMI的默认打印机并通过Properties集合枚举,我可以看到有一个CurrentPaperType字符串属性,但在办公室的两台打印机上,它都设置为空字符串。

MSDN's documentation开始讨论打印机实施此标准的问题,但实际建议的方式却很少: -

  

打印机正在使用的纸张类型。必须以ISO / IEC 10175文档打印应用程序(DPA)指定的格式表示,该文档在RFC 1759(打印机MIB)的附录C中进行了总结。此属性继承自 CIM_Printer

我可以检索所选打印机支持的所有纸张类型的列表,但它不会告诉我当前设置的纸张类型。

我在内存中创建一个动态报表,然后在一次点击中将其吐出到打印机,因此我需要知道纸张大小才能正确设置边距,列宽等。

有人在检索此信息方面取得了成功吗?

2 个答案:

答案 0 :(得分:5)

除非确实需要,否则不要使用WMI。使用像Foxfire这样的内置.Net类。您可以使用以下方式获得打印机:

System.Drawing.Printing.PrinterSettings printer = new System.Drawing.Printing.PrinterSettings();
printer.PrinterName = "YourPrinterName";

然后,您可以通过以下方式访问所需的所有属性:

printer.DefaultPageSettings;

答案 1 :(得分:2)

在System.Drawing.Printing中使用WMI而不是.Net打印机类是否有任何特殊原因?

您可以通过PrinterSettings类的PaperSources属性轻松获取Info,其中包含打印机中当前可用的所有PaperKinds(可能多个,因为多个打印机有多个托盘)