Приветствую. Если кто то работал с документами docx через php то просьба сориентировать что к чему, на теперешний момент. В доставшемся проекте вижу код, где такой файл вот так открывают: PHP: public function load ($filename) // $filename - это путь к файлу шаблону docx { $this->template = $filename; $this->document = ''; $archive = new \ZipArchive(); if ($archive->open($filename)) { $this->document = $archive->getFromName('word/document.xml'); } } А чтобы таблицу вставить, такие какие то шифрограммы вставляют: PHP: $code = '</w:t></w:r></w:p></w:tc><w:tc><w:tcPr><w:tcW w:w="3686" w:type="dxa"/><w:tcBorders><w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/></w:tcBorders></w:tcPr><w:p w:rsidR="001841F4" w:rsidRPr="001841F4" w:rsidRDefault="001841F4" w:rsidP="005F7249"><w:pPr><w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr></w:pPr><w:r w:rsidRPr="001841F4"><w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:t>' . Html::encode($user->getFullName()) . Может кто подскажет что это за подход, где по нему дока? А может есть что получше? Задача по сути - есть шаблон, надо наполнять его данными. Вот часть кода выше участвует список пользователей вставить, но какой то он совсем не красивый. Желательно без установки дополнительного ПО, но вообще то на сервере для одной из задач установлен - libreoffice...
Смысл такой, что docx это открытый формат.... архив, внутри которого обычные XML судя по всему - на низком уровне фигачат содержимое... получше - воспользуетесь готовыми библиотеками для работы с DOCX
В принципе сьедобный форматик чтобы и на низком уровне пофигачить. Но не без сложностей, например в документ просто текст вставляешь без всякого форматирования Код (Text): $(number) , а оно такое в xml как есть не вставляет почему то, а дробит на части: Код (Text): <w:r w:rsidRPr="00BE73E7"> <w:rPr> <w:b/> <w:bCs/> <w:sz w:val="24"/> <w:lang w:val="ru-RU"/> </w:rPr> <w:t>${</w:t> </w:r> <w:r> <w:rPr> <w:b/> <w:bCs/> <w:sz w:val="24"/> </w:rPr> <w:t>number</w:t> </w:r> <w:r w:rsidRPr="00BE73E7"> <w:rPr> <w:b/> <w:bCs/> <w:sz w:val="24"/> <w:lang w:val="ru-RU"/> </w:rPr> <w:t>}</w:t> </w:r> Поэтому токен этот чтобы заменить на свое, требуется хитренькая регулярка, благо она сделана предыдущими
Ну тогда можно его дёргать, конечно. А вообще, есть https://phpword.readthedocs.io/en/latest/ Мне с ним задач пока не попадалось, с либриофисом сейчас наши джависты радуются, из php я с ним ещё не работал
Вручную формировать оказался минус - ворд такие файлы нормально открывает, а libreoffice нет, таблицу не показывает, хотя я заготовку брал из нулевого документа, созданного в libreoffice. Придется наверное через расширение PHPOffice/PHPWord делать, раз такие сложности. В этом наверное проще разобраться чем с тем как с внешней программой libreoffice работать, там через нее только конвертация сделана, через exec()...