Inheritance: implements PhpOffice\PhpPresentation\ComparableInterface, implements PhpOffice\PhpPresentation\ShapeContainerInterface
コード例 #1
0
 /**
  * @param \PhpOffice\PhpPresentation\Slide\AbstractSlide $pSlide
  * @param $objWriter
  */
 protected function writeSlideBackground(AbstractSlideAlias $pSlide, XMLWriter $objWriter)
 {
     if (!$pSlide->getBackground() instanceof Slide\AbstractBackground) {
         return;
     }
     $oBackground = $pSlide->getBackground();
     // p:bg
     $objWriter->startElement('p:bg');
     if ($oBackground instanceof Slide\Background\Color) {
         // p:bgPr
         $objWriter->startElement('p:bgPr');
         // a:solidFill
         $objWriter->startElement('a:solidFill');
         // a:srgbClr
         $objWriter->startElement('a:srgbClr');
         $objWriter->writeAttribute('val', $oBackground->getColor()->getRGB());
         $objWriter->endElement();
         // > a:solidFill
         $objWriter->endElement();
         // p:bgPr/a:effectLst
         $objWriter->writeElement('a:effectLst');
         // > p:bgPr
         $objWriter->endElement();
     }
     if ($oBackground instanceof Slide\Background\Image) {
         // p:bgPr
         $objWriter->startElement('p:bgPr');
         // a:blipFill
         $objWriter->startElement('a:blipFill');
         // a:blip
         $objWriter->startElement('a:blip');
         $objWriter->writeAttribute('r:embed', $oBackground->relationId);
         // > a:blipFill
         $objWriter->endElement();
         // a:stretch
         $objWriter->startElement('a:stretch');
         // a:fillRect
         $objWriter->writeElement('a:fillRect');
         // > a:stretch
         $objWriter->endElement();
         // > a:blipFill
         $objWriter->endElement();
         // > p:bgPr
         $objWriter->endElement();
     }
     /**
      * @link : http://www.officeopenxml.com/prSlide-background.php
      */
     if ($oBackground instanceof Slide\Background\SchemeColor) {
         // p:bgRef
         $objWriter->startElement('p:bgRef');
         $objWriter->writeAttribute('idx', '1001');
         // a:schemeClr
         $objWriter->startElement('a:schemeClr');
         $objWriter->writeAttribute('val', $oBackground->getSchemeColor()->getValue());
         $objWriter->endElement();
         // > p:bgRef
         $objWriter->endElement();
     }
     // > p:bg
     $objWriter->endElement();
 }
コード例 #2
0
 /**
  * Get index for slide
  *
  * @param  \PhpOffice\PhpPresentation\Slide\AbstractSlide $slide
  * @return int
  * @throws \Exception
  */
 public function getIndex(Slide\AbstractSlide $slide)
 {
     $index = null;
     foreach ($this->slideCollection as $key => $value) {
         if ($value->getHashCode() == $slide->getHashCode()) {
             $index = $key;
             break;
         }
     }
     return $index;
 }
