Формирование файла .docx на основании данных инфоблока | REDS Group
REDS Group
ул. Большая Академическая, дом 5, стр. 1, Москва.
Формирование файла .docx на основании данных инфоблока

Формирование файла .docx на основании данных инфоблока

148
Для генерации .DOCX файлов в PHP используются различные библиотеки: PHPWord, PHPDocx, PHPStamp.

В данной статье для создания документа .docx на основании шаблона будем использовать библиотеку PHPWord.

  1. Скачать библиотеку: https://github.com/PHPOffice/PHPWord.
  2. Поместить папку \src\PhpWord в нужный раздел, в котором будет использоваться библиотека.
  3. Переместить файл PHPWord.php из папки \PhpWord в раздел, в котором будет использоваться библиотека.
  4. В файле \PHPWord\Template.php закомментировать следующие строчки для возможности использовать автозамену:
    public function setValue($search, $replace) {
        if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
            $search = '${'.$search.'}';
        }
            
        if(!is_array($replace)) {
            $replace = utf8_encode($replace);
        }
            
        $this->_documentXML = str_replace($search, $replace, $this->_documentXML);
    }
    
  5. Добавить в файл следующие строки:
    public function setValue($search, $replace) {
        if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
            //было - $search = '${'.$search.'}';
            $search = '/\$\{.*?'.$search.'.*?\}/is';
        }
    
        if(!is_array($replace)) {
            //$replace = utf8_encode($replace);
        }
    
        $this->_documentXML = preg_replace($search, $replace, $this->_documentXML);
    }
    
  6. Создать шаблон документа .docx с метками в тексте документа типа ${имя_переменной}, например ${number}.
  7. Подключить библиотеку в файле:
    include_once 'PHPWord.php'; //подключение библиотеки
    $word = new PHPWord(); //создание документа
    $document = $word->loadTemplate('act_template.docx'); //загрузка шаблона документа
    $document->setValue('number', $number_param); //заполнение метки значением
    $document->setValue('year', $year_param);
    $document->save('file_act_'.$number_param.'.docx'); //сохранение файла в файловой системе bitrix
    

    Библиотека PHPWord располагает большим количеством методов для изменения свойств документа, форматирования текста, разделов документа, добавления изображений, таблиц, списков и др.

18.09.2018 / Кутенина Ксения
Комментарии (0)