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

Главные вкладки

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

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

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

Комментарии

Аватар пользователя VasyOK VasyOK 14 ноября 2014 в 0:05

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

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

Аватар пользователя sergeybelya sergeybelya 14 ноября 2014 в 0:18

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

Аватар пользователя VasyOK VasyOK 14 ноября 2014 в 0:19

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

Аватар пользователя Grayw0lf Grayw0lf 14 ноября 2014 в 0:27

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

Аватар пользователя deodren deodren 14 ноября 2014 в 0:40

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

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

Аватар пользователя deodren deodren 14 ноября 2014 в 0:44

"VasyOK" wrote:

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


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

Аватар пользователя drupby drupby 14 ноября 2014 в 4:22

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

Аватар пользователя deodren deodren 14 ноября 2014 в 15:07

Всем спасибо, вроде бы разобрался. Обошелся без библиотек, просто создал шаблон в 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;
?>