小编Ant*_*ony的帖子

GetPrintCapabilities不会返回所有页面大小

PrintCapabilities printCapabilites = SelectedPrinter.GetPrintCapabilities(); IEnumerable pagesizeList = printCapabilites.PageMediaSizeCapability;

上面的代码没有列出打印机驱动程序支持的所有页面大小,这是我的问题.

例如,如果您使用Microsoft XPS打印机驱动程序,您会发现pagesizeList(上面)将缺少某些页面大小."Letter Small"是缺少页面大小之一(MS Word将成功列出此页面大小).

作为快速检查,我将打印机功能转储到xml,如下所示:

long gpCLen = _selectedPrinter.GetPrintCapabilitiesAsXml().Length;
FileStream fs = File.OpenWrite(@"c:\test.txt");
MemoryStream ms = _selectedPrinter.GetPrintCapabilitiesAsXml();
byte[] b = new byte[gpCLen];
ms.Read(b, 0, (int)gpCLen);
fs.Write(b, 0, (int)gpCLen);
fs.Close();
Run Code Online (Sandbox Code Playgroud)

生成的xml文件中的PageMediaSize节点确实具有所有页面大小和缺少的页面大小.

显示的页面似乎有自己的名字开始psk:

<psf:Option name="psk:ISOA4" constrained="psk:None">
Run Code Online (Sandbox Code Playgroud)

但未显示的页面似乎有:

<psf:Option name="ns0000:LETTERSMALL" constrained="psk:None">
Run Code Online (Sandbox Code Playgroud)

未显示的Epson打印驱动程序页面类似:

<psf:Option name="epns200:IndexCard5x8" constrained="psk:None">
Run Code Online (Sandbox Code Playgroud)

基本上一个页面的名称开始'psk'PageMediaSizeCapability显示,但如果它是制造自定义,即epns200,ns0000,它不会列出.任何想法为什么以及如何解决这个问题?节点/页面在那里,但PageMediaSizeCapability不喜欢它!

提前致谢

编辑:

作为MS状态'A PrintCapabilities对象是一种易于使用的表示某种类型的XML文档,称为PrintCapabilities文档.但该文档的信息比对象完整描述更多

c# xml printing wpf

5
推荐指数
1
解决办法
2495
查看次数

标签 统计

c# ×1

printing ×1

wpf ×1

xml ×1