我试图从WebBrowser控件获取html,但它也必须包含页面上输入元素的value属性。
如果我使用webBrowser.DocumentText,我会在最初加载时获得页面的完整HTML。输入字段值不包括在内。
如果我使用webBrowser.Document.Body.OuterHtml,我会得到值,但不是我需要的其他内容(),所以我可以得到样式表链接等。
是否有一种干净可靠的方法从WebBrowser获取当前状态的DOM的完整HTML?我将HTML传递给一个库,以便将其呈现为PDF,因此也欢迎以编程方式从WebBrowser控件保存为PDF的建议。
由于
答案 0 :(得分:1)
有一些undocumented ways(changing registry,undocumented dll export)可以在不解析页面的情况下将文档打印到XPS或PDF打印机,也就是说,如果您能负担得起推出所需的打印机驱动程序到您客户的网络。
如果要解析网页,documentElement.outerHTML应该为您提供完整的规范化文档,但不链接的image,script或{{3} }文件。您需要解析页面,枚举元素并检查元素类型,并在stylesheet或digging the WinInet cache之前获取资源URL以获取其他资源。要获取documentElement属性,如果使用Windows窗体,则需要将HtmlDocument.DomDocument强制转换为mshtml.IHTMLDocument2;如果使用WPF,则需要将WebBrowser.Document强制转换为mshtml.IHTMLDocument2。如果您需要在Ajax代码完成执行之前等待,请在引发downloading事件时启动计时器。
在这个阶段,我会解析HTML DOM并获取必要的数据,以便通过模板生成报告,因此您始终可以选择生成报告引擎支持的其他格式,例如Microsoft Word。我很少需要将HTML呈现为已解析,例如,打印长表而不在每页上添加自定义页眉和页脚。也就是说,如果您没有长桌,可以检查DocumentComplete并测试哪个建议的软件/组件最适合您的目标网站。