WPF Web 浏览器:以编程方式更改 IE 打印对话框属性
本文关键字:IE 打印 对话框 属性 方式更 编程 Web 浏览器 WPF | 更新日期: 2023-09-27 18:30:37
我正在使用WPF WebBrowser
控件编写应用程序。它的源代码是来自数据库的 xml/xslt sourse 的结果。
在包含WebBrowser
的窗口中,有用于使用处理程序打印的按钮:
mshtml.IHTMLDocument2 doc = WBrowser.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, 0);
但在这种情况下,打印文档中没有背景。我已经研究了这个问题,并且Internet Explorer页面设置对话框中的属性有问题 - 允许打印背景颜色和图像。
我试图通过以下代码更改它:
RegistryKey regKey = Registry.CurrentUser
.OpenSubKey("Software", true)
.OpenSubKey("Microsoft", true)
.OpenSubKey("Internet Explorer", true)
.OpenSubKey("PageSetup", true);
var defaultValue = regKey.GetValue("Print_Background");
regKey.SetValue("Print_Background", "yes");
但这是糟糕的代码。我不想更改一个简单的布尔参数的注册表值。
所以,我的问题是:如何在不修改注册表的情况下通过代码隐藏以编程方式更改此参数?
谢谢!
在不修改注册表的情况下修改打印设置的唯一方法是通过打印模板,似乎没有人真正从 .NET Web 浏览器控件中使用它们。
但是,此答案具有有关打印模板及其用法的其他资源,来自 C++/win32。
如果您愿意使用 ActiveX 打印页面,则可以使用 SHDocVw.WebBrowser
,然后您可以访问指定打印模板的功能,如本答案中所述
如果不修改注册表,则无法执行此操作。