phpword неправильно экспортирует изображения base64 в файл docx

phpword неправильно экспортирует изображения base64 в файл docx.

у меня есть html с изображениями base64. я хочу экспортировать этот 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 с текстами, таблицами, но без изображений. Почему? что случилось?


person user3863997    schedule 11.02.2019    source источник


Ответы (2)


в исходниках PHPOffice

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

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

шаблон должен быть похожим

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

person FAEWZX    schedule 11.02.2019
comment
не понимаю. что ты имеешь в виду? я должен изменить исходный код PhpWord. Какой класс? примечание: я хочу преобразовать html в docx. мой html уже содержит тег img с кодом base64. И он отлично работает, когда я вывожу html в браузер. - person user3863997; 11.02.2019

Я нашел решение. В моем случае проблема заключалась в том, что html-тег img был недействительным. Причина была в том, что CRM, где я храню данные, добавила специальные символы новой строки в данные изображения base64.

поэтому я только что сделал $html = str_replace("%0D%0A", "", $html);

person user3863997    schedule 12.02.2019