Как написать форматированный текст в документ Word, сгенерированный из файла htm в С#

Я пытаюсь создать текстовый документ из сохраненного HTML-файла с использованием библиотеки Open XML. Если файл HTML не содержит изображения, я могу просто использовать приведенный ниже код и записать текстовое содержимое в документ Word.

HtmlDocument doc = new HtmlDocument();
doc.Load(fileName); //fileName is the Htm file
string Detail = string.Empty;
string webData = string.Empty;
HtmlNode hcollection = doc.DocumentNode.SelectSingleNode("//body");
Detail = hcollection.InnerText;

Но если файл HTML содержит встроенное изображение, я изо всех сил пытаюсь включить это изображение в документ Word.

При использовании hcollection.InnerText записывается только текстовая часть и исключается изображение.

Когда я использую

HtmlNode hcollection = doc.DocumentNode.SelectSingleNode("//body");
Detail = hcollection.InnerHtml;

Все теги HTML записываются в документ Word вместе с путем к изображению в теге.

<table border='0' width='100%' cellpadding='0' cellspacing='0' align='center'>
<tr><td valign='top' align="left">
<div style='width:100%'><div id="div_img">
<div>
 <img src="http://www.myweb.com/web/img/2013/07/18/img_1.jpg">
 <span>Sample Text</span></div></div><br><br>Sample Text Content here<br><br>                         </div></td></tr></table>

Как удалить теги html и вместо пути, показанного как

<img src="http://www.myweb.com/web/img/2013/07/18/img_1.jpg">

соответствующее изображение загружается.

Пожалуйста помоги.


person Mudassir Hasan    schedule 18.07.2013    source источник


Ответы (2)


Вам нужно будет посмотреть на HTML и каким-то образом перевести его в OpenXML.

Я использовал библиотеку с открытым исходным кодом HtmlToOpenXml (license), и это работает достаточно хорошо. Он должен обрабатывать изображения (встроенные, локальные или удаленные) и корректно вставлять их в документ OpenXML. Недавно я отправил патч, который был принят, так что проект все еще активен.

Однако у библиотеки есть некоторые ограничения:

Javascript (‹script›), CSS ‹style›, ‹meta› и другие неподдерживаемые теги не вызывают ошибки, а игнорируются.

Он обрабатывает информацию о встроенных стилях, но полностью игнорирует другой CSS, что мне и было нужно. В итоге я интегрировал простой анализ одного элемента <style> из другого проекта с открытым исходным кодом (jsonfx, используя лицензию MIT).

Примечание: обработка нескольких элементов <style>, загрузка CSS-файлов, определение того, какие правила стиля имеют приоритет — это все проблемы, которые я не рассматривал.

person BurnsBA    schedule 18.07.2013

На самом деле преобразование HTML-документа в MS Word является очень сложной задачей, и помимо тегов IMAGE необходимо решить множество других задач. Разница между форматами Open XML и HTML абсолютно решающая.

Если бы я был вами, я бы искал сторонние инструменты для этого. Было бы дешевле заплатить за них, чем тратить недели на исследование и изучение всех аспектов задачи, написание кода, а затем исправление множества ошибок.

Лично я использовал для этого библиотеку Aspose.Words. Он работал отлично, но, возможно, вы захотите попробовать другой.

person Egor4eg    schedule 18.07.2013
comment
Нет это не так. Но опять же, вы можете попробовать найти другой с открытым исходным кодом. - person Egor4eg; 18.07.2013