Ejemplo n.º 1
0
 /**
  * Add image element exception
  *
  * @expectedException Exception
  * @expectedExceptionMessage Image object not assigned.
  */
 public function testAddElementImageException()
 {
     Media::addElement('section', 'image', __DIR__ . "/_files/images/mars.jpg");
 }
Ejemplo n.º 2
0
 /**
  * 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);
     }
 }
Ejemplo n.º 3
0
 /**
  * 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);
     }
 }
Ejemplo n.º 4
0
 /**
  * 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();
     }
 }