/** * @expectedException \Exception */ public function testFindLayoutIdException() { $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_00_01.pptx'; $templateBased = new TemplateBased($file); $name = 'Invalid'; $templateBased->findLayoutId($name); }
/** * Extract data from slide * @param string $sPart * @param string $baseFile */ protected function loadSlide($sPart, $baseFile) { $xmlReader = new XMLReader(); if ($xmlReader->getDomFromString($sPart)) { // Core $this->oPhpPresentation->createSlide(); $this->oPhpPresentation->setActiveSlideIndex($this->oPhpPresentation->getSlideCount() - 1); // Background $oElement = $xmlReader->getElement('/p:sld/p:cSld/p:bg/p:bgPr'); if ($oElement) { $oElementColor = $xmlReader->getElement('a:solidFill/a:srgbClr', $oElement); if ($oElementColor) { // Color $oColor = new Color(); $oColor->setRGB($oElementColor->hasAttribute('val') ? $oElementColor->getAttribute('val') : null); // Background $oBackground = new \PhpOffice\PhpPresentation\Slide\Background\Color(); $oBackground->setColor($oColor); // Slide Background $oSlide = $this->oPhpPresentation->getActiveSlide(); $oSlide->setBackground($oBackground); } $oElementImage = $xmlReader->getElement('a:blipFill/a:blip', $oElement); if ($oElementImage) { $relImg = $this->arrayRels['ppt/slides/_rels/' . $baseFile . '.rels'][$oElementImage->getAttribute('r:embed')]; if (is_array($relImg)) { // File $pathImage = 'ppt/slides/' . $relImg['Target']; $pathImage = explode('/', $pathImage); foreach ($pathImage as $key => $partPath) { if ($partPath == '..') { unset($pathImage[$key - 1]); unset($pathImage[$key]); } } $pathImage = implode('/', $pathImage); $contentImg = $this->oZip->getFromName($pathImage); $tmpBkgImg = tempnam(sys_get_temp_dir(), 'PhpPresentationReaderPpt2007Bkg'); file_put_contents($tmpBkgImg, $contentImg); // Background $oBackground = new \PhpOffice\PhpPresentation\Slide\Background\Image(); $oBackground->setPath($tmpBkgImg); // Slide Background $oSlide = $this->oPhpPresentation->getActiveSlide(); $oSlide->setBackground($oBackground); } } } // Shapes foreach ($xmlReader->getElements('/p:sld/p:cSld/p:spTree/*') as $oNode) { switch ($oNode->tagName) { case 'p:pic': $this->loadShapeDrawing($xmlReader, $oNode, $baseFile); break; case 'p:sp': $this->loadShapeRichText($xmlReader, $oNode, $baseFile); break; default: //var_export($oNode->tagName); } } // Layout $oLayoutPack = new TemplateBased($this->filename); $oSlide = $this->oPhpPresentation->getActiveSlide(); foreach ($this->arrayRels['ppt/slides/_rels/' . $baseFile . '.rels'] as $valueRel) { if ($valueRel['Type'] == 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout') { $layoutId = $valueRel['Target']; $layoutId = str_replace('../slideLayouts/slideLayout', '', $layoutId); $layoutId = str_replace('.xml', '', $layoutId); $layoutName = $oLayoutPack->findLayoutName((int) $layoutId, $oSlide->getSlideMasterId()); $oSlide->setSlideLayout($layoutName); break; } } } }