Пакетное преобразование DOCX в чистый HTML - PullRequest
15 голосов
/ 28 января 2011

Я начинаю задумываться, возможно ли это вообще. Я искал решения в 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 заключалось в том, что не нужно было устанавливать и запускать слова для каждого файла. После некоторых поисков я получил доказательство работоспособности концепции. Он берет файл 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 предоставил именно то, что отвечает за размещение всех этих тегов и дополнительного кода. Моя проблема в том, что я ничего не знаю о том, как это сделать. Возможно, уже есть альтернативная версия. Все, что мне нужно, это тот, который сохранит таблицы и форматирование текста. Изображения не нужны.

Ответы [ 3 ]

6 голосов
/ 28 января 2011

Это выглядит как раз то, что вам нужно: 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

2 голосов
/ 21 февраля 2011

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

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

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

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

2 голосов
/ 28 января 2011

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

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

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

...