Элемент управления Windows Forms WebBrowser: DocumentText против Document.Body.OuterHtml - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь получить html из элемента управления WebBrowser, но он также должен включать атрибуты значения входных элементов на странице.

Если я использую webBrowser.DocumentText, я получаю полный HTML-код страницы, как она была первоначально загружена.Значения поля ввода не включены.

Если я использую webBrowser.Document.Body.OuterHtml, я получаю значения, но не другое содержимое (), которое мне нужно, чтобы получить ссылки на таблицы стилей и т. Д.

Есть ли чистый надежный способ получить полный HTML-код DOM в его текущем состоянии из WebBrowser?Я передаю HTML в библиотеку, чтобы он отображался в PDF, поэтому предложения по программному сохранению из элемента управления WebBrowser в PDF также будут оценены.

Спасибо

1 Ответ

1 голос
/ 10 ноября 2011

Существует несколько недокументированных способов ( изменение реестра , недокументированный dll экспорт ) для печати документа на XPS или PDF-принтеры безпарсинг страницы, то есть, если вы можете позволить себе развернуть необходимые драйверы принтера в сети вашего клиента.

Если вы хотите проанализировать веб-страницу, то documentElement.outerHTML должен предоставить вам полный канонизированный документ, но не связанные изображения , скрипт или таблица стилей файлы.Вам необходимо проанализировать страницу, перечислить элементы, проверить типы элементов и получить URL-адреса ресурсов перед тем, как копать кэш WinInet или , загружая для получения дополнительных ресурсов.Чтобы получить свойство documentElement, вам нужно привести HtmlDocument.DomDocument к mshtml.IHTMLDocument2, если вы используете Windows Forms, или преобразовать WebBrowser.Document в mshtml.IHTMLDocument2, если вы используете WPF.Если вам нужно подождать до завершения выполнения кода Ajax, запустив таймер при возникновении события DocumentComplete .

На этом этапе я бы проанализировал HTML DOM и получил необходимые данные вЧтобы создать отчет с помощью шаблона, у вас всегда есть возможность создавать другие форматы, поддерживаемые механизмом отчетов, такие как Microsoft Word.Очень редко мне нужно отображать HTML как проанализированный, например, печатая длинную таблицу без добавления настраиваемого верхнего и нижнего колонтитула на каждой странице.Тем не менее, вы можете проверить Преобразование HTML в PDF в .NET и проверить, какое из предложенных программ / компонентов лучше всего работает с вашим целевым веб-сайтом, если у вас нет длинных таблиц.

...