Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从WPF WebBrowser打印背景色_C#_Wpf_Printing_Browser - Fatal编程技术网

C# 从WPF WebBrowser打印背景色

C# 从WPF WebBrowser打印背景色,c#,wpf,printing,browser,C#,Wpf,Printing,Browser,目前,我正在打印WPF WebBrowser的内容,如下所示: mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2; doc.execCommand("Print", true, null); 我的HTML内容包含带有背景颜色的表格。目前,当我打印内容时,背景色不打印——所有内容都是纯白色。有没有办法告诉网络浏览者也打印背景色 此外,这仍然会导致弹出打印对话框。有人知道少打印“内容”对话框的命令吗 非

目前,我正在打印WPF WebBrowser的内容,如下所示:

mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, null);
我的HTML内容包含带有背景颜色的表格。目前,当我打印内容时,背景色不打印——所有内容都是纯白色。有没有办法告诉网络浏览者也打印背景色

此外,这仍然会导致弹出打印对话框。有人知道少打印“内容”对话框的命令吗


非常感谢

假设您使用的是'SHDocVw.WebBrowser',您可以使用
ExecWB
命令。要在没有对话框的情况下打印,请使用
OLECMDEXECOPT_PROMPTUSER
1
)常量。您还可以传递IE打印模板(只是一个HTML文件),以便更好地控制页面的显示方式

是这样的(摘自MSDN问题)


至于背景,它似乎是您可以在打印模板中指定的选项之一。所有打印对话框设置都是,但打印模板更可取,因为它不会更改系统范围的设置。

我不是。我使用的是“System.Windows.Controls.WebBrowser”,其中使用ExecWB将无法工作。经过多次搜索,似乎没有WPF WebBrowser对话框的打印几乎是不可能的,这主要是因为它基本上是WinForms WebBrowser的一个糟糕的包装器。@JToland,感谢更新,尽管这可能很不幸。[如何?]你能解决你的问题吗?不是真的。我只是简单地切换到使用WinForms WebBrowser控件,然后使用了一点变通的方法来启用将对话框置于“其上”(因为Windows窗体主机控件中的WinForms WebBrowser不遵守z顺序)。实际上,我只是没有拍摄当前屏幕的“图像”,隐藏WebBrowser,在它的位置显示图像,然后将对话框放在上面,使它看起来像是在当前屏幕顶部打开的对话框。
browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT,
               SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, 
               "print_template.html", ref nullObject);