/** * Add image element exception * * @expectedException Exception * @expectedExceptionMessage Image object not assigned. */ public function testAddElementImageException() { Media::addElement('section', 'image', __DIR__ . "/_files/images/mars.jpg"); }
/** * Set relation Id * * @param string $elementName * @param string $source */ private function setElementRelationId(AbstractElement $element, $elementName, $source) { $mediaContainer = $this->getMediaContainer(); $hasMediaRelation = in_array($elementName, array('Link', 'Image', 'Object')); $hasOtherRelation = in_array($elementName, array('Footnote', 'Endnote', 'Title')); // Set relation Id for media elements (link, image, object; legacy of OOXML) // Only Image that needs to be passed to Media class if ($hasMediaRelation) { /** @var \PhpOffice\PhpWord\Element\Image $element Type hint */ $image = $elementName == 'Image' ? $element : null; $rId = Media::addElement($mediaContainer, strtolower($elementName), $source, $image); $element->setRelationId($rId); } // Set relation Id for icon of object element if ($elementName == 'Object') { /** @var \PhpOffice\PhpWord\Element\Object $element Type hint */ $rIdIcon = Media::addElement($mediaContainer, 'image', $element->getIcon(), new Image($element->getIcon())); $element->setImageRelationId($rIdIcon); } // Set relation Id for elements that will be registered in the Collection subnamespaces if ($hasOtherRelation && $this->phpWord instanceof PhpWord) { $addMethod = "add{$elementName}"; $rId = $this->phpWord->{$addMethod}($element); $element->setRelationId($rId); } }
/** * Set relation Id for media elements (link, image, object; legacy of OOXML) * * - Image element needs to be passed to Media object * - Icon needs to be set for Object element * * @return void */ private function setMediaRelation() { if (!$this instanceof Link && !$this instanceof Image && !$this instanceof Object) { return; } $elementName = substr(get_class($this), strrpos(get_class($this), '\\') + 1); $mediaPart = $this->getMediaPart(); $source = $this->getSource(); $image = null; if ($this instanceof Image) { $image = $this; } $rId = Media::addElement($mediaPart, strtolower($elementName), $source, $image); $this->setRelationId($rId); if ($this instanceof Object) { $icon = $this->getIcon(); $rId = Media::addElement($mediaPart, 'image', $icon, new Image($icon)); $this->setImageRelationId($rId); } }
/** * Add OLE-object element * * All exceptions should be handled by \PhpOffice\PhpWord\Element\Object * * @param string $src * @param mixed $style * @return Object * @throws \PhpOffice\PhpWord\Exception\Exception * @todo Enable OLE object element in header and footer */ public function addObject($src, $style = null) { $this->checkValidity('object'); $elementDocPart = $this->checkElementDocPart(); $object = new Object($src, $style); $object->setDocPart($this->getDocPart(), $this->getDocPartId()); if (!is_null($object->getSource())) { $inf = pathinfo($src); $ext = $inf['extension']; if (strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') { $ext = substr($ext, 0, -1); } $icon = realpath(__DIR__ . "/../resources/{$ext}.png"); $rId = Media::addElement($elementDocPart, 'object', $src); $object->setRelationId($rId); $rIdimg = Media::addElement($elementDocPart, 'image', $icon, new Image($icon)); $object->setImageRelationId($rIdimg); $this->addElement($object); return $object; } else { throw new InvalidObjectException(); } }