1

我正在尝试从 WebBrowser 控件获取 html,但它还必须包含页面上输入元素的值属性。

如果我使用 webBrowser.DocumentText,我会得到页面最初加载时的完整 HTML。不包括输入字段值。

如果我使用 webBrowser.Document.Body.OuterHtml,我会得到值,但不是 () 的其他内容,我需要这些内容以便我可以获取样式表链接等。

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

谢谢

4

1 回答 1

1

有一些未记录的方法更改注册表未记录的 dll 导出)可以在不解析页面的情况下将文档打印到 XPS 或 PDF 打印机,也就是说,如果您有能力将所需的打印机驱动程序部署到客户的网络。

如果您想解析网页, documentElement.outerHTML 应该为您提供完整的规范化文档,而不是链接的图像脚本样式表文件。在挖掘 WinInet 缓存下载其他资源之前,您需要解析页面、枚举元素并检查元素类型并获取资源 url 。要获取 documentElement 属性,如果使用 Windows 窗体,则需要将 HtmlDocument.DomDocument 转换为 mshtml.IHTMLDocument2,如果使用 WPF,则需要将 WebBrowser.Document 转换为 mshtml.IHTMLDocument2。如果您需要在 Ajax 代码完成执行之前等待,请在引发DocumentComplete事件时启动计时器。

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

于 2011-11-10T03:07:23.120 回答