c# - WPF 网页浏览器 : changing IE print dialog properties programmatically

标签 c# xml wpf internet-explorer printing

我正在使用 WPF WebBrowser 控件编写应用程序。它的来源是来自数据库的 xml/xslt 来源的结果。

在包含 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 参数的注册表值。

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

谢谢!

最佳答案

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

然而,this answer有关于 C++/win32 打印模板及其用法的额外资源。

如果您愿意使用 ActiveX 打印页面,您可以使用 SHDocVw.WebBrowser,这样您就可以访问指定打印模板的功能,如 this answer 中所述

关于c# - WPF 网页浏览器 : changing IE print dialog properties programmatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960742/

相关文章:

c# - 资源部分中的 WPF DataContextProxy

c# - 我应该以哪种方式定义资源字典以保持我的代码干净?

c# - 如何禁止在发布管道中使用预发布版本的 nuget 包

c# - 奇怪的句柄必须是对话框中的有效异常

c# - Visual Studio 中的代码指标计算

c# - 从 C# 中的单词中删除前缀和后缀

sql - mysql 哪里 `xml<date>` = '11/21/2010'

python - 如何在 Python 中将 xml 文本与前面的空元素关联起来?

xml - 使用一张表选择 XML 循环节点 (sqL)

WPF 玻璃窗口后备?