Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 462
1

PhpWord: создание ссылки для сохранения-скачивания шаблона. Видимо проблема с заголовками или путями

18.12.2019, 17:48. Показов 1244. Ответов 2

Получается сохранять измененный шаблон документа автоматически, задавая ему пути и имя через переменные. Но для ручного сохранения код придумать не могу. Файл сохраняется, но открывается либо с предупреждением об ошибке, либо вообще не открывается, либо открывается пустой или какой-то предыдущий вариант. Возможно я не правильно пишу заголовки или не правильно указываю пути для временного файла. Ещё пробовал прописать exit, но тоже не помогает.
Вот один из вариантов кода:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    if (empty($data['template'])) {
        $template="template1";
        $tmp_patch=realpath('templates/'.$template.'.docx'); //путь до шаблона
    if ($tmp_patch==false) { //есть ли файл шаблона на сервере?
        echo "Шаблон договора не найден.";
                return false;
        }
    } elseif (isset($_POST['template'])){
        $template=$_POST['template']; 
        }
require_once 'vendor\phpoffice\phpword\src\PhpWord\PhpWord.php';
$PhpWord = new \PhpOffice\PhpWord\PhpWord();
 
$document = $PhpWord->loadTemplate($tmp_patch);
 
$properties = $phpWord->getDocInfo();
$properties->setCreator('DG');
 
$document->setValue('id_document',$id_document); //номер документа
$document->setValue('created', $created); //дата создания документа
$document->setValue('path_to', $path_to); //какой-то адрес в сети
    if (empty($_POST['path_to'])){
        $path_to='finish/';
        }
elseif (isset($_POST['path_to'])) {
      $temp_file = tempnam(sys_get_temp_dir(), 'PHPWord');//сохранять будем во временную папку  
      echo $temp_file.'<br>';
$FN='.docx';
//$document->saveAs($document->$tmp_patch . $FN); // так не получается
//      $document->saveAs($temp_file,'Word2007', $download = false); // в таком варианте тоже не получается
      //заголовки чтобы скачать сразу файл
 
      header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" );
      header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" );
      header ( "Cache-Control: no-cache, must-revalidate" );
      header ( "Pragma: no-cache" );
      header ( "Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document" );
      header ("Content-Disposition: attachment; filename=dogovor_".$data['id_document'].".docx");
      header ("Content-Disposition: attachment; filename=Template_full.docx");
      readfile ($temp_patch . $FN); 
exit;
      unlink($temp_file);
        }
 
    if (empty($_POST['formDoc'])) {
        $formDoc=".docx";
        } elseif (isset($_POST['formDoc'])){
        $formDoc=$_POST['formDoc']; echo $formDoc.'<br>';
        }
$fileName=$path_to.$typeDoc.'_'.$id_document.$formDoc;
$document->saveAs($fileName,'Word2007', $download = false); //имя заполненного шаблона для автоматического сохранения
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2019, 17:48
Ответы с готовыми решениями:

Создание ссылки для скачивания файла
Всем привет. Делаю небольшое веб-приложение и столкнулся с некоторыми трудностями. Программа...

Создание собственного элемента или шаблона для отображения информации
Передо мной стоит задача: организовать выведение списка объектов в специфическом виде. Каждый...

Как создать ссылки для скачивания
Как создать ссылки для скачивания и можно было бы скачивать

Загрузка файла с выводом ссылки для скачивания
Допустим есть простейшая форма и скрипт загрузки файла: &lt;html&gt; &lt;form action=&quot;$_SERVER&quot;...

2
1753 / 1073 / 392
Регистрация: 13.06.2013
Сообщений: 3,642
18.12.2019, 21:53 2
А не пробовали нормально код отформатировать и разделить на функции? Может тогда и ошибку увидите.
0
16 / 11 / 5
Регистрация: 04.04.2019
Сообщений: 462
18.12.2019, 22:41  [ТС] 3
Цитата Сообщение от tarasalk Посмотреть сообщение
А не пробовали нормально код отформатировать и разделить на функции? Может тогда и ошибку увидите.
Пробовал, только видимо не так что-то делаю. Не меняется ничего. Только ошибки слегка меняются. У меня и раньше были трудности с созданием ссылки на скачивание файла. Где-то я недопонимаю. Еще и функции в ООП не сильно понимаю. Так что пробовал и простые процедурные применять, и из ООП.

Добавлено через 19 минут
Причем я оставлял тупо минимум кода, вот в таком виде:
PHP
1
2
3
4
5
6
7
8
9
if (isset($_POST['path_to'])) {
$temp_file = 'vendor/finish/dogovor_.docx';
 
      //заголовки чтобы скачать сразу файл
 
      header("Content-Disposition: attachment; filename=$temp_file");
exit;
      unlink($temp_file);
        }
Скачивается, сохраняется, но не открывается вообще
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2019, 22:41

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как создать ссылки для скачивания с компа
Как создать ссылки для скачивания с компа при нажатии появлялось окно выбора куда сохранить файл

проблема с заголовками...
и там красным было написано: 1). Присутствует идентификатор динамичности страницы...

проблема с путями
есть файл который находится в мойцайт.ru/news/admin там есть строчка // Формируем путь к файлу ...

Просмотр презентации PowerPoint без скачивания и сохранения
Здравствуйте! У меня возникла задача, нужно на сайте разместить презентации PowerPoint, они в...

Проблема с путями в томкат?
По адресу 127.0.0.1:8080 выдается файл index.html лежащий в apache-tomcat-9.0.27\webapps\ROOT вот...

Создание кнопки для скачивания файла с сайта
Доброго времени суток уважаемые форумчане, подскажите пожалуйста- можно ли использовать тег &lt;area&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.