Как заменить изображение файла docx с помощью php? - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу заменить изображение файла docx с помощью php.Я вручную разархивировал файл, заменил и переименовал файл изображения в папке мультимедиа и снова заархивировал, но файл поврежден.так есть ли способ заменить изображение с помощью php?или просто вставить изображение с помощью php?Вот пример кода, чтобы разархивировать файл docx, заменить текст в файле document.xml и снова заархивировать.но это работает только для текстов.

$filename = resource_path() . '\\docs\\1.docx';
$zip = new ZipArchive;
$path = resource_path() . '\\docs\\files';
$res = $zip->open($filename);
if ($res === TRUE) {
    $zip->extractTo($path);
    $zip->close();
    $c = file_get_contents($path . '\\word\\document.xml');
    $c = str_replace('photolab', "<img src='.none' height='100'; width='100' ;>", $c);
    unlink($path . '\\word\\document.xml');
    file_put_contents($path . '\\word\\document.xml', $c);

    $zip = new ZipArchive;
    $zip->open(resource_path() . '\\docs\\file.docx', ZipArchive::CREATE | ZipArchive::OVERWRITE);

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($path),
        RecursiveIteratorIterator::LEAVES_ONLY
    );

    foreach ($files as $name => $file) {
        if (!$file->isDir()) {
            $filePath = $file->getRealPath();
            $relativePath = substr($filePath, strlen($path) + 1);
            $zip->addFile($filePath, $relativePath);
        }
    }
    $value  = $zip->close();
} else {
    echo 'failed!';
}
return "done";
...