Я использую библиотеку PhpWord для обработки шаблона слова и замены некоторых заполнителей. Я использую шаблон "docx". Он заменяет простые заполнители и генерирует слово "docx" без проблем.
Но когда я пытаюсь заменить сложные заполнители динамическими таблицами и т. Д., Сгенерированный файл можно открыть с помощью LibreOffice в Ubuntu, но не в MS Office в Windows.
Я использую метод "setComplexValue" класса TemplateProcessor для добавления таблиц.
Он доступен только в версии этой библиотеки "dev-development", потому что этот метод "setComplexValue" еще не работает на master, но он работал нормально, пока я не понял, что сгенерированный файл каким-то образом поврежден. Похоже, что document.xml не полностью корректен и MS не открывает его.
Это фрагмент кода, где я использую этот метод:
$table = new Table();
$row = $table->addRow();
$cell = $row->addCell();
$cell->addListItem('Example', 0, null, $listStyle);
$this->getProcessor()->setComplexValue($placeholder, $table);
Любая идея / обходной путь?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Мне удалось исправить ошибку. Проблема заключалась в том, что у меня был абзац в шаблоне, поэтому таблица была добавлена внутри абзаца, и «setComplexValue» ищет и заменяет следующий тег в содержащем блоке «w: r».
Я расширил этот класс и добавил аналогичный метод, который заменяет тег абзаца «w: p».
Теперь это работает как шарм!
В любом случае, было бы замечательно, если бы библиотека получила некоторые обновления, и ветвь разработки наконец-то была объединена с master.