我正在使用PhpWord库来处理单词模板并替换一些占位符。我正在使用“ docx”模板。它取代了简单的占位符,并生成了一个没有问题的“ docx”单词。
但是,当我尝试用动态表等替换复杂的占位符时,可以在Ubuntu上使用LibreOffice打开生成的文件,而在Windows上不能使用MS Office打开生成的文件。
我正在使用TemplateProcessor类的方法“ setComplexValue”添加表。
该库仅在该库的“ dev-develop”版本上可用,因为该“ 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”。
现在它就像一种魅力!
无论如何,如果库得到一些更新,然后将develop分支最终合并到master上,那就太好了。