示例#1
0
 /**
  * Write presentation relationships to XML format
  *
  * @return string        XML Output
  * @throws \Exception
  */
 public function writePresentationRelationships()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Relation id
     $relationId = 1;
     $oLayoutPack = new PackDefault();
     $masterSlides = $oLayoutPack->getMasterSlides();
     foreach ($masterSlides as $masterSlide) {
         // Relationship slideMasters/slideMasterX.xml
         $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster', 'slideMasters/slideMaster' . $masterSlide['masterid'] . '.xml');
     }
     // Add slide theme (only one!)
     // Relationship theme/theme1.xml
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', 'theme/theme1.xml');
     // Relationships with slides
     $slideCount = $this->getPresentation()->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide', 'slides/slide' . ($i + 1) . '.xml');
     }
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps', 'presProps.xml');
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps', 'viewProps.xml');
     $this->writeRelationship($objWriter, $relationId, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles', 'tableStyles.xml');
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Properties
     $objWriter->startElement('Properties');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties');
     $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
     if ($this->getPresentation()->getPresentationProperties()->isMarkedAsFinal()) {
         // property
         $objWriter->startElement('property');
         $objWriter->writeAttribute('fmtid', '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
         $objWriter->writeAttribute('pid', 2);
         $objWriter->writeAttribute('name', '_MarkAsFinal');
         // property > vt:bool
         $objWriter->writeElement('vt:bool', 'true');
         // > property
         $objWriter->endElement();
     }
     // > Properties
     $objWriter->endElement();
     $this->oZip->addFromString('docProps/custom.xml', $objWriter->getData());
     // Return
     return $this->oZip;
 }
示例#3
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // a:tblStyleLst
     $objWriter->startElement('a:tblStyleLst');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('def', '{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}');
     $objWriter->endElement();
     $this->getZip()->addFromString('ppt/tableStyles.xml', $objWriter->getData());
     return $this->getZip();
 }
 /**
  * Write relationships.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param array $xmlRels
  * @param array $mediaRels
  * @param int $relId
  * @return void
  */
 protected function writeRels(XMLWriter $xmlWriter, $xmlRels = array(), $mediaRels = array(), $relId = 1)
 {
     $xmlWriter->startDocument('1.0', 'UTF-8', 'yes');
     $xmlWriter->startElement('Relationships');
     $xmlWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // XML files relationships
     foreach ($xmlRels as $target => $type) {
         $this->writeRel($xmlWriter, $relId++, $type, $target);
     }
     // Media relationships
     foreach ($mediaRels as $mediaRel) {
         $this->writeMediaRel($xmlWriter, $relId++, $mediaRel);
     }
     $xmlWriter->endElement();
     // Relationships
 }
示例#5
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     $presentationPpts = $this->oPresentation->getPresentationProperties();
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:presentationPr
     $objWriter->startElement('p:presentationPr');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     // p:presentationPr > p:showPr
     if ($presentationPpts->isLoopContinuouslyUntilEsc()) {
         $objWriter->startElement('p:showPr');
         $objWriter->writeAttribute('loop', '1');
         $objWriter->endElement();
     }
     // p:extLst
     $objWriter->startElement('p:extLst');
     // p:ext
     $objWriter->startElement('p:ext');
     $objWriter->writeAttribute('uri', '{E76CE94A-603C-4142-B9EB-6D1370010A27}');
     // p14:discardImageEditData
     $objWriter->startElement('p14:discardImageEditData');
     $objWriter->writeAttribute('xmlns:p14', 'http://schemas.microsoft.com/office/powerpoint/2010/main');
     $objWriter->writeAttribute('val', '0');
     $objWriter->endElement();
     // > p:ext
     $objWriter->endElement();
     // p:ext
     $objWriter->startElement('p:ext');
     $objWriter->writeAttribute('uri', '{D31A062A-798A-4329-ABDD-BBA856620510}');
     // p14:defaultImageDpi
     $objWriter->startElement('p14:defaultImageDpi');
     $objWriter->writeAttribute('xmlns:p14', 'http://schemas.microsoft.com/office/powerpoint/2010/main');
     $objWriter->writeAttribute('val', '220');
     $objWriter->endElement();
     // > p:ext
     $objWriter->endElement();
     // > p:extLst
     $objWriter->endElement();
     // > p:presentationPr
     $objWriter->endElement();
     $this->getZip()->addFromString('ppt/presProps.xml', $objWriter->getData());
     return $this->getZip();
 }
示例#6
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // cp:coreProperties
     $objWriter->startElement('cp:coreProperties');
     $objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');
     $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');
     $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');
     $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     // dc:creator
     $objWriter->writeElement('dc:creator', $this->oPresentation->getDocumentProperties()->getCreator());
     // cp:lastModifiedBy
     $objWriter->writeElement('cp:lastModifiedBy', $this->oPresentation->getDocumentProperties()->getLastModifiedBy());
     // dcterms:created
     $objWriter->startElement('dcterms:created');
     $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
     $objWriter->writeRaw(gmdate("Y-m-d\\TH:i:s\\Z", $this->oPresentation->getDocumentProperties()->getCreated()));
     $objWriter->endElement();
     // dcterms:modified
     $objWriter->startElement('dcterms:modified');
     $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
     $objWriter->writeRaw(gmdate("Y-m-d\\TH:i:s\\Z", $this->oPresentation->getDocumentProperties()->getModified()));
     $objWriter->endElement();
     // dc:title
     $objWriter->writeElement('dc:title', $this->oPresentation->getDocumentProperties()->getTitle());
     // dc:description
     $objWriter->writeElement('dc:description', $this->oPresentation->getDocumentProperties()->getDescription());
     // dc:subject
     $objWriter->writeElement('dc:subject', $this->oPresentation->getDocumentProperties()->getSubject());
     // cp:keywords
     $objWriter->writeElement('cp:keywords', $this->oPresentation->getDocumentProperties()->getKeywords());
     // cp:category
     $objWriter->writeElement('cp:category', $this->oPresentation->getDocumentProperties()->getCategory());
     if ($this->oPresentation->getPresentationProperties()->isMarkedAsFinal()) {
         // cp:contentStatus = Final
         $objWriter->writeElement('cp:contentStatus', 'Final');
     }
     $objWriter->endElement();
     $this->oZip->addFromString('docProps/core.xml', $objWriter->getData());
     // Return
     return $this->oZip;
 }
示例#7
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:viewPr
     $objWriter->startElement('p:viewPr');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     $objWriter->writeAttribute('showComments', $this->getPresentation()->getPresentationProperties()->isCommentVisible() ? 1 : 0);
     $objWriter->writeAttribute('lastView', $this->getPresentation()->getPresentationProperties()->getLastView());
     // p:viewPr > p:slideViewPr
     $objWriter->startElement('p:slideViewPr');
     // p:viewPr > p:slideViewPr > p:cSldViewPr
     $objWriter->startElement('p:cSldViewPr');
     // p:viewPr > p:slideViewPr > p:cSldViewPr > p:cViewPr
     $objWriter->startElement('p:cViewPr');
     // p:viewPr > p:slideViewPr > p:cSldViewPr > p:cViewPr > p:scale
     $objWriter->startElement('p:scale');
     $objWriter->startElement('a:sx');
     $objWriter->writeAttribute('d', '100');
     $objWriter->writeAttribute('n', (int) ($this->getPresentation()->getPresentationProperties()->getZoom() * 100));
     $objWriter->endElement();
     $objWriter->startElement('a:sy');
     $objWriter->writeAttribute('d', '100');
     $objWriter->writeAttribute('n', (int) ($this->getPresentation()->getPresentationProperties()->getZoom() * 100));
     $objWriter->endElement();
     // > // p:viewPr > p:slideViewPr > p:cSldViewPr > p:cViewPr > p:scale
     $objWriter->endElement();
     $objWriter->startElement('p:origin');
     $objWriter->writeAttribute('x', '0');
     $objWriter->writeAttribute('y', '0');
     $objWriter->endElement();
     // > // p:viewPr > p:slideViewPr > p:cSldViewPr > p:cViewPr
     $objWriter->endElement();
     // > // p:viewPr > p:slideViewPr > p:cSldViewPr
     $objWriter->endElement();
     // > // p:viewPr > p:slideViewPr
     $objWriter->endElement();
     // > // p:viewPr
     $objWriter->endElement();
     $this->getZip()->addFromString('ppt/viewProps.xml', $objWriter->getData());
     return $this->getZip();
 }
