【问题标题】:Printing Background Colors from WPF WebBrowser从 WPF WebBrowser 打印背景颜色
【发布时间】:2011-08-29 02:37:28
【问题描述】:

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

mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, null);

我的 HTML 内容有带有背景颜色的表格。目前,当我打印内容时,背景颜色不会打印——一切都是纯白色的。有没有办法告诉 WebBrowser 也打印背景颜色?

此外,这仍然会导致弹出打印对话框。有谁知道无对话框打印内容的命令是什么?

非常感谢!

【问题讨论】:

    标签: c# wpf printing browser


    【解决方案1】:

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

    是这样的(取自thisMSDN 问题)

    browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT,
                   SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, 
                   "print_template.html", ref nullObject);
    

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

    【讨论】:

    • 我不是。我正在使用“System.Windows.Controls.WebBrowser”,其中使用 ExecWB 将不起作用。经过大量搜索后,从 WPF WebBrowser 打印没有对话框几乎是不可能的,这主要是因为它基本上是 WinForms WebBrowser 的一个糟糕的包装器。
    • @JToland,感谢您的更新,尽管这可能很不幸。 [如何?] 你能解决你的问题吗?
    • 不是真的。我只是切换到使用 WinForms WebBrowser 控件,然后使用一些变通方法来启用将对话框置于“顶部”(因为 Windows Forms Host 控件中的 WinForms WebBrowser 不服从 z 顺序)。实际上,我只是不拍摄当前屏幕的“图像”,隐藏 WebBrowser,在其位置显示图像,然后将对话框放在上面,使其看起来像刚刚在当前屏幕顶部打开的对话框。跨度>
    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 2015-02-19
    • 2011-01-24
    • 2010-10-24
    • 2016-01-29
    • 2011-04-23
    相关资源
    最近更新 更多