Экспорт полей ноды в doc-шаблон

13 ноября 2014 в 23:58
Аватар пользователя deodren deodren 0 12

Здравствуйте!

Снова прошу совета. Необходимо реализовать вывод полей ноды в шаблон doc-Файла. Проще говоря, есть официальный бланк организации. Необходимо, чтобы определенные поля ноды вставали в нужные позиции шаблона, чтобы потом можно было распечатать. Поиском особо не продвинулся в решении проблемы. Буду рад, если кто-то, хотя бы правильный вектор движения задаст. Заранее благодарен!

Комментарии

Легче с сайта выгрузить результаты в табличный файл (1),
а на стороне Word-a оформить (возможно скриптом на VBA) чтобы поля шаблона жрались из табличного файла (2).

Не могу точнее сказать. Опытные секретарши часто умеют такое (2) делать.

14 ноября 2014 в 0:05

Решал задачу своим модулем. Использовал шаблон документа в .docx и в него вставлял нужные данные из полей нод. Готового решения не нашел. Для работы с шаблоном использовал http://www.tinybutstrong.com/plugins/opentbs/tbs_plugin_opentbs.html

14 ноября 2014 в 0:18

Смутно представляю о чем речь у вас идет.
Если нужно именно, чтобы фаблон doc-файла имел информацию из сайт для своих полей - примерный рецепт выше.
Если просто данные распечатать - лучше на стороне Друпала делать. Есть модули для печати.

14 ноября 2014 в 0:19

Делал вывод в rtf файл после заполнении формы. Работа как с обычным файлом только данные при вставке надо немного обработать. Делается проще чем вывод в doc или pdf.

14 ноября 2014 в 0:27

"Grayw0lf" wrote:
Делал вывод в rtf файл после заполнении формы. Работа как с обычным файлом только данные при вставке надо немного обработать. Делается проще чем вывод в doc или pdf.

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

14 ноября 2014 в 0:40

"VasyOK" wrote:

Смутно представляю о чем речь у вас идет.
Если нужно именно, чтобы фаблон doc-файла имел информацию из сайт для своих полей - примерный рецепт выше.
Если просто данные распечатать - лучше на стороне Друпала делать. Есть модули для печати.


Речь именно о формировании определенного файла, с разными значениями из полей ноды. Но значения не только текстовые, нужно также подставлять картинки.

14 ноября 2014 в 0:44

можно использовать PHPDocx библиотеку (на хабре есть инструкции к ней), изображения тоже умеет вставлять
а дальнейшая реализация уже зависит от фантазии, допустим можно при создании нод создавать и вордовские файлы(hook_node_insert,hook_node_presave), а потом в шаблоне ноды, страницы выводить ссылку на документ

14 ноября 2014 в 4:22

Всем спасибо, вроде бы разобрался. Обошелся без библиотек, просто создал шаблон в WordPad, разметил его <> и т.д.
А затем, с помощью str_replace заменяю тэги на нужные значения.

<?php
// генерация заголовков, призванных облегчить браузеру выбор
// требуемого приложения
header "Content-type: application/rtf" );
header "Content-Disposition: inline; filename='Diplom.rtf' ");

//Для примера задаем значения переменных
$name"Вася";
$surname "Пупкини";
$photo "photo.jpg"
$filename "qwer.rtf";

// открытие файла шаблона
$fp fopen ($filename"r" );
 
//перевод изображения в hex формат
 
$imgData=getimagesize($photo);
 
$newImagePre="{\\*\\shppict{\\pict \\jpegblip \\picw".$imgData[0]." \\pich".$imgData[1]." \\wbmbitspixel24 ";
 
$newImage=file_get_contents($photo,"rb");
 
$hex=bin2hex($newImage);
 
$imgDat=$newImagePre.$hex."}}";

// считывание шаблона в переменную
$output fread($fpfilesize$filename ));
fclose ($fp);
// замещение заполнителей в шаблоне данными
$output str_replace("<<NAME>>"$name$output);
$output str_replace("<<SURNAME>>"$surname$output);
$output str_replace("<<PHOTO>>"$imgDat$output);
// отправка сгенерированного документа в браузер
echo $output;
?>
14 ноября 2014 в 15:07