Пакетное преобразование docx в чистый HTML

Я начинаю задаваться вопросом, возможно ли это вообще. Я искал решения в Google и не нашел ничего, что работало бы именно так, как мне бы хотелось.

Думаю, было бы полезно объяснить, что это влечет за собой. Я работаю в группе баз данных ИТ-отдела своего университета. Моя основная работа - взять спецификации отчета в файле docx, скопировать их в Dreamweaver, исправить некоторое форматирование и разместить на своем веб-сайте. Моя проблема в том, что делать это снова и снова до смешного утомительно. Я подумал, эй, я уже какое-то время ничего не писал на C #, возможно, я мог бы написать приложение, чтобы захватить файл docx, преобразовать его в HTML, исправить CSS, прикрепить верхний и нижний колонтитулы с веб-страницы там и сохраните результат. Изначально я планировал делать это один за другим, но, вероятно, не составит труда ввести список файлов и выполнить пакетное преобразование.

Я нашел эти актуальные темы о том, как это сделать, но они недостаточно хорошо подходят для моих нужд.

http://www.techrepublic.com/blog/howdoi/how-do-i-modify-word-documents-using-c/190

Это, вероятно, подходит для некоторых документов, но, поскольку это просто автоматизация экземпляра Word, я чувствую, что это будет медленным и требует большого объема памяти. Я бы предпочел избегать открытия и закрытия экземпляра Word более 50 раз.

http://openxmldeveloper.org/articles/333.aspx

Это то, что я начал использовать. XSLT имел преимущество в том, что не нужно было устанавливать или запускать word для каждого файла. После некоторых поисков я получил доказательство работоспособности концепции. Он принимает файл docx, распаковывает его, извлекает из него файл document.xml и использует файл DocX2Html.xsl, который я извлек из программы просмотра OpenXML. Я считаю, что изначально это было предоставлено MS для серверов sharepoint, чтобы обеспечить возможность отображать текстовые документы в браузере. Или что-то вдоль этих линий.

