我正在使用WinForms应用程序。我有一张RDLC报告,将在11x17上打印,然后折叠(打印机支持折叠)。我正在渲染EMF并绘制到PrintDocument的页面。这工作正常,除了折叠。扩展打印机属性
我想要做的是存储使打印机折叠的设置。用户将从下拉列表中选择预设,应用程序将选择打印机,纸张尺寸,纸盒,是否双面打印以及是否折叠。存储PrinterSettings对象涵盖了大部分内容,但不保存折叠选项。
我第一次试图存储/检索我读到的有关称为DEVMODE的东西。供参考:http://nicholas.piasecki.name/blog/2008/11/programmatically-selecting-complex-printer-options-in-c-shar/。我发现尽管我有特定于驱动程序的额外数据,但无论我更改了哪些驱动程序特定设置,所有字节都为0。我不确定我在哪里出错了,但我放弃了它,并查看了WPF中的打印功能。
我发现我可以为我的设置配置PrintTicket,存储它并稍后检索它。这似乎有点令人费解,只是为了保存设置,但我认为我的工作。至少它似乎在PrintDialog中正确显示。不过,我现在仍然试图弄清楚如何打印我的报告。
据我所知,我不能从WinForms打印PrintDocument并在WPF中使用它。我也读过EMF格式在WPF中不受支持。我以为我会把每个EMF渲染成位图,然后打印出来。但是我的报告中的文字很模糊,我没有任何运气清理它。
从包含EMF字节的流开始,我知道这些字节将与PrintDocument一起呈现,我试着保存到文件中。看起来我没有提供任何设置可以保存清晰的文本。
var pageImage = new Metafile(stream);
pageImage.Save(filename);
所有这些只是为了增加折叠的能力。我只是完全错误的轨道?我不明白这应该如此艰难。我想我需要找到另一种方法来保存/恢复自定义打印机设置,或者我需要一种更好地呈现这些EMF文件的方法。
我也试着将报告直接渲染成BMP格式,质量也差。