2011-11-09 46 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並測試哪個建議的軟件/組件最適合你的目標網站。