在TemplateProcessor中将HTML转换为OOXML

时间:2018-05-03 09:18:12

标签: phpword

我使用\PhpOffice\PhpWord\TemplateProcessor来解析Docx文件,但我需要将HTML注入其中。显然我不能直接将HTML放入其中,因此我需要将其转换为OOXML。

\PhpOffice\PhpWord\PhpWord可以选择:\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html);,将已转换的OOXML注入文档,但这不适用于TemplateProcessor

如何在使用TemplateProcessor时将HTML转换为OOXML?我查看了代码,但无法找到任何内容。

2 个答案:

答案 0 :(得分:2)

使用库https://github.com/rkorebrits/HTMLtoOpenXML

对于安装composer require rkorebrits/htmltoopenxml

如果使用laravel,则使用:

$parser = new \HTMLtoOpenXML\Parser(); $ooXml = $parser->fromHTML($html);

区别在于反斜杠\HTMLtoOpenXML\Parser();,如果将其与任何其他框架一起使用,则可以在\之前删除HTMLtoOpenXML\Parser();

然后将html添加到模板中,我们执行以下操作:

$templateWord = new TemplateProcessor($template); $templateWord->setValue('dataHTML', $ooXml);

致谢

答案 1 :(得分:0)

仅当我将Outputescaping设置为false时,它才对我有用

\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(false);

在保存文件之前,我再次将其设置为true,这样我的word doc不会损坏:)

\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);