WWW.TEKCT.RU

Преобразование текста в формате Word в набор html-файлов

Задача такая. У нас есть достаточно объемный текст, назовем его условно «книга», подготовленный в редакторе Word. Нам надо преобразовать его в набор web-страниц. Кроме того, необходимо сформировать содержание с гиперссылками. Делать такую работу вручную — очевидно, потратить очень много времени. Необходим макрос для автоматизации процесса.

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

В нашем случае оформление документа Word можно считать традиционным. В тексте для заголовков глав использован стиль Заголовок 1, для заголовков разделов — Заголовок 2. Допустим, что каждый раздел должен попадать на отдельную web-страницу. Будем считать также, что существуют подразделы, заголовки которых отформатированы стилями Заголовок 3 и Заголовок 4. Для этих подразделов создавать отдельные web-страницы не нужно, но названия должны попасть в содержание.

Каким стилем отформатирован основной текст, не важно. Мы будем преобразовывать абзацы Word в абзацы HTML.

Если в тексте книги есть фрагменты текста, отформатированные курсивом или полужирным, это форматирование должно попасть и в html-код.

Само собой, в книге могут быть рисунки. Примем правило: в том месте, где должен находиться рисунок, стоит «метка», состоящая из квадратных скобок и слова ris. Например, первый рисунок первой главы обозначается так: [ris01_01]. Файл рисунка подготавливается, естественно, отдельно, и в этом случае он должен быть назван ris01_01.jpg. Размеры в коде HTML придется проставить вручную.

Подрисуночные подписи находятся в отдельных абзацах, их надо выравнивать по центру (обычный текст — по ширине). Подрисуночные подписи будем опознавать по началу: фрагменту «Рис.».

Конвертация книги займет несколько этапов.

1. Подготовка исходного файла doc и шаблона

Разумеется, надо сделать копию файла с книгой и измываться дальше над этой копией. Если в книге есть таблицы, их надо изъять и преобразовать в формат html отдельно. Вот тут http://www.textfixer.com/html/convert-word-to-html.php я нашел очень хорошую онлайновую очищалку (очистить HTML от Word). Просто копируете туда таблицу, а на выходе получаете чистый html-код. Доработка его очень проста: добавить атрибуты по желанию в тег TABLE, и, опять же, при желании, выровнять данные в ячейках по ширине и высоте. Делается это элементарно в любом HTML-редакторе. Сохраните таблицы в отдельном файле и в конце вставьте на web-страницы.

Макросы рассчитаны на работу с папкой D:\mysite\ (будем называть ее рабочей). Или создайте такую же, или создайте свою и отредактируйте текст макросов (в начале каждого макроса задаются исходные данные).

Необходимо создать в рабочей папке шаблон раздела shablon.htm. В нем надо разместить весь стандартный html-код. В частности, должен быть тег TITLE с постоянной текстовой частью. Макрос будет разнообразить содержимое этого тега дополнительным текстом, взятым из заголовков (что хорошо для SEO). Место, куда должен быть вставлен текст раздела, требуется ЗАРАНЕЕ пометить комментарием <!--text-->

Места, куда должны быть вставлены ссылки к предыдущему разделу, пометить комментарием <!--prev--> (обычно такие ссылки вставляют в начале и в конце страницы, чтобы читающему было удобно).

Места, куда должны быть вставлены ссылки к следующему разделу, пометить комментарием <!--next-->.

Полезно сделать в шаблоне линк к CSS. Это позволяет решить много проблем. Например, часто бывает, что буквы, выделенные курсивом, выглядят более тонкими по сравнению с буквами обычного текста. Одно из решений проблемы — присвоить тегу I свойство {font-weight: bold}. Да и мало ли, какое оформление захочется еще добавить. Для абзацев обычного текста нами будет назначен класс maintext, для подрисуночных подписей — picturename. Если захотите использовать другие классы или что-то еще, пожалуйте ручками править макрос book_to_htm_web(). Предполагается также, что все рисунки находятся в папке images.

2. Предварительная обработка файла doc

Откройте в Word подготовленный файл книги и запустите макрос book_to_htm_pre(). Он заменит в тексте угловые скобки и амперсанды (если они есть) на соответствующие спецсимволы, в соответствии с правилами HTML.

Кроме того, макрос оформит тегами форматирование текста полужирным и курсивом. То есть, если у нас в тексте есть выделенное слово, оно будет записано так: <b>слово</b> . Разумеется, после соответствующего допиливания кода макросов, подобным образом можно БЫЛО БЫ оформить и другое символьное форматирование (верхний и нижний индекс, подчеркнутое и зачеркнутое начертание), главное, чтобы в языке VBA имелось свойство для этого вида формата.

Тут есть небольшая хитрость: если полужирным или курсивом заканчивается абзац, в конце абзаца необходимо поставить закрывающий тег B или I. Это нужно, чтобы в дальнейшем теги были вложены правильно (макрос это учитывает).

После этого документ Word сохраняется (автоматизированной командой Сохранить как) в отдельном файле (в рабочей папке): к имени файла добавляется _to_html. В дальнейшем работа будет идти только с ним.

На этом этапе можно вручную расставить некоторые теги в тексте - т.е. редактируя документ в Word. Например, я знаю, что в моей книге один раз (!) встречается ненумерованный список. Можно, конечно, добавить в макрос необходимый код. Но гораздо быстрее и проще добавить в текст несколько тегов UL и LI. Да и мало ли какое еще оформление попадется в тексте! На каждый чих в аптеку не бегают.

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

3. Конвертация doc в htm

Откройте (если не открыт) обработанный файл книги в Word (тот, где в имени есть _to_html) и запустите макрос book_to_htm_web(). Осталось дождаться конца его работы и можно начинать просмотр web-страниц (с файла contents1.htm). Если выполнение макроса прервется, необходимо удалить полученные web-страницы и запустить его снова.

Макрос учитывает особенности текста: за заголовком главы обычно идет заголовок раздела, но иногда глава имеет вступление. Все это должно попасть в один html-файл и, соответственно, гиперссылки в содержании (название главы и раздела) должны указывать на один файл. Другая особенность: подразделы внутри одного раздела. Тоже один html-файл и несколько гиперссылок в содержании (тут используются метки, чтобы все было супер-пупер).

Поскольку в текст формата HTML вставляются двойные кавычки, макрос командой Options отключает автозамену двойных кавычек (на типографские). Если для вас это важно, верните потом режим обратно (Сервис — Параметры автозамены — Автоформат при вводе).

Если вам интересно, для чего этот макрос можно использовать, посмотрите эту книгу. Макросы создавались 2 дня, конвертация заняла 20 минут. Работа «вркопашную» заняла бы намного больше времени, да и была бы намного скучнее :).

В этом текстовом файле приведены листинги всех необходимых процедур и функций (с комментариями).

© TEKCT.RU, А. Гончаров, 2010-2013

Рейтинг@Mail.ru Rambler's Top100