示例#8
0
 /**
  * @return ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $objWriter->startDocument('1.0', 'UTF-8');
     // office:document-meta
     $objWriter->startElement('office:document-meta');
     $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
     $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
     $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
     $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0');
     $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
     $objWriter->writeAttribute('xmlns:smil', 'urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0');
     $objWriter->writeAttribute('xmlns:anim', 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0');
     $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
     $objWriter->writeAttribute('xmlns:officeooo', 'http://openoffice.org/2009/office');
     $objWriter->writeAttribute('xmlns:drawooo', 'http://openoffice.org/2010/draw');
     $objWriter->writeAttribute('office:version', '1.2');
     // office:meta
     $objWriter->startElement('office:meta');
     // dc:creator
     $objWriter->writeElement('dc:creator', $this->getPresentation()->getDocumentProperties()->getLastModifiedBy());
     // dc:date
     $objWriter->writeElement('dc:date', gmdate('Y-m-d\\TH:i:s.000', $this->getPresentation()->getDocumentProperties()->getModified()));
     // dc:description
     $objWriter->writeElement('dc:description', $this->getPresentation()->getDocumentProperties()->getDescription());
     // dc:subject
     $objWriter->writeElement('dc:subject', $this->getPresentation()->getDocumentProperties()->getSubject());
     // dc:title
     $objWriter->writeElement('dc:title', $this->getPresentation()->getDocumentProperties()->getTitle());
     // meta:creation-date
     $objWriter->writeElement('meta:creation-date', gmdate('Y-m-d\\TH:i:s.000', $this->getPresentation()->getDocumentProperties()->getCreated()));
     // meta:initial-creator
     $objWriter->writeElement('meta:initial-creator', $this->getPresentation()->getDocumentProperties()->getCreator());
     // meta:keyword
     $objWriter->writeElement('meta:keyword', $this->getPresentation()->getDocumentProperties()->getKeywords());
     // @todo : Where these properties are written ?
     // $this->getPresentation()->getDocumentProperties()->getCategory()
     // $this->getPresentation()->getDocumentProperties()->getCompany()
     $objWriter->endElement();
     $objWriter->endElement();
     $this->getZip()->addFromString('meta.xml', $objWriter->getData());
     return $this->getZip();
 }
示例#9
0
 /**
  * Write presentation relationships to XML format
  *
  * @return string        XML Output
  * @throws \Exception
  */
 public function writePresentationRelationships()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Relation id
     $relationId = 1;
     foreach ($this->getPresentation()->getAllMasterSlides() as $oMasterSlide) {
         // Relationship slideMasters/slideMasterX.xml
         $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster', 'slideMasters/slideMaster' . $oMasterSlide->getRelsIndex() . '.xml');
     }
     // Add slide theme (only one!)
     // Relationship theme/theme1.xml
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', 'theme/theme1.xml');
     // Relationships with slides
     $slideCount = $this->getPresentation()->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide', 'slides/slide' . ($i + 1) . '.xml');
     }
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps', 'presProps.xml');
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps', 'viewProps.xml');
     $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles', 'tableStyles.xml');
     // Comments Authors
     foreach ($this->getPresentation()->getAllSlides() as $oSlide) {
         foreach ($oSlide->getShapeCollection() as $oShape) {
             if (!$oShape instanceof Comment) {
                 continue;
             }
             $oAuthor = $oShape->getAuthor();
             if (!$oAuthor instanceof Author) {
                 continue;
             }
             $this->writeRelationship($objWriter, $relationId++, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors', 'commentAuthors.xml');
             break 2;
         }
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#10
0
 /**
  * @param Slide $oSlide
  * @return string
  */
 protected function writeSlideComments(Slide $oSlide)
 {
     /**
      * @var Comment[]
      */
     $arrayComment = array();
     foreach ($oSlide->getShapeCollection() as $oShape) {
         if ($oShape instanceof Comment) {
             $arrayComment[] = $oShape;
         }
     }
     if (empty($arrayComment)) {
         return '';
     }
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:cmLst
     $objWriter->startElement('p:cmLst');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     foreach ($arrayComment as $idxComment => $oComment) {
         $oAuthor = $oComment->getAuthor();
         // p:cmLst > p:cm
         $objWriter->startElement('p:cm');
         $objWriter->writeAttribute('authorId', $oAuthor instanceof Comment\Author ? $oAuthor->getIndex() : 0);
         $objWriter->writeAttribute('dt', date('Y-m-d\\TH:i:s.000000000', $oComment->getDate()));
         $objWriter->writeAttribute('idx', $idxComment);
         // p:cmLst > p:cm > p:pos
         // Uses 1/8pt for positionning
         // @link : https://social.msdn.microsoft.com/Forums/fr-FR/ebdc12f2-0cff-4fa8-b901-fa6e3198364e/comment-position-units
         $objWriter->startElement('p:pos');
         $objWriter->writeAttribute('x', (int) CommonDrawing::pixelsToPoints($oComment->getOffsetX() * 8));
         $objWriter->writeAttribute('y', (int) CommonDrawing::pixelsToPoints($oComment->getOffsetY() * 8));
         $objWriter->endElement();
         // p:cmLst > p:cm > p:text
         $objWriter->writeElement('p:text', $oComment->getText());
         // p:cmLst > ## p:cm
         $objWriter->endElement();
     }
     // ## p:cmLst
     $objWriter->endElement();
     return $objWriter->getData();
 }
示例#11
0
 /**
  * Write theme relationships to XML format
  *
  * @param  int       $masterId Master slide id
  * @return string    XML Output
  * @throws \Exception
  */
 public function writeThemeRelationships($masterId = 1)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // Layout pack
     $oLayoutPack = new PackDefault();
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Other relationships
     $otherRelations = $oLayoutPack->getThemeRelations();
     foreach ($otherRelations as $otherRelation) {
         if ($otherRelation['masterid'] == $masterId) {
             $this->writeRelationship($objWriter, $otherRelation['id'], $otherRelation['type'], $otherRelation['target']);
         }
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#12
0
 /**
  * Write slide layout relationships to XML format
  *
  * @param  int       $slideLayoutIndex
  * @param  int       $masterId
  * @return string    XML Output
  * @throws \Exception
  */
 public function writeSlideLayoutRelationships($slideLayoutIndex, $masterId = 1)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // Layout pack
     $oLayoutPack = new PackDefault();
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Write slideMaster relationship
     $this->writeRelationship($objWriter, 1, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster', '../slideMasters/slideMaster' . $masterId . '.xml');
     // Other relationships
     foreach ($oLayoutPack->getLayoutRelations() as $otherRelation) {
         if ($otherRelation['layoutId'] == $slideLayoutIndex) {
             $this->writeRelationship($objWriter, $otherRelation['id'], $otherRelation['type'], $otherRelation['target']);
         }
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#13
0
 /**
  * @param Author[] $arrayAuthors
  * @return string
  */
 protected function writeCommentsAuthors($arrayAuthors)
 {
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:cmAuthorLst
     $objWriter->startElement('p:cmAuthorLst');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     $idxAuthor = 0;
     foreach ($arrayAuthors as $oAuthor) {
         $oAuthor->setIndex($idxAuthor++);
         // p:cmAuthor
         $objWriter->startElement('p:cmAuthor');
         $objWriter->writeAttribute('id', $oAuthor->getIndex());
         $objWriter->writeAttribute('name', $oAuthor->getName());
         $objWriter->writeAttribute('initials', $oAuthor->getInitials());
         $objWriter->writeAttribute('lastIdx', "2");
         $objWriter->writeAttribute('clrIdx', 0);
         $objWriter->endElement();
     }
     // ## p:cmAuthorLst
     $objWriter->endElement();
     return $objWriter->getData();
 }
示例#14
0
 /**
  * Write slide master relationships to XML format
  *
  * @param  int       $masterId Master slide id
  * @return string    XML Output
  * @throws \Exception
  */
 public function writeSlideMasterRelationships($masterId = 1)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Keep content id
     $contentId = 0;
     // Lookup layouts
     $layouts = array();
     $oLayoutPack = new PackDefault();
     foreach ($oLayoutPack->getLayouts() as $key => $layout) {
         if ($layout['masterid'] == $masterId) {
             $layouts[$key] = $layout;
         }
     }
     // Write slideLayout relationships
     foreach ($layouts as $key => $layout) {
         $this->writeRelationship($objWriter, ++$contentId, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout', '../slideLayouts/slideLayout' . $key . '.xml');
     }
     // Relationship theme/theme1.xml
     $this->writeRelationship($objWriter, ++$contentId, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', '../theme/theme' . $masterId . '.xml');
     // Other relationships
     $otherRelations = $oLayoutPack->getMasterSlideRelations();
     foreach ($otherRelations as $otherRelation) {
         if ($otherRelation['masterid'] == $masterId) {
             $this->writeRelationship($objWriter, ++$contentId, $otherRelation['type'], $otherRelation['target']);
         }
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#15
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:presentation
     $objWriter->startElement('p:presentation');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     // p:sldMasterIdLst
     $objWriter->startElement('p:sldMasterIdLst');
     // Add slide masters
     $relationId = 1;
     $slideMasterId = 2147483648.0;
     $oLayoutPack = new PackDefault();
     $masterSlides = $oLayoutPack->getMasterSlides();
     $masterSlidesCount = count($masterSlides);
     // @todo foreach ($masterSlides as $masterSlide)
     for ($i = 0; $i < $masterSlidesCount; $i++) {
         // p:sldMasterId
         $objWriter->startElement('p:sldMasterId');
         $objWriter->writeAttribute('id', $slideMasterId);
         $objWriter->writeAttribute('r:id', 'rId' . $relationId++);
         $objWriter->endElement();
         // Increase identifier
         $slideMasterId += 12;
     }
     $objWriter->endElement();
     // theme
     $relationId++;
     // p:sldIdLst
     $objWriter->startElement('p:sldIdLst');
     // Write slides
     $slideCount = $this->oPresentation->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         // p:sldId
         $objWriter->startElement('p:sldId');
         $objWriter->writeAttribute('id', $i + 256);
         $objWriter->writeAttribute('r:id', 'rId' . ($i + $relationId));
         $objWriter->endElement();
     }
     $objWriter->endElement();
     // p:sldSz
     $objWriter->startElement('p:sldSz');
     $objWriter->writeAttribute('cx', $this->oPresentation->getLayout()->getCX());
     $objWriter->writeAttribute('cy', $this->oPresentation->getLayout()->getCY());
     if ($this->oPresentation->getLayout()->getDocumentLayout() != DocumentLayout::LAYOUT_CUSTOM) {
         $objWriter->writeAttribute('type', $this->oPresentation->getLayout()->getDocumentLayout());
     }
     $objWriter->endElement();
     // p:notesSz
     $objWriter->startElement('p:notesSz');
     $objWriter->writeAttribute('cx', '6858000');
     $objWriter->writeAttribute('cy', '9144000');
     $objWriter->endElement();
     $objWriter->endElement();
     $this->oZip->addFromString('ppt/presentation.xml', $objWriter->getData());
     // Return
     return $this->oZip;
 }
示例#16
0
 /**
  * Serialize PhpPresentation object to XML
  *
  * @param  PhpPresentation $pPhpPresentation
  * @param  string        $pFilename
  * @return string        XML Output
  * @throws \Exception
  */
 private function writeSerialized(PhpPresentation $pPhpPresentation = null, $pFilename = '')
 {
     // Clone $pPhpPresentation
     $pPhpPresentation = clone $pPhpPresentation;
     // Update media links
     $slideCount = $pPhpPresentation->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         for ($j = 0; $j < $pPhpPresentation->getSlide($i)->getShapeCollection()->count(); ++$j) {
             if ($pPhpPresentation->getSlide($i)->getShapeCollection()->offsetGet($j) instanceof AbstractDrawing) {
                 $pPhpPresentation->getSlide($i)->getShapeCollection()->offsetGet($j)->setPath('zip://' . $pFilename . '#media/' . $pPhpPresentation->getSlide($i)->getShapeCollection()->offsetGet($j)->getFilename(), false);
             }
         }
     }
     // Create XML writer
     $objWriter = new XMLWriter();
     $objWriter->openMemory();
     $objWriter->setIndent(true);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // PhpPresentation
     $objWriter->startElement('PhpPresentation');
     $objWriter->writeAttribute('version', '##VERSION##');
     // Comment
     $objWriter->writeComment('This file has been generated using PhpPresentation v##VERSION## (http://github.com/PHPOffice/PhpPresentation). It contains a base64 encoded serialized version of the PhpPresentation internal object.');
     // Data
     $objWriter->startElement('data');
     $objWriter->writeCData(base64_encode(serialize($pPhpPresentation)));
     $objWriter->endElement();
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#17
0
 /**
  * Write theme to XML format
  *
  * @param  Slide\SlideMaster $oMasterSlide
  * @return string XML Output
  */
 protected function writeTheme(Slide\SlideMaster $oMasterSlide)
 {
     $arrayFont = array('Jpan' => 'MS Pゴシック', 'Hang' => '맑은 고딕', 'Hans' => '宋体', 'Hant' => '新細明體', 'Arab' => 'Times New Roman', 'Hebr' => 'Times New Roman', 'Thai' => 'Angsana New', 'Ethi' => 'Nyala', 'Beng' => 'Vrinda', 'Gujr' => 'Shruti', 'Khmr' => 'MoolBoran', 'Knda' => 'Tunga', 'Guru' => 'Raavi', 'Cans' => 'Euphemia', 'Cher' => 'Plantagenet Cherokee', 'Yiii' => 'Microsoft Yi Baiti', 'Tibt' => 'Microsoft Himalaya', 'Thaa' => 'MV Boli', 'Deva' => 'Mangal', 'Telu' => 'Gautami', 'Taml' => 'Latha', 'Syrc' => 'Estrangelo Edessa', 'Orya' => 'Kalinga', 'Mlym' => 'Kartika', 'Laoo' => 'DokChampa', 'Sinh' => 'Iskoola Pota', 'Mong' => 'Mongolian Baiti', 'Viet' => 'Times New Roman', 'Uigh' => 'Microsoft Uighur');
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $name = 'Theme' . rand(1, 100);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // a:theme
     $objWriter->startElement('a:theme');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('name', $name);
     // a:theme/a:themeElements
     $objWriter->startElement('a:themeElements');
     // a:theme/a:themeElements/a:clrScheme
     $objWriter->startElement('a:clrScheme');
     $objWriter->writeAttribute('name', $name);
     foreach ($oMasterSlide->getAllSchemeColors() as $oSchemeColor) {
         // a:theme/a:themeElements/a:clrScheme/a:*
         $objWriter->startElement('a:' . $oSchemeColor->getValue());
         if (in_array($oSchemeColor->getValue(), array('dk1', 'lt1'))) {
             $objWriter->startElement('a:sysClr');
             $objWriter->writeAttribute('val', $oSchemeColor->getValue() == 'dk1' ? 'windowText' : 'window');
             $objWriter->writeAttribute('lastClr', $oSchemeColor->getRGB());
             $objWriter->endElement();
         } else {
             $objWriter->startElement('a:srgbClr');
             $objWriter->writeAttribute('val', $oSchemeColor->getRGB());
             $objWriter->endElement();
         }
         // a:theme/a:themeElements/a:clrScheme/a:*/
         $objWriter->endElement();
     }
     // a:theme/a:themeElements/a:clrScheme/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme
     $objWriter->startElement('a:fontScheme');
     $objWriter->writeAttribute('name', $name);
     // a:theme/a:themeElements/a:fontScheme/a:majorFont
     $objWriter->startElement('a:majorFont');
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
     $objWriter->startElement('a:latin');
     $objWriter->writeAttribute('typeface', 'Calibri');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
     $objWriter->startElement('a:ea');
     $objWriter->writeAttribute('typeface', '');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
     $objWriter->startElement('a:cs');
     $objWriter->writeAttribute('typeface', '');
     $objWriter->endElement();
     foreach ($arrayFont as $script => $typeface) {
         // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
         $objWriter->startElement('a:font');
         $objWriter->writeAttribute('script', $script);
         $objWriter->writeAttribute('typeface', $typeface);
         $objWriter->endElement();
     }
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/a:minorFont
     $objWriter->startElement('a:minorFont');
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:latin
     $objWriter->startElement('a:latin');
     $objWriter->writeAttribute('typeface', 'Calibri');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:ea
     $objWriter->startElement('a:ea');
     $objWriter->writeAttribute('typeface', '');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:cs
     $objWriter->startElement('a:cs');
     $objWriter->writeAttribute('typeface', '');
     $objWriter->endElement();
     foreach ($arrayFont as $script => $typeface) {
         // a:theme/a:themeElements/a:fontScheme/a:majorFont/a:font
         $objWriter->startElement('a:font');
         $objWriter->writeAttribute('script', $script);
         $objWriter->writeAttribute('typeface', $typeface);
         $objWriter->endElement();
     }
     // a:theme/a:themeElements/a:fontScheme/a:minorFont/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fontScheme/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme
     $objWriter->startElement('a:fmtScheme');
     $objWriter->writeAttribute('name', $name);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst
     $objWriter->startElement('a:fillStyleLst');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill
     $objWriter->startElement('a:solidFill');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:solidFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
     $objWriter->startElement('a:gradFill');
     $objWriter->writeAttribute('rotWithShape', 1);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
     $objWriter->startElement('a:gsLst');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 50000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 300000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 35000);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 37000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 300000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 100000);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 15000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 350000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
     $objWriter->startElement('a:lin');
     $objWriter->writeAttribute('ang', 16200000);
     $objWriter->writeAttribute('scaled', 1);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill
     $objWriter->startElement('a:gradFill');
     $objWriter->writeAttribute('rotWithShape', 1);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst
     $objWriter->startElement('a:gsLst');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 51000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 130000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 80000);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 93000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 130000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 100000);
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 94000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 135000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:lin
     $objWriter->startElement('a:lin');
     $objWriter->writeAttribute('ang', 16200000);
     $objWriter->writeAttribute('scaled', 0);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst
     $objWriter->startElement('a:lnStyleLst');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
     $objWriter->startElement('a:ln');
     $objWriter->writeAttribute('w', 9525);
     $objWriter->writeAttribute('cap', 'flat');
     $objWriter->writeAttribute('cmpd', 'sng');
     $objWriter->writeAttribute('algn', 'ctr');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
     $objWriter->startElement('a:solidFill');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 95000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:fillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 105000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
     $objWriter->startElement('a:prstDash');
     $objWriter->writeAttribute('val', 'solid');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
     $objWriter->startElement('a:ln');
     $objWriter->writeAttribute('w', 25400);
     $objWriter->writeAttribute('cap', 'flat');
     $objWriter->writeAttribute('cmpd', 'sng');
     $objWriter->writeAttribute('algn', 'ctr');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
     $objWriter->startElement('a:solidFill');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
     $objWriter->startElement('a:prstDash');
     $objWriter->writeAttribute('val', 'solid');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln
     $objWriter->startElement('a:ln');
     $objWriter->writeAttribute('w', 38100);
     $objWriter->writeAttribute('cap', 'flat');
     $objWriter->writeAttribute('cmpd', 'sng');
     $objWriter->writeAttribute('algn', 'ctr');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill
     $objWriter->startElement('a:solidFill');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:solidFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/a:prstDash
     $objWriter->startElement('a:prstDash');
     $objWriter->writeAttribute('val', 'solid');
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/a:ln/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:lnStyleLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst
     $objWriter->startElement('a:effectStyleLst');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
     $objWriter->startElement('a:effectStyle');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
     $objWriter->startElement('a:effectLst');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
     $objWriter->startElement('a:outerShdw');
     $objWriter->writeAttribute('blurRad', 40000);
     $objWriter->writeAttribute('dir', 5400000);
     $objWriter->writeAttribute('dist', 20000);
     $objWriter->writeAttribute('rotWithShape', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
     $objWriter->startElement('a:srgbClr');
     $objWriter->writeAttribute('val', '000000');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
     $objWriter->startElement('a:alpha');
     $objWriter->writeAttribute('val', 38000);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
     $objWriter->startElement('a:effectStyle');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
     $objWriter->startElement('a:effectLst');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
     $objWriter->startElement('a:outerShdw');
     $objWriter->writeAttribute('blurRad', 40000);
     $objWriter->writeAttribute('dir', 5400000);
     $objWriter->writeAttribute('dist', 23000);
     $objWriter->writeAttribute('rotWithShape', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
     $objWriter->startElement('a:srgbClr');
     $objWriter->writeAttribute('val', '000000');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
     $objWriter->startElement('a:alpha');
     $objWriter->writeAttribute('val', 35000);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle
     $objWriter->startElement('a:effectStyle');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst
     $objWriter->startElement('a:effectLst');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw
     $objWriter->startElement('a:outerShdw');
     $objWriter->writeAttribute('blurRad', 40000);
     $objWriter->writeAttribute('dir', 5400000);
     $objWriter->writeAttribute('dist', 23000);
     $objWriter->writeAttribute('rotWithShape', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr
     $objWriter->startElement('a:srgbClr');
     $objWriter->writeAttribute('val', '000000');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha
     $objWriter->startElement('a:alpha');
     $objWriter->writeAttribute('val', 35000);
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/a:alpha/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/a:srgbClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/a:outerShdw/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:effectLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d
     $objWriter->startElement('a:scene3d');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera
     $objWriter->startElement('a:camera');
     $objWriter->writeAttribute('prst', 'orthographicFront');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/a:rot
     $objWriter->startElement('a:rot');
     $objWriter->writeAttribute('lat', 0);
     $objWriter->writeAttribute('lon', 0);
     $objWriter->writeAttribute('rev', 0);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:camera/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig
     $objWriter->startElement('a:lightRig');
     $objWriter->writeAttribute('dir', 't');
     $objWriter->writeAttribute('rig', 'threePt');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/a:rot
     $objWriter->startElement('a:rot');
     $objWriter->writeAttribute('lat', 0);
     $objWriter->writeAttribute('lon', 0);
     $objWriter->writeAttribute('rev', 1200000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/a:lightRig/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:scene3d/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d
     $objWriter->startElement('a:sp3d');
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/a:bevelT
     $objWriter->startElement('a:bevelT');
     $objWriter->writeAttribute('h', 25400);
     $objWriter->writeAttribute('w', 63500);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/a:sp3d/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/a:effectStyle/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:effectStyleLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst
     $objWriter->startElement('a:bgFillStyleLst');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill
     $objWriter->startElement('a:solidFill');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:solidFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
     $objWriter->startElement('a:gradFill');
     $objWriter->writeAttribute('rotWithShape', 1);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
     $objWriter->startElement('a:gsLst');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 40000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 350000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 40000);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 45000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 99000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 350000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 100000);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 20000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 255000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
     $objWriter->startElement('a:path');
     $objWriter->writeAttribute('path', 'circle');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
     $objWriter->startElement('a:fillToRect');
     $objWriter->writeAttribute('b', 180000);
     $objWriter->writeAttribute('l', 50000);
     $objWriter->writeAttribute('r', 50000);
     $objWriter->writeAttribute('t', -80000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill
     $objWriter->startElement('a:gradFill');
     $objWriter->writeAttribute('rotWithShape', 1);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst
     $objWriter->startElement('a:gsLst');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 0);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:tint
     $objWriter->startElement('a:tint');
     $objWriter->writeAttribute('val', 80000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 300000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs
     $objWriter->startElement('a:gs');
     $objWriter->writeAttribute('pos', 100000);
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr
     $objWriter->startElement('a:schemeClr');
     $objWriter->writeAttribute('val', 'phClr');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:shade
     $objWriter->startElement('a:shade');
     $objWriter->writeAttribute('val', 30000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/a:satMod
     $objWriter->startElement('a:satMod');
     $objWriter->writeAttribute('val', 200000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/a:schemeClr/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/a:gs/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:gsLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path
     $objWriter->startElement('a:path');
     $objWriter->writeAttribute('path', 'circle');
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/a:fillToRect
     $objWriter->startElement('a:fillToRect');
     $objWriter->writeAttribute('b', 50000);
     $objWriter->writeAttribute('l', 50000);
     $objWriter->writeAttribute('r', 50000);
     $objWriter->writeAttribute('t', 50000);
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/a:path/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/a:gradFill/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/a:bgFillStyleLst/
     $objWriter->endElement();
     // a:theme/a:themeElements/a:fmtScheme/
     $objWriter->endElement();
     // a:theme/a:themeElements/
     $objWriter->endElement();
     // a:theme/a:themeElements
     $objWriter->writeElement('a:objectDefaults');
     // a:theme/a:extraClrSchemeLst
     $objWriter->writeElement('a:extraClrSchemeLst');
     // a:theme/
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#18
0
 /**
  * Write content file to XML format
  *
  * @return string        XML Output
  * @throws \Exception
  */
 public function writeContent()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $objWriter->startDocument('1.0', 'UTF-8');
     // office:document-content
     $objWriter->startElement('office:document-content');
     $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
     $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0');
     $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0');
     $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0');
     $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0');
     $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0');
     $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
     $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
     $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0');
     $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0');
     $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0');
     $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0');
     $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0');
     $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML');
     $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0');
     $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0');
     $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
     $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer');
     $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc');
     $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events');
     $objWriter->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms');
     $objWriter->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema');
     $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     $objWriter->writeAttribute('xmlns:smil', 'urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0');
     $objWriter->writeAttribute('xmlns:anim', 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0');
     $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report');
     $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2');
     $objWriter->writeAttribute('xmlns:rdfa', 'http://docs.oasis-open.org/opendocument/meta/rdfa#');
     $objWriter->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0');
     $objWriter->writeAttribute('xmlns:officeooo', 'http://openoffice.org/2009/office');
     $objWriter->writeAttribute('office:version', '1.2');
     // office:automatic-styles
     $objWriter->startElement('office:automatic-styles');
     $this->shapeId = 0;
     $incSlide = 0;
     foreach ($this->getPresentation()->getAllSlides() as $pSlide) {
         // Slides
         $this->writeStyleSlide($objWriter, $pSlide, $incSlide);
         // Images
         $shapes = $pSlide->getShapeCollection();
         foreach ($shapes as $shape) {
             // Increment $this->shapeId
             ++$this->shapeId;
             // Check type
             if ($shape instanceof RichText) {
                 $this->writeTxtStyle($objWriter, $shape);
             }
             if ($shape instanceof AbstractDrawing) {
                 $this->writeDrawingStyle($objWriter, $shape);
             }
             if ($shape instanceof Line) {
                 $this->writeLineStyle($objWriter, $shape);
             }
             if ($shape instanceof Table) {
                 $this->writeTableStyle($objWriter, $shape);
             }
             if ($shape instanceof Group) {
                 $this->writeGroupStyle($objWriter, $shape);
             }
         }
         $incSlide++;
     }
     // Style : Bullet
     if (!empty($this->arrStyleBullet)) {
         foreach ($this->arrStyleBullet as $key => $item) {
             $oStyle = $item['oStyle'];
             $arrLevel = explode(';', $item['level']);
             // style:style
             $objWriter->startElement('text:list-style');
             $objWriter->writeAttribute('style:name', 'L_' . $key);
             foreach ($arrLevel as $level) {
                 if ($level != '') {
                     $oAlign = $item['oAlign_' . $level];
                     // text:list-level-style-bullet
                     $objWriter->startElement('text:list-level-style-bullet');
                     $objWriter->writeAttribute('text:level', $level + 1);
                     $objWriter->writeAttribute('text:bullet-char', $oStyle->getBulletChar());
                     // style:list-level-properties
                     $objWriter->startElement('style:list-level-properties');
                     if ($oAlign->getIndent() < 0) {
                         $objWriter->writeAttribute('text:space-before', CommonDrawing::pixelsToCentimeters($oAlign->getMarginLeft() - -1 * $oAlign->getIndent()) . 'cm');
                         $objWriter->writeAttribute('text:min-label-width', CommonDrawing::pixelsToCentimeters(-1 * $oAlign->getIndent()) . 'cm');
                     } else {
                         $objWriter->writeAttribute('text:space-before', CommonDrawing::pixelsToCentimeters($oAlign->getMarginLeft() - $oAlign->getIndent()) . 'cm');
                         $objWriter->writeAttribute('text:min-label-width', CommonDrawing::pixelsToCentimeters($oAlign->getIndent()) . 'cm');
                     }
                     $objWriter->endElement();
                     // style:text-properties
                     $objWriter->startElement('style:text-properties');
                     $objWriter->writeAttribute('fo:font-family', $oStyle->getBulletFont());
                     $objWriter->writeAttribute('style:font-family-generic', 'swiss');
                     $objWriter->writeAttribute('style:use-window-font-color', 'true');
                     $objWriter->writeAttribute('fo:font-size', '100');
                     $objWriter->endElement();
                     $objWriter->endElement();
                 }
             }
             $objWriter->endElement();
         }
     }
     // Style : Paragraph
     if (!empty($this->arrStyleParagraph)) {
         foreach ($this->arrStyleParagraph as $key => $item) {
             // style:style
             $objWriter->startElement('style:style');
             $objWriter->writeAttribute('style:name', 'P_' . $key);
             $objWriter->writeAttribute('style:family', 'paragraph');
             // style:paragraph-properties
             $objWriter->startElement('style:paragraph-properties');
             switch ($item->getAlignment()->getHorizontal()) {
                 case Alignment::HORIZONTAL_LEFT:
                     $objWriter->writeAttribute('fo:text-align', 'left');
                     break;
                 case Alignment::HORIZONTAL_RIGHT:
                     $objWriter->writeAttribute('fo:text-align', 'right');
                     break;
                 case Alignment::HORIZONTAL_CENTER:
                     $objWriter->writeAttribute('fo:text-align', 'center');
                     break;
                 case Alignment::HORIZONTAL_JUSTIFY:
                     $objWriter->writeAttribute('fo:text-align', 'justify');
                     break;
                 case Alignment::HORIZONTAL_DISTRIBUTED:
                     $objWriter->writeAttribute('fo:text-align', 'justify');
                     break;
                 default:
                     $objWriter->writeAttribute('fo:text-align', 'left');
                     break;
             }
             $objWriter->endElement();
             $objWriter->endElement();
         }
     }
     // Style : Text : Font
     if (!empty($this->arrStyleTextFont)) {
         foreach ($this->arrStyleTextFont as $key => $item) {
             // style:style
             $objWriter->startElement('style:style');
             $objWriter->writeAttribute('style:name', 'T_' . $key);
             $objWriter->writeAttribute('style:family', 'text');
             // style:text-properties
             $objWriter->startElement('style:text-properties');
             $objWriter->writeAttribute('fo:color', '#' . $item->getFont()->getColor()->getRGB());
             $objWriter->writeAttribute('fo:font-family', $item->getFont()->getName());
             $objWriter->writeAttribute('fo:font-size', $item->getFont()->getSize() . 'pt');
             // @todo : fo:font-style
             if ($item->getFont()->isBold()) {
                 $objWriter->writeAttribute('fo:font-weight', 'bold');
             }
             $objWriter->writeAttribute('fo:language', $item->getLanguage() ? $item->getLanguage() : 'en-US');
             // @todo : style:text-underline-style
             $objWriter->endElement();
             $objWriter->endElement();
         }
     }
     $objWriter->endElement();
     //===============================================
     // Body
     //===============================================
     // office:body
     $objWriter->startElement('office:body');
     // office:presentation
     $objWriter->startElement('office:presentation');
     // Write slides
     $slideCount = $this->getPresentation()->getSlideCount();
     $this->shapeId = 0;
     for ($i = 0; $i < $slideCount; ++$i) {
         $pSlide = $this->getPresentation()->getSlide($i);
         $objWriter->startElement('draw:page');
         $name = $pSlide->getName();
         if (!is_null($name)) {
             $objWriter->writeAttribute('draw:name', $name);
         }
         $objWriter->writeAttribute('draw:master-page-name', 'Standard');
         $objWriter->writeAttribute('draw:style-name', 'stylePage' . $i);
         // Images
         $shapes = $pSlide->getShapeCollection();
         foreach ($shapes as $shape) {
             // Increment $this->shapeId
             ++$this->shapeId;
             // Check type
             if ($shape instanceof RichText) {
                 $this->writeShapeTxt($objWriter, $shape);
             } elseif ($shape instanceof Table) {
                 $this->writeShapeTable($objWriter, $shape);
             } elseif ($shape instanceof Line) {
                 $this->writeShapeLine($objWriter, $shape);
             } elseif ($shape instanceof Chart) {
                 $this->writeShapeChart($objWriter, $shape);
             } elseif ($shape instanceof Media) {
                 $this->writeShapeMedia($objWriter, $shape);
             } elseif ($shape instanceof ShapeDrawing\AbstractDrawingAdapter) {
                 $this->writeShapeDrawing($objWriter, $shape);
             } elseif ($shape instanceof Group) {
                 $this->writeShapeGroup($objWriter, $shape);
             } elseif ($shape instanceof Comment) {
                 $this->writeShapeComment($objWriter, $shape);
             }
         }
         // Slide Note
         if ($pSlide->getNote() instanceof Note) {
             $this->writeSlideNote($objWriter, $pSlide->getNote());
         }
         $objWriter->endElement();
     }
     if ($this->getPresentation()->getPresentationProperties()->isLoopContinuouslyUntilEsc()) {
         $objWriter->startElement('presentation:settings');
         $objWriter->writeAttribute('presentation:endless', 'true');
         $objWriter->writeAttribute('presentation:pause', 'P0s');
         $objWriter->writeAttribute('presentation:mouse-visible', 'false');
         $objWriter->endElement();
     }
     // > office:presentation
     $objWriter->endElement();
     // > office:body
     $objWriter->endElement();
     // > office:document-content
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#19
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  * @throws \Exception
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Types
     $objWriter->startElement('Types');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types');
     // Rels
     $this->writeDefaultContentType($objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml');
     // XML
     $this->writeDefaultContentType($objWriter, 'xml', 'application/xml');
     // Presentation
     $this->writeOverrideContentType($objWriter, '/ppt/presentation.xml', 'application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml');
     // PptProps
     $this->writeOverrideContentType($objWriter, '/ppt/presProps.xml', 'application/vnd.openxmlformats-officedocument.presentationml.presProps+xml');
     $this->writeOverrideContentType($objWriter, '/ppt/tableStyles.xml', 'application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml');
     $this->writeOverrideContentType($objWriter, '/ppt/viewProps.xml', 'application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml');
     // DocProps
     $this->writeOverrideContentType($objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml');
     $this->writeOverrideContentType($objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml');
     $this->writeOverrideContentType($objWriter, '/docProps/custom.xml', 'application/vnd.openxmlformats-officedocument.custom-properties+xml');
     // Slide masters
     $sldLayoutNr = 0;
     $sldLayoutId = time() + 689016272;
     // requires minimum value of 2 147 483 648
     foreach ($this->oPresentation->getAllMasterSlides() as $idx => $oSlideMaster) {
         $oSlideMaster->setRelsIndex($idx + 1);
         $this->writeOverrideContentType($objWriter, '/ppt/slideMasters/slideMaster' . $oSlideMaster->getRelsIndex() . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml');
         $this->writeOverrideContentType($objWriter, '/ppt/theme/theme' . $oSlideMaster->getRelsIndex() . '.xml', 'application/vnd.openxmlformats-officedocument.theme+xml');
         foreach ($oSlideMaster->getAllSlideLayouts() as $oSlideLayout) {
             $oSlideLayout->layoutNr = ++$sldLayoutNr;
             $oSlideLayout->layoutId = ++$sldLayoutId;
             $this->writeOverrideContentType($objWriter, '/ppt/slideLayouts/slideLayout' . $oSlideLayout->layoutNr . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml');
         }
     }
     // Slides
     $slideCount = $this->oPresentation->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         $this->writeOverrideContentType($objWriter, '/ppt/slides/slide' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml');
         if ($this->oPresentation->getSlide($i)->getNote()->getShapeCollection()->count() > 0) {
             $this->writeOverrideContentType($objWriter, '/ppt/notesSlides/notesSlide' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml');
         }
     }
     // Add media content-types
     $aMediaContentTypes = array();
     // GIF, JPEG, PNG
     $aMediaContentTypes['gif'] = 'image/gif';
     $aMediaContentTypes['jpg'] = 'image/jpeg';
     $aMediaContentTypes['jpeg'] = 'image/jpeg';
     $aMediaContentTypes['png'] = 'image/png';
     foreach ($aMediaContentTypes as $key => $value) {
         $this->writeDefaultContentType($objWriter, $key, $value);
     }
     // XLSX
     $this->writeDefaultContentType($objWriter, 'xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     // Other media content types
     $mediaCount = $this->getDrawingHashTable()->count();
     for ($i = 0; $i < $mediaCount; ++$i) {
         $shapeIndex = $this->getDrawingHashTable()->getByIndex($i);
         if ($shapeIndex instanceof ShapeChart) {
             // Chart content type
             $this->writeOverrideContentType($objWriter, '/ppt/charts/chart' . $shapeIndex->getImageIndex() . '.xml', 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml');
         } else {
             $extension = strtolower($shapeIndex->getExtension());
             $mimeType = $shapeIndex->getMimeType();
             if (!isset($aMediaContentTypes[$extension])) {
                 $aMediaContentTypes[$extension] = $mimeType;
                 $this->writeDefaultContentType($objWriter, $extension, $mimeType);
             }
         }
     }
     $objWriter->endElement();
     $this->oZip->addFromString('[Content_Types].xml', $objWriter->getData());
     return $this->oZip;
 }
示例#20
0
 /**
  * Write Note Slide
  * @param Note $pNote
  * @throws \Exception
  * @return  string
  */
 protected function writeNote(Note $pNote)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:notes
     $objWriter->startElement('p:notes');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     // p:notes/p:cSld
     $objWriter->startElement('p:cSld');
     // p:notes/p:cSld/p:spTree
     $objWriter->startElement('p:spTree');
     // p:notes/p:cSld/p:spTree/p:nvGrpSpPr
     $objWriter->startElement('p:nvGrpSpPr');
     // p:notes/p:cSld/p:spTree/p:nvGrpSpPr/p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '1');
     $objWriter->writeAttribute('name', '');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:nvGrpSpPr/p:cNvGrpSpPr
     $objWriter->writeElement('p:cNvGrpSpPr', null);
     // p:notes/p:cSld/p:spTree/p:nvGrpSpPr/p:nvPr
     $objWriter->writeElement('p:nvPr', null);
     // p:notes/p:cSld/p:spTree/p:nvGrpSpPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:grpSpPr
     $objWriter->startElement('p:grpSpPr');
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm
     $objWriter->startElement('a:xfrm');
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm/a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
     $objWriter->endElement();
     // a:off
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm/a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
     $objWriter->endElement();
     // a:ext
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm/a:chOff
     $objWriter->startElement('a:chOff');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
     $objWriter->endElement();
     // a:chOff
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm/a:chExt
     $objWriter->startElement('a:chExt');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
     $objWriter->endElement();
     // a:chExt
     // p:notes/p:cSld/p:spTree/p:grpSpPr/a:xfrm
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:grpSpPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]
     $objWriter->startElement('p:sp');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr
     $objWriter->startElement('p:nvSpPr');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '2');
     $objWriter->writeAttribute('name', 'Slide Image Placeholder 1');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:cNvSpPr
     $objWriter->startElement('p:cNvSpPr');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:cNvSpPr/a:spLocks
     $objWriter->startElement('a:spLocks');
     $objWriter->writeAttribute('noGrp', '1');
     $objWriter->writeAttribute('noRot', '1');
     $objWriter->writeAttribute('noChangeAspect', '1');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:cNvSpPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:nvPr
     $objWriter->startElement('p:nvPr');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:nvPr/p:ph
     $objWriter->startElement('p:ph');
     $objWriter->writeAttribute('type', 'sldImg');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr/p:nvPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:nvSpPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr
     $objWriter->startElement('p:spPr');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm
     $objWriter->startElement('a:xfrm');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm/a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', 0);
     $objWriter->writeAttribute('y', 0);
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm/a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu(round($pNote->getExtentX() / 2)));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu(round($pNote->getExtentY() / 2)));
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:prstGeom
     $objWriter->startElement('a:prstGeom');
     $objWriter->writeAttribute('prst', 'rect');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:prstGeom/a:avLst
     $objWriter->writeElement('a:avLst', null);
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:prstGeom
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:noFill
     $objWriter->writeElement('a:noFill', null);
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:ln
     $objWriter->startElement('a:ln');
     $objWriter->writeAttribute('w', '12700');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:ln/a:solidFill
     $objWriter->startElement('a:solidFill');
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:ln/a:solidFill/a:prstClr
     $objWriter->startElement('a:prstClr');
     $objWriter->writeAttribute('val', 'black');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:ln/a:solidFill
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr/a:ln
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]/p:spPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[1]
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]
     $objWriter->startElement('p:sp');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr
     $objWriter->startElement('p:nvSpPr');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '3');
     $objWriter->writeAttribute('name', 'Notes Placeholder');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:cNvSpPr
     $objWriter->startElement('p:cNvSpPr');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:cNvSpPr/a:spLocks
     $objWriter->startElement('a:spLocks');
     $objWriter->writeAttribute('noGrp', '1');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:cNvSpPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:nvPr
     $objWriter->startElement('p:nvPr');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:nvPr/p:ph
     $objWriter->startElement('p:ph');
     $objWriter->writeAttribute('type', 'body');
     $objWriter->writeAttribute('idx', '1');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr/p:nvPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:nvSpPr
     $objWriter->endElement();
     // START notes print below rectangle section
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr
     $objWriter->startElement('p:spPr');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:xfrm
     $objWriter->startElement('a:xfrm');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:xfrm/a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu(round($pNote->getExtentY() / 2) + $pNote->getOffsetY()));
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:xfrm/a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', '5486400');
     $objWriter->writeAttribute('cy', '3600450');
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:xfrm
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:prstGeom
     $objWriter->startElement('a:prstGeom');
     $objWriter->writeAttribute('prst', 'rect');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:prstGeom/a:avLst
     $objWriter->writeElement('a:avLst', null);
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr/a:prstGeom
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:spPr
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:txBody
     $objWriter->startElement('p:txBody');
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:txBody/a:bodyPr
     $objWriter->writeElement('a:bodyPr', null);
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:txBody/a:lstStyle
     $objWriter->writeElement('a:lstStyle', null);
     // Loop shapes
     $shapes = $pNote->getShapeCollection();
     foreach ($shapes as $shape) {
         // Check type
         if ($shape instanceof RichText) {
             $paragraphs = $shape->getParagraphs();
             $this->writeParagraphs($objWriter, $paragraphs);
         }
     }
     // p:notes/p:cSld/p:spTree/p:sp[2]/p:txBody
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree/p:sp[2]
     $objWriter->endElement();
     // p:notes/p:cSld/p:spTree
     $objWriter->endElement();
     // p:notes/p:cSld
     $objWriter->endElement();
     // p:notes
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#21
0
 /**
  * @return ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8');
     // manifest:manifest
     $objWriter->startElement('manifest:manifest');
     $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0');
     $objWriter->writeAttribute('manifest:version', '1.2');
     // manifest:file-entry
     $objWriter->startElement('manifest:file-entry');
     $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.presentation');
     $objWriter->writeAttribute('manifest:full-path', '/');
     $objWriter->writeAttribute('manifest:version', '1.2');
     $objWriter->endElement();
     // manifest:file-entry
     $objWriter->startElement('manifest:file-entry');
     $objWriter->writeAttribute('manifest:media-type', 'text/xml');
     $objWriter->writeAttribute('manifest:full-path', 'content.xml');
     $objWriter->endElement();
     // manifest:file-entry
     $objWriter->startElement('manifest:file-entry');
     $objWriter->writeAttribute('manifest:media-type', 'text/xml');
     $objWriter->writeAttribute('manifest:full-path', 'meta.xml');
     $objWriter->endElement();
     // manifest:file-entry
     $objWriter->startElement('manifest:file-entry');
     $objWriter->writeAttribute('manifest:media-type', 'text/xml');
     $objWriter->writeAttribute('manifest:full-path', 'styles.xml');
     $objWriter->endElement();
     // Charts
     foreach ($this->getArrayChart() as $key => $shape) {
         $objWriter->startElement('manifest:file-entry');
         $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.chart');
         $objWriter->writeAttribute('manifest:full-path', 'Object ' . $key . '/');
         $objWriter->endElement();
         $objWriter->startElement('manifest:file-entry');
         $objWriter->writeAttribute('manifest:media-type', 'text/xml');
         $objWriter->writeAttribute('manifest:full-path', 'Object ' . $key . '/content.xml');
         $objWriter->endElement();
     }
     $arrMedia = array();
     for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) {
         $shape = $this->getDrawingHashTable()->getByIndex($i);
         if (!$shape instanceof ShapeDrawing\AbstractDrawingAdapter) {
             continue;
         }
         $arrMedia[] = $shape->getIndexedFilename();
         $objWriter->startElement('manifest:file-entry');
         $objWriter->writeAttribute('manifest:media-type', $shape->getMimeType());
         $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . $shape->getIndexedFilename());
         $objWriter->endElement();
     }
     foreach ($this->getPresentation()->getAllSlides() as $numSlide => $oSlide) {
         $oBkgImage = $oSlide->getBackground();
         if ($oBkgImage instanceof Image) {
             $arrayImage = getimagesize($oBkgImage->getPath());
             $mimeType = image_type_to_mime_type($arrayImage[2]);
             $objWriter->startElement('manifest:file-entry');
             $objWriter->writeAttribute('manifest:media-type', $mimeType);
             $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $oBkgImage->getIndexedFilename($numSlide)));
             $objWriter->endElement();
         }
     }
     if ($this->getPresentation()->getPresentationProperties()->getThumbnailPath()) {
         $pathThumbnail = $this->getPresentation()->getPresentationProperties()->getThumbnailPath();
         // Size : 128x128 pixel
         // PNG : 8bit, non-interlaced with full alpha transparency
         $gdImage = imagecreatefromstring(file_get_contents($pathThumbnail));
         if ($gdImage) {
             imagedestroy($gdImage);
             $objWriter->startElement('manifest:file-entry');
             $objWriter->writeAttribute('manifest:media-type', 'image/png');
             $objWriter->writeAttribute('manifest:full-path', 'Thumbnails/thumbnail.png');
             $objWriter->endElement();
         }
     }
     $objWriter->endElement();
     $this->getZip()->addFromString('META-INF/manifest.xml', $objWriter->getData());
     return $this->getZip();
 }
示例#22
0
 /**
  * Write Note Slide
  * @param Note $pNote
  * @throws \Exception
  * @return  string
  */
 protected function writeNote(Note $pNote)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:notes
     $objWriter->startElement('p:notes');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     // p:cSld
     $objWriter->startElement('p:cSld');
     // p:spTree
     $objWriter->startElement('p:spTree');
     // p:nvGrpSpPr
     $objWriter->startElement('p:nvGrpSpPr');
     // p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '1');
     $objWriter->writeAttribute('name', '');
     $objWriter->endElement();
     // p:cNvGrpSpPr
     $objWriter->writeElement('p:cNvGrpSpPr', null);
     // p:nvPr
     $objWriter->writeElement('p:nvPr', null);
     // ## p:nvGrpSpPr
     $objWriter->endElement();
     // p:grpSpPr
     $objWriter->startElement('p:grpSpPr');
     // a:xfrm
     $objWriter->startElement('a:xfrm');
     // a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
     $objWriter->endElement();
     // a:off
     // a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
     $objWriter->endElement();
     // a:ext
     // a:chOff
     $objWriter->startElement('a:chOff');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pNote->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pNote->getOffsetY()));
     $objWriter->endElement();
     // a:chOff
     // a:chExt
     $objWriter->startElement('a:chExt');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pNote->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pNote->getExtentY()));
     $objWriter->endElement();
     // a:chExt
     // ## a:xfrm
     $objWriter->endElement();
     // ## p:grpSpPr
     $objWriter->endElement();
     // p:sp
     $objWriter->startElement('p:sp');
     // p:nvSpPr
     $objWriter->startElement('p:nvSpPr');
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '1');
     $objWriter->writeAttribute('name', 'Notes Placeholder');
     $objWriter->endElement();
     // p:cNvSpPr
     $objWriter->startElement('p:cNvSpPr');
     //a:spLocks
     $objWriter->startElement('a:spLocks');
     $objWriter->writeAttribute('noGrp', '1');
     $objWriter->endElement();
     // ## p:cNvSpPr
     $objWriter->endElement();
     // p:nvPr
     $objWriter->startElement('p:nvPr');
     $objWriter->startElement('p:ph');
     $objWriter->writeAttribute('type', 'body');
     $objWriter->writeAttribute('idx', '1');
     $objWriter->endElement();
     // ## p:nvPr
     $objWriter->endElement();
     // ## p:nvSpPr
     $objWriter->endElement();
     $objWriter->writeElement('p:spPr', null);
     // p:txBody
     $objWriter->startElement('p:txBody');
     $objWriter->writeElement('a:bodyPr', null);
     $objWriter->writeElement('a:lstStyle', null);
     // Loop shapes
     $shapes = $pNote->getShapeCollection();
     foreach ($shapes as $shape) {
         // Check type
         if ($shape instanceof RichText) {
             $paragraphs = $shape->getParagraphs();
             $this->writeParagraphs($objWriter, $paragraphs);
         }
     }
     // ## p:txBody
     $objWriter->endElement();
     // ## p:sp
     $objWriter->endElement();
     // ## p:spTree
     $objWriter->endElement();
     // ## p:cSld
     $objWriter->endElement();
     // ## p:notes
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#23
0
 /**
  * Write chart relationships to XML format
  *
  * @param  \PhpOffice\PhpPresentation\Shape\Chart $pChart
  * @return string                    XML Output
  * @throws \Exception
  */
 public function writeChartRelationships(Chart $pChart)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Relationships
     $objWriter->startElement('Relationships');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
     // Write spreadsheet relationship?
     if ($pChart->hasIncludedSpreadsheet()) {
         $this->writeRelationship($objWriter, 1, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/package', '../embeddings/' . $pChart->getIndexedFilename() . '.xlsx');
     }
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#24
0
 /**
  * Write Meta file to XML format
  *
  * @return string        XML Output
  * @throws \Exception
  */
 protected function writePart()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $objWriter->startDocument('1.0', 'UTF-8');
     // office:document-meta
     $objWriter->startElement('office:document-styles');
     $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
     $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0');
     $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0');
     $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0');
     $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0');
     $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0');
     $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
     $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
     $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0');
     $objWriter->writeAttribute('xmlns:presentation', 'urn:oasis:names:tc:opendocument:xmlns:presentation:1.0');
     $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0');
     $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0');
     $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0');
     $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML');
     $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0');
     $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0');
     $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
     $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer');
     $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc');
     $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events');
     $objWriter->writeAttribute('xmlns:smil', 'urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0');
     $objWriter->writeAttribute('xmlns:anim', 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0');
     $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report');
     $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2');
     $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml');
     $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
     $objWriter->writeAttribute('xmlns:officeooo', 'http://openoffice.org/2009/office');
     $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table');
     $objWriter->writeAttribute('xmlns:drawooo', 'http://openoffice.org/2010/draw');
     $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/');
     $objWriter->writeAttribute('office:version', '1.2');
     // Variables
     $stylePageLayout = $this->getPresentation()->getLayout()->getDocumentLayout();
     if (empty($stylePageLayout)) {
         $stylePageLayout = 'sPL0';
     }
     // office:styles
     $objWriter->startElement('office:styles');
     // style:style
     $objWriter->startElement('style:style');
     $objWriter->writeAttribute('style:name', 'sPres0');
     $objWriter->writeAttribute('style:display-name', 'sPres0');
     $objWriter->writeAttribute('style:family', 'presentation');
     // style:graphic-properties
     $objWriter->startElement('style:graphic-properties');
     $objWriter->writeAttribute('draw:fill-color', '#ffffff');
     // > style:graphic-properties
     $objWriter->endElement();
     // > style:style
     $objWriter->endElement();
     foreach ($this->getPresentation()->getAllSlides() as $keySlide => $oSlide) {
         foreach ($oSlide->getShapeCollection() as $shape) {
             if ($shape instanceof Table) {
                 $this->writeTableStyle($objWriter, $shape);
             } elseif ($shape instanceof Group) {
                 $this->writeGroupStyle($objWriter, $shape);
             } elseif ($shape instanceof RichText) {
                 $this->writeRichTextStyle($objWriter, $shape);
             }
         }
         $oBkgImage = $oSlide->getBackground();
         if ($oBkgImage instanceof Image) {
             $this->writeBackgroundStyle($objWriter, $oBkgImage, $keySlide);
         }
     }
     // > office:styles
     $objWriter->endElement();
     // office:automatic-styles
     $objWriter->startElement('office:automatic-styles');
     // style:page-layout
     $objWriter->startElement('style:page-layout');
     $objWriter->writeAttribute('style:name', $stylePageLayout);
     // style:page-layout-properties
     $objWriter->startElement('style:page-layout-properties');
     $objWriter->writeAttribute('fo:margin-top', '0cm');
     $objWriter->writeAttribute('fo:margin-bottom', '0cm');
     $objWriter->writeAttribute('fo:margin-left', '0cm');
     $objWriter->writeAttribute('fo:margin-right', '0cm');
     $objWriter->writeAttribute('fo:page-width', Text::numberFormat(CommonDrawing::pixelsToCentimeters(CommonDrawing::emuToPixels($this->getPresentation()->getLayout()->getCX())), 1) . 'cm');
     $objWriter->writeAttribute('fo:page-height', Text::numberFormat(CommonDrawing::pixelsToCentimeters(CommonDrawing::emuToPixels($this->getPresentation()->getLayout()->getCY())), 1) . 'cm');
     $printOrientation = 'portrait';
     if ($this->getPresentation()->getLayout()->getCX() > $this->getPresentation()->getLayout()->getCY()) {
         $printOrientation = 'landscape';
     }
     $objWriter->writeAttribute('style:print-orientation', $printOrientation);
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     // office:master-styles
     $objWriter->startElement('office:master-styles');
     // style:master-page
     $objWriter->startElement('style:master-page');
     $objWriter->writeAttribute('style:name', 'Standard');
     $objWriter->writeAttribute('style:display-name', 'Standard');
     $objWriter->writeAttribute('style:page-layout-name', $stylePageLayout);
     $objWriter->writeAttribute('draw:style-name', 'sPres0');
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     // Return
     return $objWriter->getData();
 }
示例#25
0
    /**
     * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
     */
    public function render()
    {
        // Create XML writer
        $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
        // XML header
        $objWriter->startDocument('1.0', 'UTF-8', 'yes');
        // p:presentation
        $objWriter->startElement('p:presentation');
        $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
        $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
        $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
        // p:sldMasterIdLst
        $objWriter->startElement('p:sldMasterIdLst');
        // Add slide masters
        $relationId = 1;
        $slideMasterId = 2147483648;
        $countMasterSlides = count($this->oPresentation->getAllMasterSlides());
        for ($inc = 1; $inc <= $countMasterSlides; $inc++) {
            // p:sldMasterId
            $objWriter->startElement('p:sldMasterId');
            $objWriter->writeAttribute('id', $slideMasterId);
            $objWriter->writeAttribute('r:id', 'rId' . $relationId++);
            $objWriter->endElement();
            // Increase identifier
            $slideMasterId += 12;
        }
        $objWriter->endElement();
        // theme
        $relationId++;
        // p:sldIdLst
        $objWriter->startElement('p:sldIdLst');
        // Write slides
        $slideCount = $this->oPresentation->getSlideCount();
        for ($i = 0; $i < $slideCount; ++$i) {
            // p:sldId
            $objWriter->startElement('p:sldId');
            $objWriter->writeAttribute('id', $i + 256);
            $objWriter->writeAttribute('r:id', 'rId' . ($i + $relationId));
            $objWriter->endElement();
        }
        $objWriter->endElement();
        // p:sldSz
        $objWriter->startElement('p:sldSz');
        $objWriter->writeAttribute('cx', $this->oPresentation->getLayout()->getCX());
        $objWriter->writeAttribute('cy', $this->oPresentation->getLayout()->getCY());
        if ($this->oPresentation->getLayout()->getDocumentLayout() != DocumentLayout::LAYOUT_CUSTOM) {
            $objWriter->writeAttribute('type', $this->oPresentation->getLayout()->getDocumentLayout());
        }
        $objWriter->endElement();
        // p:notesSz
        $objWriter->startElement('p:notesSz');
        $objWriter->writeAttribute('cx', '6858000');
        $objWriter->writeAttribute('cy', '9144000');
        $objWriter->endElement();
        $objWriter->writeRaw('<p:defaultTextStyle>
  <a:defPPr>
   <a:defRPr lang="fr-FR"/>
  </a:defPPr>
  <a:lvl1pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="0" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl1pPr>
  <a:lvl2pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="457200" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl2pPr>
  <a:lvl3pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="914400" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl3pPr>
  <a:lvl4pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="1371600" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl4pPr>
  <a:lvl5pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="1828800" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl5pPr>
  <a:lvl6pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="2286000" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl6pPr>
  <a:lvl7pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="2743200" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl7pPr>
  <a:lvl8pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="3200400" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl8pPr>
  <a:lvl9pPr algn="l" defTabSz="914400" eaLnBrk="1" hangingPunct="1" latinLnBrk="0" marL="3657600" rtl="0">
   <a:defRPr kern="1200" sz="1800">
    <a:solidFill>
     <a:schemeClr val="tx1"/>
    </a:solidFill>
    <a:latin typeface="+mn-lt"/>
    <a:ea typeface="+mn-ea"/>
    <a:cs typeface="+mn-cs"/>
   </a:defRPr>
  </a:lvl9pPr>
 </p:defaultTextStyle>
');
        $objWriter->endElement();
        $this->oZip->addFromString('ppt/presentation.xml', $objWriter->getData());
        // Return
        return $this->oZip;
    }
示例#26
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  * @throws \Exception
  */
 public function render()
 {
     $oLayoutPack = new PowerPoint2007\LayoutPack\PackDefault();
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Types
     $objWriter->startElement('Types');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types');
     // Rels
     $this->writeDefaultContentType($objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml');
     // XML
     $this->writeDefaultContentType($objWriter, 'xml', 'application/xml');
     // Themes
     $masterSlides = $oLayoutPack->getMasterSlides();
     foreach ($masterSlides as $masterSlide) {
         $this->writeOverrideContentType($objWriter, '/ppt/theme/theme' . $masterSlide['masterid'] . '.xml', 'application/vnd.openxmlformats-officedocument.theme+xml');
     }
     // Presentation
     $this->writeOverrideContentType($objWriter, '/ppt/presentation.xml', 'application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml');
     // PptProps
     $this->writeOverrideContentType($objWriter, '/ppt/presProps.xml', 'application/vnd.openxmlformats-officedocument.presentationml.presProps+xml');
     $this->writeOverrideContentType($objWriter, '/ppt/tableStyles.xml', 'application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml');
     $this->writeOverrideContentType($objWriter, '/ppt/viewProps.xml', 'application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml');
     // DocProps
     $this->writeOverrideContentType($objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml');
     $this->writeOverrideContentType($objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml');
     $this->writeOverrideContentType($objWriter, '/docProps/custom.xml', 'application/vnd.openxmlformats-officedocument.custom-properties+xml');
     // Slide masters
     $masterSlides = $oLayoutPack->getMasterSlides();
     foreach ($masterSlides as $masterSlide) {
         $this->writeOverrideContentType($objWriter, '/ppt/slideMasters/slideMaster' . $masterSlide['masterid'] . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml');
     }
     // Slide layouts
     $slideLayouts = $oLayoutPack->getLayouts();
     $numSlideLayouts = count($slideLayouts);
     for ($i = 0; $i < $numSlideLayouts; ++$i) {
         $this->writeOverrideContentType($objWriter, '/ppt/slideLayouts/slideLayout' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml');
     }
     // Slides
     $slideCount = $this->oPresentation->getSlideCount();
     for ($i = 0; $i < $slideCount; ++$i) {
         $this->writeOverrideContentType($objWriter, '/ppt/slides/slide' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml');
         if ($this->oPresentation->getSlide($i)->getNote()->getShapeCollection()->count() > 0) {
             $this->writeOverrideContentType($objWriter, '/ppt/notesSlides/notesSlide' . ($i + 1) . '.xml', 'application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml');
         }
     }
     // Add layoutpack content types
     $otherRelations = $oLayoutPack->getMasterSlideRelations();
     foreach ($otherRelations as $otherRelation) {
         if (strpos($otherRelation['target'], 'http://') !== 0 && $otherRelation['contentType'] != '') {
             $this->writeOverrideContentType($objWriter, '/ppt/slideMasters/' . $otherRelation['target'], $otherRelation['contentType']);
         }
     }
     $otherRelations = $oLayoutPack->getThemeRelations();
     foreach ($otherRelations as $otherRelation) {
         if (strpos($otherRelation['target'], 'http://') !== 0 && $otherRelation['contentType'] != '') {
             $this->writeOverrideContentType($objWriter, '/ppt/theme/' . $otherRelation['target'], $otherRelation['contentType']);
         }
     }
     $otherRelations = $oLayoutPack->getLayoutRelations();
     foreach ($otherRelations as $otherRelation) {
         if (strpos($otherRelation['target'], 'http://') !== 0 && $otherRelation['contentType'] != '') {
             $this->writeOverrideContentType($objWriter, '/ppt/slideLayouts/' . $otherRelation['target'], $otherRelation['contentType']);
         }
     }
     // Add media content-types
     $aMediaContentTypes = array();
     // GIF, JPEG, PNG
     $aMediaContentTypes['gif'] = 'image/gif';
     $aMediaContentTypes['jpg'] = 'image/jpeg';
     $aMediaContentTypes['jpeg'] = 'image/jpeg';
     $aMediaContentTypes['png'] = 'image/png';
     foreach ($aMediaContentTypes as $key => $value) {
         $this->writeDefaultContentType($objWriter, $key, $value);
     }
     // XLSX
     $this->writeDefaultContentType($objWriter, 'xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     // Other media content types
     $mediaCount = $this->getDrawingHashTable()->count();
     for ($i = 0; $i < $mediaCount; ++$i) {
         $extension = '';
         $mimeType = '';
         $shapeIndex = $this->getDrawingHashTable()->getByIndex($i);
         if ($shapeIndex instanceof ShapeChart) {
             // Chart content type
             $this->writeOverrideContentType($objWriter, '/ppt/charts/chart' . $shapeIndex->getImageIndex() . '.xml', 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml');
         } else {
             if ($shapeIndex instanceof ShapeDrawing) {
                 $extension = strtolower($shapeIndex->getExtension());
                 $mimeType = $this->getImageMimeType($shapeIndex->getPath());
             } elseif ($shapeIndex instanceof MemoryDrawing) {
                 $extension = strtolower($shapeIndex->getMimeType());
                 $extension = explode('/', $extension);
                 $extension = $extension[1];
                 $mimeType = $shapeIndex->getMimeType();
             }
             if (!isset($aMediaContentTypes[$extension])) {
                 $aMediaContentTypes[$extension] = $mimeType;
                 $this->writeDefaultContentType($objWriter, $extension, $mimeType);
             }
         }
     }
     $objWriter->endElement();
     $this->oZip->addFromString('[Content_Types].xml', $objWriter->getData());
     return $this->oZip;
 }
示例#27
0
 /**
  * Write slide to XML format
  *
  * @param  \PhpOffice\PhpPresentation\Slide\SlideLayout $pSlideLayout
  * @return string XML Output
  * @throws \Exception
  */
 public function writeSlideLayout(SlideLayout $pSlideLayout)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:sldLayout
     $objWriter->startElement('p:sldLayout');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     $objWriter->writeAttribute('preserve', 1);
     // p:sldLayout\p:cSld
     $objWriter->startElement('p:cSld');
     $objWriter->writeAttributeIf($pSlideLayout->getLayoutName() != '', 'name', $pSlideLayout->getLayoutName());
     // Background
     $this->writeSlideBackground($pSlideLayout, $objWriter);
     // p:sldLayout\p:cSld\p:spTree
     $objWriter->startElement('p:spTree');
     // p:sldLayout\p:cSld\p:spTree\p:nvGrpSpPr
     $objWriter->startElement('p:nvGrpSpPr');
     // p:sldLayout\p:cSld\p:spTree\p:nvGrpSpPr\p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '1');
     $objWriter->writeAttribute('name', '');
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:nvGrpSpPr\p:cNvGrpSpPr
     $objWriter->writeElement('p:cNvGrpSpPr', null);
     // p:sldLayout\p:cSld\p:spTree\p:nvGrpSpPr\p:nvPr
     $objWriter->writeElement('p:nvPr', null);
     // p:sldLayout\p:cSld\p:spTree\p:nvGrpSpPr
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr
     $objWriter->startElement('p:grpSpPr');
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm
     $objWriter->startElement('a:xfrm');
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pSlideLayout->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pSlideLayout->getOffsetY()));
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pSlideLayout->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pSlideLayout->getExtentY()));
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:chOff
     $objWriter->startElement('a:chOff');
     $objWriter->writeAttribute('x', CommonDrawing::pixelsToEmu($pSlideLayout->getOffsetX()));
     $objWriter->writeAttribute('y', CommonDrawing::pixelsToEmu($pSlideLayout->getOffsetY()));
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:chExt
     $objWriter->startElement('a:chExt');
     $objWriter->writeAttribute('cx', CommonDrawing::pixelsToEmu($pSlideLayout->getExtentX()));
     $objWriter->writeAttribute('cy', CommonDrawing::pixelsToEmu($pSlideLayout->getExtentY()));
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\a:xfrm\
     $objWriter->endElement();
     // p:sldLayout\p:cSld\p:spTree\p:grpSpPr\
     $objWriter->endElement();
     // Loop shapes
     $this->writeShapeCollection($objWriter, $pSlideLayout->getShapeCollection());
     // p:sldLayout\p:cSld\p:spTree\
     $objWriter->endElement();
     // p:sldLayout\p:cSld\
     $objWriter->endElement();
     // p:sldLayout\p:clrMapOvr
     $objWriter->startElement('p:clrMapOvr');
     $arrayDiff = array_diff_assoc(ColorMap::$mappingDefault, $pSlideLayout->colorMap->getMapping());
     if (!empty($arrayDiff)) {
         // p:sldLayout\p:clrMapOvr\a:overrideClrMapping
         $objWriter->startElement('a:overrideClrMapping');
         foreach ($pSlideLayout->colorMap->getMapping() as $n => $v) {
             $objWriter->writeAttribute($n, $v);
         }
         $objWriter->endElement();
     } else {
         // p:sldLayout\p:clrMapOvr\a:masterClrMapping
         $objWriter->writeElement('a:masterClrMapping');
     }
     // p:sldLayout\p:clrMapOvr\
     $objWriter->endElement();
     if (!is_null($pSlideLayout->getTransition())) {
         $this->writeTransition($objWriter, $pSlideLayout->getTransition());
     }
     // p:sldLayout\
     $objWriter->endElement();
     return $objWriter->getData();
 }
示例#28
0
 /**
  * Write slide to XML format
  *
  * @param  \PhpOffice\PhpPresentation\Slide\SlideMaster $pSlide
  * @return string XML Output
  * @throws \Exception
  */
 public function writeSlideMaster(SlideMaster $pSlide)
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // p:sldMaster
     $objWriter->startElement('p:sldMaster');
     $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
     $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
     $objWriter->writeAttribute('xmlns:p', 'http://schemas.openxmlformats.org/presentationml/2006/main');
     // p:sldMaster\p:cSld
     $objWriter->startElement('p:cSld');
     // Background
     $this->writeSlideBackground($pSlide, $objWriter);
     // p:sldMaster\p:cSld\p:spTree
     $objWriter->startElement('p:spTree');
     // p:sldMaster\p:cSld\p:spTree\p:nvGrpSpPr
     $objWriter->startElement('p:nvGrpSpPr');
     // p:sldMaster\p:cSld\p:spTree\p:nvGrpSpPr\p:cNvPr
     $objWriter->startElement('p:cNvPr');
     $objWriter->writeAttribute('id', '1');
     $objWriter->writeAttribute('name', '');
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:nvGrpSpPr\p:cNvGrpSpPr
     $objWriter->writeElement('p:cNvGrpSpPr', null);
     // p:sldMaster\p:cSld\p:spTree\p:nvGrpSpPr\p:nvPr
     $objWriter->writeElement('p:nvPr', null);
     // p:sldMaster\p:cSld\p:spTree\p:nvGrpSpPr
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr
     $objWriter->startElement('p:grpSpPr');
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm
     $objWriter->startElement('a:xfrm');
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:off
     $objWriter->startElement('a:off');
     $objWriter->writeAttribute('x', 0);
     $objWriter->writeAttribute('y', 0);
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:ext
     $objWriter->startElement('a:ext');
     $objWriter->writeAttribute('cx', 0);
     $objWriter->writeAttribute('cy', 0);
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:chOff
     $objWriter->startElement('a:chOff');
     $objWriter->writeAttribute('x', 0);
     $objWriter->writeAttribute('y', 0);
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm\a:chExt
     $objWriter->startElement('a:chExt');
     $objWriter->writeAttribute('cx', 0);
     $objWriter->writeAttribute('cy', 0);
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\a:xfrm\
     $objWriter->endElement();
     // p:sldMaster\p:cSld\p:spTree\p:grpSpPr\
     $objWriter->endElement();
     // Loop shapes
     $this->writeShapeCollection($objWriter, $pSlide->getShapeCollection());
     // p:sldMaster\p:cSld\p:spTree\
     $objWriter->endElement();
     // p:sldMaster\p:cSld\
     $objWriter->endElement();
     // p:sldMaster\p:clrMap
     $objWriter->startElement('p:clrMap');
     foreach ($pSlide->colorMap->getMapping() as $n => $v) {
         $objWriter->writeAttribute($n, $v);
     }
     $objWriter->endElement();
     // p:sldMaster\p:clrMap\
     // p:sldMaster\p:sldLayoutIdLst
     $objWriter->startElement('p:sldLayoutIdLst');
     foreach ($pSlide->getAllSlideLayouts() as $layout) {
         /* @var $layout Slide\SlideLayout */
         $objWriter->startElement('p:sldLayoutId');
         $objWriter->writeAttribute('id', $layout->layoutId);
         $objWriter->writeAttribute('r:id', $layout->relationId);
         $objWriter->endElement();
     }
     $objWriter->endElement();
     // p:sldMaster\p:sldLayoutIdLst\
     // p:sldMaster\p:txStyles
     $objWriter->startElement('p:txStyles');
     foreach (array('p:titleStyle' => $pSlide->getTextStyles()->getTitleStyle(), 'p:bodyStyle' => $pSlide->getTextStyles()->getBodyStyle(), 'p:otherStyle' => $pSlide->getTextStyles()->getOtherStyle()) as $startElement => $stylesArray) {
         // titleStyle
         $objWriter->startElement($startElement);
         foreach ($stylesArray as $lvl => $oParagraph) {
             /** @var RichText\Paragraph $oParagraph */
             $elementName = $lvl == 0 ? 'a:defPPr' : 'a:lvl' . $lvl . 'pPr';
             $objWriter->startElement($elementName);
             $objWriter->writeAttribute('algn', $oParagraph->getAlignment()->getHorizontal());
             $objWriter->writeAttributeIf($oParagraph->getAlignment()->getMarginLeft() != 0, 'marL', CommonDrawing::pixelsToEmu($oParagraph->getAlignment()->getMarginLeft()));
             $objWriter->writeAttributeIf($oParagraph->getAlignment()->getMarginRight() != 0, 'marR', CommonDrawing::pixelsToEmu($oParagraph->getAlignment()->getMarginRight()));
             $objWriter->writeAttributeIf($oParagraph->getAlignment()->getIndent() != 0, 'indent', CommonDrawing::pixelsToEmu($oParagraph->getAlignment()->getIndent()));
             $objWriter->startElement('a:defRPr');
             $objWriter->writeAttributeIf($oParagraph->getFont()->getSize() != 10, 'sz', $oParagraph->getFont()->getSize() * 100);
             $objWriter->writeAttributeIf($oParagraph->getFont()->isBold(), 'b', 1);
             $objWriter->writeAttributeIf($oParagraph->getFont()->isItalic(), 'i', 1);
             $objWriter->writeAttribute('kern', '1200');
             if ($oParagraph->getFont()->getColor() instanceof SchemeColor) {
                 $objWriter->startElement('a:solidFill');
                 $objWriter->startElement('a:schemeClr');
                 $objWriter->writeAttribute('val', $oParagraph->getFont()->getColor()->getValue());
                 $objWriter->endElement();
                 $objWriter->endElement();
             }
             $objWriter->endElement();
             $objWriter->endElement();
         }
         $objWriter->writeElement('a:extLst');
         $objWriter->endElement();
     }
     $objWriter->endElement();
     // p:sldMaster\p:txStyles\
     if (!is_null($pSlide->getTransition())) {
         $this->writeTransition($objWriter, $pSlide->getTransition());
     }
     // p:sldMaster\
     $objWriter->endElement();
     return $objWriter->getData();
 }
示例#29
0
 /**
  * @return \PhpOffice\Common\Adapter\Zip\ZipInterface
  */
 public function render()
 {
     // Create XML writer
     $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     // XML header
     $objWriter->startDocument('1.0', 'UTF-8', 'yes');
     // Properties
     $objWriter->startElement('Properties');
     $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
     $objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
     // Application
     $objWriter->writeElement('Application', 'Microsoft Office PowerPoint');
     // Slides
     $objWriter->writeElement('Slides', $this->getPresentation()->getSlideCount());
     // ScaleCrop
     $objWriter->writeElement('ScaleCrop', 'false');
     // HeadingPairs
     $objWriter->startElement('HeadingPairs');
     // Vector
     $objWriter->startElement('vt:vector');
     $objWriter->writeAttribute('size', '4');
     $objWriter->writeAttribute('baseType', 'variant');
     // Variant
     $objWriter->startElement('vt:variant');
     $objWriter->writeElement('vt:lpstr', 'Theme');
     $objWriter->endElement();
     // Variant
     $objWriter->startElement('vt:variant');
     $objWriter->writeElement('vt:i4', '1');
     $objWriter->endElement();
     // Variant
     $objWriter->startElement('vt:variant');
     $objWriter->writeElement('vt:lpstr', 'Slide Titles');
     $objWriter->endElement();
     // Variant
     $objWriter->startElement('vt:variant');
     $objWriter->writeElement('vt:i4', '1');
     $objWriter->endElement();
     $objWriter->endElement();
     $objWriter->endElement();
     // TitlesOfParts
     $objWriter->startElement('TitlesOfParts');
     // Vector
     $objWriter->startElement('vt:vector');
     $objWriter->writeAttribute('size', '1');
     $objWriter->writeAttribute('baseType', 'lpstr');
     $objWriter->writeElement('vt:lpstr', 'Office Theme');
     $objWriter->endElement();
     $objWriter->endElement();
     // Company
     $objWriter->writeElement('Company', $this->getPresentation()->getDocumentProperties()->getCompany());
     // LinksUpToDate
     $objWriter->writeElement('LinksUpToDate', 'false');
     // SharedDoc
     $objWriter->writeElement('SharedDoc', 'false');
     // HyperlinksChanged
     $objWriter->writeElement('HyperlinksChanged', 'false');
     // AppVersion
     $objWriter->writeElement('AppVersion', '12.0000');
     $objWriter->endElement();
     $this->oZip->addFromString('docProps/app.xml', $objWriter->getData());
     // Return
     return $this->oZip;
 }