2011-11-09 95 views
0

我想从WebBrowser控件获取html,但它也必须在页面上包含输入元素的值属性。Windows窗体WebBrowser控件:DocumentText vs Document.Body.OuterHtml

如果我使用webBrowser.DocumentText,则会获取最初加载的页面的完整HTML。输入字段值不包括在内。

如果我使用webBrowser.Document.Body.OuterHtml,我得到的值,而不是其他内容(),我需要这样我就可以得到样式表链接等

是否有一个干净的可靠的方式从WebBrowser获取当前状态下DOM的完整HTML?我将HTML传递给库以将其呈现为PDF,因此,还可以赞赏以编程方式从WebBrowser控件保存为PDF的建议。

感谢

回答

1

有一些undocumented wayschanging registryundocumented dll export)打印的文档,以XPS或PDF打印机,而解析的页面,也就是说,如果你能买得起推出所需的打印机驱动程序,您的客户网络。

如果你想解析网页,documentElement.outerHTML应该给你完整的规范化的文件,但不链接imagescriptstylesheet文件。您需要解析页面,枚举元素并检查元素类型,然后在digging the WinInet cachedownloading之前获取其他资源的资源URL。要获得documentElement属性,如果使用Windows窗体,则需要将HtmlDocument.DomDocument强制转换为mshtml.IHTMLDocument2;如果使用WPF,则需要将WebBrowser.Document强制转换为mshtml.IHTMLDocument2。如果在Ajax代码执行完成之前需要等待,则在引发DocumentComplete事件时启动计时器。

在此阶段,我将解析HTML DOM并获取必要的数据以便通过模板生成报告,因此您始终可以选择生成报告引擎支持的其他格式,例如Microsoft Word。很少我需要将HTML解析出来,例如,打印长表而不在每个页面上添加自定义页眉和页脚。也就是说,如果你没有长表,你可以检查Convert HTML to PDF in .NET并测试哪个建议的软件/组件最适合你的目标网站。