1

WebBrowser 控件的打印功能有问题。

首先我加载我的页面,它呈现正确。然后我设置页眉/页脚/边距和正确的打印机: webbrowser printing如何使用 WebBrowser 控件以编程方式更改打印机设置?

到目前为止有效。然后我用myBrowser.Print();

但是我的网站打印不正确。只打印左上角,几厘米,然后有滚动条。

我用 IE9 打印了我的网站,一切都很好。还尝试了不同的浏览器模式和文档模式。没问题。而且我认为控件和IE在技术上是相同的......

有没有我忘记的参数?

我要打印的网站很旧,没有文档类型。但由于控件显示正确,我希望它也能正确打印。

编辑:

发现它与网站上的 javascript 有关,它不能用于打印。有没有办法从被操纵的 DOM 中获取 HTML?

4

1 回答 1

2

对于打印功能,不处理外部文档。网站的所有文件都必须合并到一个可打印的网站中。要获取其他文档,您必须将 myBrowser.Document.DomDocument 转换为 IHTMLDocument2。从该 IHTMLDocument2 中,您可以提取 CSS 或 JS 以将其放入 html 中。

例如:

    void myBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        myBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(myBrowser_DocumentCompleted);
        myBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(myBrowser_DocumentPrintable);
        String mySource = myBrowser.DocumentText;

        // Get the CSS
        IHTMLDocument2 doc = (myBrowser.Document.DomDocument) as IHTMLDocument2;
        myCSS = doc.styleSheets.item(0).cssText;
        mySource = mySource.Replace("<link rel=\"stylesheet\" type=\"text/css\" href=\"/css/style.css\">", "<style type=\"text/css\">"+myCSS+"</style>");

        // Reload
        myBrowser.DocumentText = mySource;
    }

    void myBrowser_DocumentPrintable(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        myBrowser.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(myBrowser_DocumentPrintable);
        myBrowser.Print();
    }
于 2012-07-06T08:45:00.070 回答