У меня есть несколько шаблонов .docx, в которые мне нужно вставить текст, сгенерированный скриптом php и отформатированный с помощью разметки HTML.
Я попытался использовать опцию манипуляции с шаблоном phpword, но вы не можете вводить полные блоки, вы можете только ввести неформатированное однострочное значение.
Существует решение для преобразования шаблона в HTML, вставки сгенерированного текста, а затем сохранения его обратно с помощью MIME-слова msword, но тогда он не будет полностью сохранять целостность верхних и нижних колонтитулов.
Следующим, что я нашел, является phpdocx, но 249 евро просто для использования функции embedHTML — это слишком много для меня.
Так что моей следующей идеей будет следующее:
1) вставить тег в шаблон слова: {{{tag}}}
2) загрузить файл шаблона .docx в мой скрипт php в виде потока XML.
3) создать документ .docx с phpword, содержащий мой сгенерированный текст между 2
теги {{{tag1}}} и {{{tag2}}}
4) загрузить документ, сгенерированный в 3), в виде потока XML и извлечь блоки между двумя тегами.
5) Вставьте блок, извлеченный в 4), чтобы заменить начальный {{{tag}}} в потоке XML, загруженном в 2)
Но я действительно не уверен, что это сработает, потому что я не совсем понимаю, как Word строит свой XML …
Является ли структура XML иерархической, чтобы эта идея замены блока другим, включая субблоки, могла работать?
Вы можете попробовать библиотеку pandoc в linux, которая предназначена именно для этой цели.
Других решений пока нет …