WPF WebBrowser:以编程方式更改IE打印对话框属性

时间:2014-11-16 18:52:40

标签: c# xml wpf internet-explorer printing

我正在使用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");

但这是错误的代码。我不想为一个简单的bool参数更改注册表值。

所以,我的问题是:如何在没有注册表修改的情况下通过代码隐藏以编程方式更改此参数?

谢谢!

2 个答案:

答案 0 :(得分:5)

在不修改注册表的情况下修改打印设置的唯一方法是通过Print Templates,似乎没有人真正从.NET Web浏览器控件中使用它们。

但是,this answer有关于打印模板及其在C ++ / win32中使用的其他资源。

如果您打开使用ActiveX打印页面,可以使用SHDocVw.WebBrowser,然后您可以访问指定打印模板的功能,如this answer中所述

答案 1 :(得分:1)

如果没有注册表修改,则无法执行此操作。