Используя TemplateProcessor "setComplexValue" метод PhpWord создает поврежденный файл слова - PullRequest
0 голосов
/ 10 июля 2019

Я использую библиотеку 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.

...