После корректировки этого кода в соответствии с моими потребностями и возникновения проблем с методом objXSLT.Load () я в конечном итоге использовал IlMerge для преобразования XSL в DLL. Понятия не имею, почему я продолжал получать ошибку компиляции при использовании простого старого файла XSL, но DLL работала нормально, так что я остался доволен. Здесь (http://pastebin.com/a5HBAakJ) мой текущий код. Он отлично справляется с задачей преобразования docx в HTML (кроме случайных пробелов между некоторыми словами), но файл результатов имеет до смешного уродливый синтаксис HTML. Пример этого чудовища можно найти здесь (http://pastebin.com/b8sPGmFE).

Кто-нибудь знает, как я могу это исправить? Я думаю, что, возможно, мне нужно создать новый файл XSL, поскольку предоставленный MS - это то, что отвечает за вставку всех этих тегов и дополнительного кода в него. Моя проблема в том, что я ничего не знаю о том, как это сделать. Возможно, уже существует альтернативная версия. Все, что мне нужно, это тот, который сохранит таблицы и форматирование текста. Изображения не нужны.


person Omega192    schedule 28.01.2011    source источник
comment
Вначале вы говорите, что это процесс, который вы выполняете вручную, но затем вас не устраивает ресурсоемкое решение для автоматизации Word. Почему? Если вы не продаете это как коммерческий продукт, почему эффективность решения имеет значение? Вы превращаете трудоемкий ручной процесс в автоматизированный, кого волнует, займет ли он минуту на документ - это все равно будет намного быстрее.   -  person Keith    schedule 28.01.2011
comment
Правда, как коммерческий продукт не продаю. Однако я намерен поделиться этим со своими коллегами и предпочел бы предложить им эффективную программу. Мой персональный компьютер может быть современным и соответствовать спецификациям, позволяющим справляться с такими вещами, но я понятия не имею, как их справятся с этим. Еще одна проблема - это зависимость от Word. Я предполагаю, что все они владеют копией, но это всего лишь предположение. Я хотел бы предложить им программу, которая будет эффективно работать независимо от того, на каком компьютере она запущена.   -  person Omega192    schedule 28.01.2011


Ответы (3)


Похоже, это именно то, что вам нужно: http://msdn.microsoft.com/en-us/library/ff628051(v=office.14).aspx

Автор Эрик Уайт поделился своим опытом разработки этого инструмента. Вы можете увидеть этот список сообщений в его блоге здесь: http://blogs.msdn.com/b/ericwhite/archive/2008/10/20/eric-white-s-blog-s-table-of-contents.aspx#Open_XML_to_XHtml

person Alec Gorge    schedule 28.01.2011
comment
Ух ты. Я действительно не знаю, как я никогда не сталкивался с этим в своих поисках. Думаю, я искал docx в HTML, а не Open XML / WordprocessingML в XHTML. У меня еще не было возможности реализовать это, но похоже, что это именно то, что я ищу. Большое тебе спасибо! : D - person Omega192; 28.01.2011
comment
Отлично! Я уверен, что после того, как вы завершите эту программу, многие люди захотят услышать, сработает ли это. Может быть, как только вы закончите программу, вы сможете опубликовать где-нибудь исходный код или что-то в этом роде. Удачи! - person Alec Gorge; 29.01.2011
comment
Драт, мог бы поклясться, что опубликовал обновление. По какой-то причине HtmlConverterSettings и HtmlConverter выдают мне ошибки об отсутствующей сборке. Я сослался на все четыре сборки, о которых мне сообщает первая ссылка, за исключением того, что OpenXmlPowerTools на самом деле является OpenXml.PowerTools, когда я импортирую .dll, я связался с Эриком Уайтом по этому поводу, но я не получил от него известий с тех пор, как ответил на его исходный ответ. - person Omega192; 06.04.2011
comment
Я сделал полную адаптацию и реализацию этого проекта ... это отличный материал. Вы когда-нибудь разбирались со своим? - person Chris B. Behrens; 08.07.2011
comment
@ ChrisB.Behrens Drat, только что увидел ваш комментарий. Я никогда не мог решить эту проблему с отсутствующей сборкой, поэтому я отказался от красивого решения и открыл шлюз в преисподнюю и сделал это с помощью RegEx. Ввод достаточно контролируемый, поэтому он творил чудеса. - person Omega192; 23.04.2012

Поскольку я большой поклонник Aspose .Words, коммерческую библиотеку для создания / обработки документов Word, я бы сделал что-то вроде:

  1. Откройте документ Word с помощью Aspose.Words.
  2. Сохраните документ Word как HTML.
  3. Используйте что-нибудь вроде SgmlReader или HTML Agility Pack (или даже регулярные выражения, если подходит) для удаления нежелательных тегов / атрибутов HTML.

Поскольку вы написали, что работаете в университете, я не уверен, можно ли использовать коммерческие пакеты.

person Uwe Keim    schedule 28.01.2011
comment
Да, я встречал некоторые коммерческие решения, но не конкретно Aspose.Words. Это просто личный проект, который я делаю, чтобы помочь своим коллегам и себе самому, поэтому я полагаюсь на свой студенческий бюджет в размере 0 долларов: P Я ценю ваше время, чтобы ответить на мой вопрос, однако, спасибо! - person Omega192; 28.01.2011

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

Я веб-разработчик, у которого были те же проблемы, поэтому я создал свой собственный инструмент: http://www.convertwordtohtml.com

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

С сайта можно загрузить бесплатную пробную версию, и если у вас возникнут какие-либо вопросы, свяжитесь со мной в любое время.

person Brian O'Neill    schedule 21.02.2011
comment
Я почти уверен, что это вполне приемлемо. Похоже, вы сделали очень красивую программу, но, к сожалению, у меня нет денег на покупку лицензии. Тем не менее, спасибо за ваш пост! - person Omega192; 22.02.2011