【问题标题】:How do I print from the wpf WebBrowser available in .net 3.5 SP1?如何从 .net 3.5 SP1 中可用的 wpf WebBrowser 进行打印?
【发布时间】:2010-10-22 08:38:47
【问题描述】:

我们目前在 WindowsFormsHost 中的应用程序中使用 winforms WebBrowser 控件,并通过调用“WebBrowser.ShowPrintDialog()”进行打印我们遇到了一个问题,即对话框似乎不是模态的,父窗口可以是如果稍后尝试打印,则会被驳回。

我正在查看新的 wpf webbrowser 控件,希望他们在自己做类似的事情时能够解决这个问题,但找不到从中打印的方法..

我发现有人在网上谈论这样做:

        PrintDialog printDialog = new PrintDialog();
        printDialog.PrintDocument(((IDocumentPaginatorSource)webBrowser.Document).DocumentPaginator, "My App");  

但这会引发异常,因为 WebBrowser.Document 不支持 IDocumentPaginatorSource 接口。

有什么方法可以从 wpf 网络浏览器控件打印?

谢谢

【问题讨论】:

    标签: c# html wpf browser printing


    【解决方案1】:

    我正在使用它,它可以工作:

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

    【讨论】:

    • 谢谢,成功了。不幸的是,即使打印对话框仍然存在,我仍然存在可以与启动打印的 UI 交互(并关闭)的问题。你有这个问题吗?关于关闭打印对话框时如何获取事件的任何想法?
    • 我不知道,但我很确定打印对话框是从非托管代码启动的,因此它可能需要更多的工作来侦听此类事件。
    • 我讨厌你们俩,using语句在哪里,你是如何实例化你的webbrowser的?
    • @MartinClemensBloch 我没有原始来源了,但是 WebBrowser 是来自 Windows 窗体的控件(它像其他 WinForms 控件一样被实例化),我认为 mshtml.IHTMLDocument2 在您参考时可用mshtml.dll 作为 COM 组件。
    • 是的,我想通了,不过还是谢谢 :) 虽然它不起作用 - 它打印空白页面,但我现在正在使用 WPF 打印。我认为对于 Forms 和 WPF webbrowser,您都需要实际拥有该窗口。在代码库中实例化网络浏览器只会导致打印空白页面。
    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2012-03-27
    • 2010-09-19
    • 2011-08-29
    相关资源
    最近更新 更多