使用PhpWord的TemplateProcessor“ setComplexValue”方法创建损坏的单词文件

时间:2019-07-10 11:34:04

标签: php phpword

我正在使用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上,那就太好了。

0 个答案:

没有答案