【问题标题】:phpword wrong exports base64 images to docx filephpword错误将base64图像导出到docx文件
【发布时间】:2023-10-26 13:02:02
【问题描述】:

phpword 错误导出 base64 图像到 docx 文件。

我有带有 base64 图像的 html。 我想将此 html 导出到 docx 文件。 我用phpword。

$html = $obText->getHtml();

$pw = new \PhpOffice\PhpWord\PhpWord();

$section = $pw->addSection();

\PhpOffice\PhpWord\Shared\Html::addHtml($section, $html, false, false);

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($pw, 'Word2007');

$objWriter->save($finalFilePath);

除此之外 - 我有包含文本、表格但没有图像的 docx 文件。 为什么?怎么了?

【问题讨论】:

    标签: php docx phpword


    【解决方案1】:

    在源 PHPOffice 中

    'img' => array('Image', .....

    preg_match('/data:image\/(\w+);base64,(.+)/', $src, $match);

    模板必须相似

    <img src="data:image/gif;base64,--base64-coded-data---">

    【讨论】:

    • 不明白。你是什​​么意思?我应该更改 PhpWord 的源代码。哪一堂课?注意:我想将 html 转换为 docx。我的 html 已经包含带有 base64 代码的 img 标签。当我将 html 输出到浏览器时,它工作正常。
    【解决方案2】:

    我找到了解决方案。就我而言,问题是 html 的标签 img 无效。 原因是 - 我存储数据的 CRM 向 base64 图像数据添加了新行的特殊符号。

    所以我刚做了 $html = str_replace("%0D%0A", "", $html);

    【讨论】: