Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Генератор MS Word *.doc с картинками для NetCat из HTML-исходника   Партнерский модуль

бесплатно
Скачать
promo
Зачастую требуется сгенерировать word-файл *.doc из HTML-страницы таким образом, чтобы в выходном файле сохранялись не ссылки на картинки, а сами картинки.
Решение для NetCat мы нашли с помощью идеи, изложенной на habrahabr.ru, и адаптировали его для NetCat. В прочем, скрипт подходит и для любой другой системы.

УСТАНОВКА
1. Распаковать архив в /netcat/modules/default/
2. На той странице, где нужно сделать кнопку "Сохранить в Word", вставляем примерно такой код:

<input type='button' value='Экспорт в Word' onclick='
document.getElementById(\"text\").value=FCKeditorAPI.GetInstance(\"f_ContractText\").GetXHTML();
document.getElementById(\"exp2word\").submit();' />

<form id='exp2word' method='post' action='/netcat/modules/default/wordgen.php'>
<input type='hidden' id='text' name='text' />
<input type='text' id='fname' name='fname' value='Договор 5' />
</form>

В данном случае появится кнопка, при нажатии которой скрипт возьмет HTML-содержимое из FCKEditor'а, подключенного к полю f_ContractText, и отправит его методом POST на наш скрипт wordgen.php.

ПРИНЦИП ДЕЙСТВИЯ
В скрипте wordgen.php имеется функция CreateDOC, на вход которой подается HTML-код со ссылками на картинки и имя выходного файла. Функция скачивает все нужные картинки по имеющимся в HTML ссылкам, конвертирует их в нужный формат, а затем все это оформляет в виде MHT-файла, которому присваивается имя *.doc.
Разумеется, это не настоящий MS Word файл, но он нормально открывается в Windows. В других ОС открываться скорее всего не будет, но у нас такой задачи и не было. улыбка

Будем рады, если решение кому-то будет полезным.
бесплатно

Комментарии 12

Заика Марина Сергеевна 25 ноября 2013, 12:36:40
Что-то при нажатии на кнопку ничего не происходит. Название поля заменено, файлы скопированы...
Есть ли возможность показать мне страничку с Вашей формой?
Возможно, вы вставили код в компонент 5-й версии неткат, где экранирование двойных кавычек не требуется.
Заика Марина Сергеевна 25 ноября 2013, 13:34:06
http://test.dynamics.ru/products/sensors-shop/standart.html

Компонент версии 4.
Если в событие onclick вставляю другое событие - оно срабатывает.

Посмотрел, все понятно. Мой пример onclick'а предназначен для полей редактирования, в которые встроен FCKEditor. А в вашем случае onclick нужно сочинять другой, например такой:

<input type='button' value='Экспорт в Word' onclick='
$(\"#text\").val(
$(this).closest(\"table.contentpaneopen\").html();
);
$(\"#exp2word\").submit();
' />

Вместо table.contentpaneopen можете написать, например, #identifikator, а где-то на странице сделать <div id='identifikator'>...</div> - и содержимое этого дива пойдет как раз в word-файл.
Заика Марина Сергеевна 25 ноября 2013, 14:07:00
Спасибо! Но, почему-то, даже с table.contentpaneopen не срабатывает...
Попробуйте после .html() убрать точку с запятой:
[CODE]$(\"#text\").val( $(this).closest(\"table.contentpaneopen\").html() );[/CODE]
Заика Марина Сергеевна 26 ноября 2013, 06:09:57
Точно! Без ";" все сработало.
Только файл создался без расширения, просто тип "файл".
А это вы так в fname указали: "Договор 5". Если написать "Договор 5.doc", то нормально формируется - с расширением.
Заика Марина Сергеевна 27 ноября 2013, 06:05:15
Супер!!! :)
ApachE  Web-студия "Сайтэкс" 15 апреля 2014, 09:20:51
Спасибо за скрипт! Только вот проблема с кирилицей(((
Пожалуйста! Так вы поправьте в wordgen.php кодировку-то :) функция iconv.
ApachE  Web-студия "Сайтэкс" 17 апреля 2014, 12:36:47
спс!
оставить комментарий
Описание проекта