1

WebBrowserコントロールからhtmlを取得しようとしていますが、ページの入力要素の値属性も含める必要があります。

webBrowser.DocumentTextを使用すると、最初に読み込まれたページの完全なHTMLが取得されます。入力フィールドの値は含まれていません。

webBrowser.Document.Body.OuterHtmlを使用すると、値は取得されますが、スタイルシートのリンクなどを取得するために必要な()の他のコンテンツは取得されません。

WebBrowserから現在の状態のDOMの完全なHTMLを取得するためのクリーンで信頼できる方法はありますか?HTMLをライブラリに渡してPDFにレンダリングするので、WebBrowserコントロールからPDFにプログラムで保存するための提案もありがたいです。

ありがとう

4

1 に答える 1

1

文書化されていない方法レジストリの変更文書化されていないdllエクスポート)を使用して、ページを解析せずにドキュメントをXPSまたはPDFプリンターに印刷できます。つまり、必要なプリンタードライバーを顧客のネットワークに展開する余裕がある場合です。

Webページを解析する場合、documentElement.outerHTMLは完全な正規化されたドキュメントを提供しますが、リンクされた画像スクリプト、またはスタイルシートファイルは提供しません。WinInetキャッシュを掘り下げたり、追加のリソースをダウンロードしたりする前に、ページを解析し、要素を列挙し、要素タイプを確認し、リソースのURLを取得する必要があります。documentElementプロパティを取得するには、Windowsフォームを使用している場合はHtmlDocument.DomDocumentをmshtml.IHTMLDocument2にキャストするか、WPFを使用している場合はWebBrowser.Documentをmshtml.IHTMLDocument2にキャストする必要があります。Ajaxコードの実行が完了するまで待つ必要がある場合は、DocumentCompleteイベントが発生したときにタイマーを開始します。

この段階では、HTML DOMを解析し、テンプレートを介してレポートを生成するために必要なデータを取得するため、MicrosoftWordなどのレポートエンジンでサポートされている他の形式を常に生成するオプションがあります。非常にまれに、HTMLを解析済みとしてレンダリングする必要があります。たとえば、各ページにカスタマイズされたヘッダーとフッターを追加せずに長いテーブルを印刷します。とはいえ、長いテーブルがない場合は、.NETで[HTMLをPDFに変換]をオンにして、推奨されるソフトウェア/コンポーネントのどれがターゲットWebサイトで最適に機能するかをテストできます。

于 2011-11-10T03:07:23.120 に答える