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

Rob*_*ell 2 c# printing

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

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

MSDN的文档开始讨论实现这个标准的打印机,但实际建议的方式很少: -

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

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

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

任何人都有成功检索此信息?

djd*_*d87 5

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

System.Drawing.Printing.PrinterSettings printer = new System.Drawing.Printing.PrinterSettings();
printer.PrinterName = "YourPrinterName";
Run Code Online (Sandbox Code Playgroud)

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

printer.DefaultPageSettings;
Run Code Online (Sandbox Code Playgroud)