phpphpword

How to add/set images on PHPOffice/PHPWord Template?


I have an instance of a template on PHPWord. Is it possible to replace or add an image? Something like a setImageValue?

$phpWord = new \PhpOffice\PhpWord\Template('a.docx');
$phpWord->setImageValue('IMAGE_PLACEHOLDER', 'a.jpg');
$phpWord->saveAs('b.docx');

Is something like this possible?


Solution

  • Following code is the updated version of the one from TotPeRo (thanks again for your code!), for last phpOffice (0.11) that has evolved a little

    /**
     * Set a new image
     *
     * @param string $search
     * @param string $replace
     */
    public function setImageValue($search, $replace)
    {
        // Sanity check
        if (!file_exists($replace))
        {
            return;
        }
    
        // Delete current image
        $this->zipClass->deleteName('word/media/' . $search);
    
        // Add a new one
        $this->zipClass->addFile($replace, 'word/media/' . $search);
    }
    

    Can be called with:

    $document->setImageValue('image1.jpg', 'my_image.jpg');