コード例 #3
0
 /**
  * @param XMLReader $document
  * @param \DOMElement $node
  * @param AbstractSlide $oSlide
  * @throws \Exception
  */
 protected function loadShapeRichText(XMLReader $document, \DOMElement $node, AbstractSlide $oSlide)
 {
     // Core
     $oShape = $oSlide->createRichTextShape();
     $oShape->setParagraphs(array());
     // Variables
     $fileRels = $oSlide->getRelsIndex();
     $oElement = $document->getElement('p:spPr/a:xfrm', $node);
     if ($oElement && $oElement->hasAttribute('rot')) {
         $oShape->setRotation(CommonDrawing::angleToDegrees($oElement->getAttribute('rot')));
     }
     $oElement = $document->getElement('p:spPr/a:xfrm/a:off', $node);
     if ($oElement) {
         if ($oElement->hasAttribute('x')) {
             $oShape->setOffsetX(CommonDrawing::emuToPixels($oElement->getAttribute('x')));
         }
         if ($oElement->hasAttribute('y')) {
             $oShape->setOffsetY(CommonDrawing::emuToPixels($oElement->getAttribute('y')));
         }
     }
     $oElement = $document->getElement('p:spPr/a:xfrm/a:ext', $node);
     if ($oElement) {
         if ($oElement->hasAttribute('cx')) {
             $oShape->setWidth(CommonDrawing::emuToPixels($oElement->getAttribute('cx')));
         }
         if ($oElement->hasAttribute('cy')) {
             $oShape->setHeight(CommonDrawing::emuToPixels($oElement->getAttribute('cy')));
         }
     }
     $oElement = $document->getElement('p:nvSpPr/p:nvPr/p:ph', $node);
     if ($oElement) {
         if ($oElement->hasAttribute('type')) {
             $placeholder = new Placeholder($oElement->getAttribute('type'));
             $oShape->setPlaceHolder($placeholder);
         }
     }
     $arrayElements = $document->getElements('p:txBody/a:p', $node);
     foreach ($arrayElements as $oElement) {
         // Core
         $oParagraph = $oShape->createParagraph();
         $oParagraph->setRichTextElements(array());
         $oSubElement = $document->getElement('a:pPr', $oElement);
         if ($oSubElement) {
             if ($oSubElement->hasAttribute('algn')) {
                 $oParagraph->getAlignment()->setHorizontal($oSubElement->getAttribute('algn'));
             }
             if ($oSubElement->hasAttribute('fontAlgn')) {
                 $oParagraph->getAlignment()->setVertical($oSubElement->getAttribute('fontAlgn'));
             }
             if ($oSubElement->hasAttribute('marL')) {
                 $oParagraph->getAlignment()->setMarginLeft(CommonDrawing::emuToPixels($oSubElement->getAttribute('marL')));
             }
             if ($oSubElement->hasAttribute('marR')) {
                 $oParagraph->getAlignment()->setMarginRight(CommonDrawing::emuToPixels($oSubElement->getAttribute('marR')));
             }
             if ($oSubElement->hasAttribute('indent')) {
                 $oParagraph->getAlignment()->setIndent(CommonDrawing::emuToPixels($oSubElement->getAttribute('indent')));
             }
             if ($oSubElement->hasAttribute('lvl')) {
                 $oParagraph->getAlignment()->setLevel($oSubElement->getAttribute('lvl'));
             }
             $oParagraph->getBulletStyle()->setBulletType(Bullet::TYPE_NONE);
             $oElementBuFont = $document->getElement('a:buFont', $oSubElement);
             if ($oElementBuFont) {
                 if ($oElementBuFont->hasAttribute('typeface')) {
                     $oParagraph->getBulletStyle()->setBulletFont($oElementBuFont->getAttribute('typeface'));
                 }
             }
             $oElementBuChar = $document->getElement('a:buChar', $oSubElement);
             if ($oElementBuChar) {
                 $oParagraph->getBulletStyle()->setBulletType(Bullet::TYPE_BULLET);
                 if ($oElementBuChar->hasAttribute('char')) {
                     $oParagraph->getBulletStyle()->setBulletChar($oElementBuChar->getAttribute('char'));
                 }
             }
             $oElementBuAutoNum = $document->getElement('a:buAutoNum', $oSubElement);
             if ($oElementBuAutoNum) {
                 $oParagraph->getBulletStyle()->setBulletType(Bullet::TYPE_NUMERIC);
                 if ($oElementBuAutoNum->hasAttribute('type')) {
                     $oParagraph->getBulletStyle()->setBulletNumericStyle($oElementBuAutoNum->getAttribute('type'));
                 }
                 if ($oElementBuAutoNum->hasAttribute('startAt') && $oElementBuAutoNum->getAttribute('startAt') != 1) {
                     $oParagraph->getBulletStyle()->setBulletNumericStartAt($oElementBuAutoNum->getAttribute('startAt'));
                 }
             }
             $oElementBuClr = $document->getElement('a:buClr', $oSubElement);
             if ($oElementBuClr) {
                 $oColor = new Color();
                 /**
                  * @todo Create protected for reading Color
                  */
                 $oElementColor = $document->getElement('a:srgbClr', $oElementBuClr);
                 if ($oElementColor) {
                     $oColor->setRGB($oElementColor->hasAttribute('val') ? $oElementColor->getAttribute('val') : null);
                 }
                 $oParagraph->getBulletStyle()->setBulletColor($oColor);
             }
         }
         $arraySubElements = $document->getElements('(a:r|a:br)', $oElement);
         foreach ($arraySubElements as $oSubElement) {
             if ($oSubElement->tagName == 'a:br') {
                 $oParagraph->createBreak();
             }
             if ($oSubElement->tagName == 'a:r') {
                 $oElementrPr = $document->getElement('a:rPr', $oSubElement);
                 if (is_object($oElementrPr)) {
                     $oText = $oParagraph->createTextRun();
                     if ($oElementrPr->hasAttribute('b')) {
                         $oText->getFont()->setBold($oElementrPr->getAttribute('b') == 'true' ? true : false);
                     }
                     if ($oElementrPr->hasAttribute('i')) {
                         $oText->getFont()->setItalic($oElementrPr->getAttribute('i') == 'true' ? true : false);
                     }
                     if ($oElementrPr->hasAttribute('strike')) {
                         $oText->getFont()->setStrikethrough($oElementrPr->getAttribute('strike') == 'noStrike' ? false : true);
                     }
                     if ($oElementrPr->hasAttribute('sz')) {
                         $oText->getFont()->setSize((int) ($oElementrPr->getAttribute('sz') / 100));
                     }
                     if ($oElementrPr->hasAttribute('u')) {
                         $oText->getFont()->setUnderline($oElementrPr->getAttribute('u'));
                     }
                     // Color
                     $oElementSrgbClr = $document->getElement('a:solidFill/a:srgbClr', $oElementrPr);
                     if (is_object($oElementSrgbClr) && $oElementSrgbClr->hasAttribute('val')) {
                         $oColor = new Color();
                         $oColor->setRGB($oElementSrgbClr->getAttribute('val'));
                         $oText->getFont()->setColor($oColor);
                     }
                     // Hyperlink
                     $oElementHlinkClick = $document->getElement('a:hlinkClick', $oElementrPr);
                     if (is_object($oElementHlinkClick)) {
                         if ($oElementHlinkClick->hasAttribute('tooltip')) {
                             $oText->getHyperlink()->setTooltip($oElementHlinkClick->getAttribute('tooltip'));
                         }
                         if ($oElementHlinkClick->hasAttribute('r:id') && isset($this->arrayRels[$fileRels][$oElementHlinkClick->getAttribute('r:id')]['Target'])) {
                             $oText->getHyperlink()->setUrl($this->arrayRels[$fileRels][$oElementHlinkClick->getAttribute('r:id')]['Target']);
                         }
                     }
                     //} else {
                     // $oText = $oParagraph->createText();
                     $oSubSubElement = $document->getElement('a:t', $oSubElement);
                     $oText->setText($oSubSubElement->nodeValue);
                 }
             }
         }
     }
     if (count($oShape->getParagraphs()) > 0) {
         $oShape->setActiveParagraph(0);
     }
 }