【问题标题】:HTML to OOXML in TemplateProcessorTemplateProcessor 中的 HTML 到 OOXML
【发布时间】:2018-05-03 09:18:12
【问题描述】:

我正在使用\PhpOffice\PhpWord\TemplateProcessor 来解析 Docx 文件,但我需要将 HTML 注入到这些文件中。显然我不能将 HTML 直接放入其中,所以我需要将其转换为 OOXML。

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

使用TemplateProcessor 时如何将HTML 转换为OOXML?我查看了代码,但找不到任何东西。

【问题讨论】:

    标签: phpword


    【解决方案1】:

    使用库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);

    问候

    【讨论】:

    • 那是我自己的图书馆 :-) 谢谢
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      相关资源
      最近更新 更多