我使用\PhpOffice\PhpWord\TemplateProcessor
来解析Docx文件,但我需要将HTML注入其中。显然我不能直接将HTML放入其中,因此我需要将其转换为OOXML。
\PhpOffice\PhpWord\PhpWord
可以选择:\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html);
,将已转换的OOXML注入文档,但这不适用于TemplateProcessor
。
如何在使用TemplateProcessor
时将HTML转换为OOXML?我查看了代码,但无法找到任何内容。
答案 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);