Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с библиотекой PHPWord.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Данные из формы под шаблон Word'a.
pioneer
Отправлено: 27 Февраля, 2013 - 18:23:53
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Привет всем форумчанам! Радость Собственно, столкнулся с такой задачей - нужно данные из формы передать в Word'овский шаблон и затем предоставить пользователю готовый для скачивания документ. Для решения этой задачи решил использовать библиотеку PHPWord. И вот что у меня получилось (а точнее - не получилось):
1) у себя на хосте создал индексную страницу index.php
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. </head>
  6. <form action="script/php2doc.php" method="POST">
  7. <p>
  8.    <label> <b> Ваша фамилия: </b> <br /> </label>
  9.    <input name="sirname" />
  10. </p>
  11.  
  12. <p>
  13.    <label> <b> Ваше имя: </b> <br /> </label>
  14.    <input name="name" />
  15. </p>
  16.  
  17. <p>
  18.    <label> <b> Ваше очество: </b> <br /> </label>
  19.    <input name="fathname" />
  20. </p>
  21. <input type="submit" value="Создать документ!" />
  22. </form>
  23. </html>


2) В папку script закинул сам распакованный PHPWord и заранее подготовленный шаблон Template.docx. Мой скрипт php2doc.php находится здесь же:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once 'PHPWord.php';
  3.  
  4. $PHPWord = new PHPWord();
  5.  
  6. $document = $PHPWord->loadTemplate('Template.docx');
  7.  
  8. $document->setValue('Value1', $sirname);
  9. $document->setValue('Value2', $name);
  10. $document->setValue('Value3', $fathname);
  11.  
  12. $document->save('FIO.docx');
  13. ?>


Только вот в чем беда:
1) после нажатия кнопки "Скачать документ" появляется пустое окно в браузере без возможности выбора места для сохранения;
2) в готовом документе FIO.docx (он появляется в этой же папке script) поля "Фамилия", "Имя" и "Отчество" остаются пустыми и без значений. Что с этим делать? Неужели проблема снова в том, что сперва нужно выполнять скрипт, а потом подгружать шаблон (index.php)?? Исходный шаблон прикрепляю. Заранее спасибо за помощь.
Скачать файл: Template.docx
Скачан раз: 176

(Отредактировано автором: 27 Февраля, 2013 - 18:26:35)

 
 Top
LShark
Отправлено: 27 Февраля, 2013 - 19:42:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 240
Дата рег-ции: Нояб. 2012  


Помог: 1 раз(а)




Можно не биться башкой об асфальт, а использовать класс, написанный индусом (я не шучу, он реально индус из Индии):
http://www.phpclasses[dot]org/package/2763

Берет на вход HTML файл и на выходе дает doc-файл, который открывается фактически везде.

Хотя на самом деле сугубо индусская работа - просто и без наворотов.
Учитывая, что там для скачивания нужна регистрация, кладу в аттач файл и пример - все вместе - чуть больше 6 килобайт (все эз-из, регистрация - требование файлопомойки).

Ну или на самом деле - хранить xml с инфой из шаблона, прегреплейсом заменить нужное и запаковать в зип, переименовать в docx и готово - получишь docx файл. И не надо генерировать через такой класс. Коряво, зато просто.
Скачать файл: html2word.ZIP
Скачан раз: 387

(Отредактировано автором: 27 Февраля, 2013 - 19:46:11)



-----
Истина прежде всего в том, что...
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Февраля, 2013 - 21:39:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Спойлер (Отобразить)
 
 Top
pioneer
Отправлено: 27 Февраля, 2013 - 22:19:43
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




LShark, а можно, пожалуйста поподробнее и применимо к моему примеру?) мне вот, собственно, для каких нужд все это нужно: пишу проект, представляющий собой сайт-помощник в составлении резюме. человек там вводит необходимую информацию в форму, прикрепляет свою фотку, и на выходе - вуаля! - скачивает готовый документ со всеми стандартами оформления правильного резюме (как правило, это по-моему что-то вроде табличного вида). мне что только не советовали - и юзать yii framework, подкручивать туда rtf-спецификацию, использовать тот самый PHPWord, о котором я в этой теме спрашиваю и кучу другого...Так вот, форумчане-идеологи и практиканты, подскажите, как лучше и практичнее решить данную ситуацию? С чего начать? Заранее всем низкий поклон Улыбка
 
 Top
widla
Отправлено: 20 Марта, 2014 - 07:06:32
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2014  


Помог: 0 раз(а)




Доброго времени суток!
А кто-нибудь справился с проблемой кодировки в библиотеке PHPWord при работе с шаблонами? Все способы которые есть в инете рассматривают создание документа без шаблона, а вот с шаблоном русский язык как-то не дружит. Шаблон даже проводил через WordPad, чтобы он обрезал лишние XML-тэги, всё равно не помогло.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?
  3.         include_once 'PHPWord.php';
  4.         $PHPWord = new PHPWord();
  5.         $document = $PHPWord->loadTemplate('test.docx');
  6.         $document->setValue('shifr', "привет");
  7.         $temp_file = tempnam(sys_get_temp_dir(), 'PHPWord');
  8.         $document->save($temp_file);
  9.         header("Content-Disposition: attachment; filename=myFile.docx");
  10.         readfile($temp_file); // or echo file_get_contents($temp_file);
  11.         unlink($temp_file);  // remove temp file
  12. ?>
  13.  

С английскими буквами всё отлично работает, а вот русское слово ставишь и он сразу же открывает документ с ошибкой. Пробовал удалять двойные utf8_encode() в Section.php, не помогло, из всех других файлов также удалял эту функцию - никакого эффекта, что они были, что их нет. Как быть? Если кто справился, помогите пожалуйста, уже вторую неделю бьюсь над этим.

(Отредактировано автором: 20 Марта, 2014 - 07:06:56)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB