/**
  * Write font faces declaration.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @return void
  */
 protected function writeFontFaces(XMLWriter $xmlWriter)
 {
     $xmlWriter->startElement('office:font-face-decls');
     $fontTable = array();
     $styles = Style::getStyles();
     $numFonts = 0;
     if (count($styles) > 0) {
         foreach ($styles as $style) {
             // Font
             if ($style instanceof Font) {
                 $numFonts++;
                 $name = $style->getName();
                 if (!in_array($name, $fontTable)) {
                     $fontTable[] = $name;
                     // style:font-face
                     $xmlWriter->startElement('style:font-face');
                     $xmlWriter->writeAttribute('style:name', $name);
                     $xmlWriter->writeAttribute('svg:font-family', $name);
                     $xmlWriter->endElement();
                 }
             }
         }
     }
     if (!in_array(Settings::getDefaultFontName(), $fontTable)) {
         $xmlWriter->startElement('style:font-face');
         $xmlWriter->writeAttribute('style:name', Settings::getDefaultFontName());
         $xmlWriter->writeAttribute('svg:font-family', Settings::getDefaultFontName());
         $xmlWriter->endElement();
     }
     $xmlWriter->endElement();
 }
Example #2
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();
 }
 /**
  * Test method exceptions
  */
 public function testMethodExceptions()
 {
     $styles = array('Frame' => 'writeAlignment', 'Line' => 'writeStroke', 'TextBox' => 'writeBorder');
     foreach ($styles as $style => $method) {
         $objectClass = 'PhpOffice\\PhpWord\\Writer\\Word2007\\Style\\' . $style;
         $xmlWriter = new XMLWriter();
         $object = new $objectClass($xmlWriter);
         $object->{$method}();
         $this->assertEquals('', $xmlWriter->getData());
     }
 }
 /**
  * Test empty styles
  */
 public function testEmptyStyles()
 {
     $styles = array('Font', 'Paragraph', 'Image', 'Section', 'Table');
     foreach ($styles as $style) {
         $objectClass = 'PhpOffice\\PhpWord\\Writer\\ODText\\Style\\' . $style;
         $xmlWriter = new XMLWriter();
         $object = new $objectClass($xmlWriter);
         $object->write();
         $this->assertEquals('', $xmlWriter->getData());
     }
 }
 /**
  * Write content types element
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter XML Writer
  * @param array $parts
  * @param boolean $isDefault
  * @return void
  */
 private function writeContentType(XMLWriter $xmlWriter, $parts, $isDefault)
 {
     foreach ($parts as $partName => $contentType) {
         $partType = $isDefault ? 'Default' : 'Override';
         $partAttribute = $isDefault ? 'Extension' : 'PartName';
         $xmlWriter->startElement($partType);
         $xmlWriter->writeAttribute($partAttribute, $partName);
         $xmlWriter->writeAttribute('ContentType', $contentType);
         $xmlWriter->endElement();
     }
 }
 /**
  * Test unmatched elements
  */
 public function testUnmatchedElements()
 {
     $elements = array('Image', 'Link', 'Table', 'Text', 'Title');
     foreach ($elements as $element) {
         $objectClass = 'PhpOffice\\PhpWord\\Writer\\ODText\\Element\\' . $element;
         $xmlWriter = new XMLWriter();
         $newElement = new \PhpOffice\PhpWord\Element\PageBreak();
         $object = new $objectClass($xmlWriter, $newElement);
         $object->write();
         $this->assertEquals('', $xmlWriter->getData());
     }
 }
 /**
  * Test unmatched element
  */
 public function testUnmatchedElements()
 {
     $elements = array('CheckBox', 'Container', 'Footnote', 'Image', 'Link', 'ListItem', 'ListItemRun', 'Object', 'PreserveText', 'Table', 'Text', 'TextBox', 'TextBreak', 'Title', 'TOC', 'Field', 'Line', 'Shape', 'Chart', 'FormField', 'SDT');
     foreach ($elements as $element) {
         $objectClass = 'PhpOffice\\PhpWord\\Writer\\Word2007\\Element\\' . $element;
         $xmlWriter = new XMLWriter();
         $newElement = new \PhpOffice\PhpWord\Element\PageBreak();
         $object = new $objectClass($xmlWriter, $newElement);
         $object->write();
         $this->assertEquals('', $xmlWriter->getData());
     }
 }
Example #8
0
 /**
  */
 public function testConstruct()
 {
     // Memory
     $object = new XMLWriter();
     $object->startElement('element');
     $object->text('AAA');
     $object->endElement();
     $this->assertEquals('<element>AAA</element>' . chr(10), $object->getData());
     // Disk
     $object = new XMLWriter(XMLWriter::STORAGE_DISK);
     $object->startElement('element');
     $object->text('BBB');
     $object->endElement();
     $this->assertEquals('<element>BBB</element>' . chr(10), $object->getData());
 }
 /**
  * Write watermark element.
  *
  * @return void
  */
 private function writeWatermark(XMLWriter $xmlWriter, ImageElement $element)
 {
     $rId = $element->getRelationId();
     $style = $element->getStyle();
     $style->setPositioning('absolute');
     $styleWriter = new ImageStyleWriter($xmlWriter, $style);
     $xmlWriter->startElement('w:p');
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:pict');
     $xmlWriter->startElement('v:shape');
     $xmlWriter->writeAttribute('type', '#_x0000_t75');
     $styleWriter->write();
     $xmlWriter->startElement('v:imagedata');
     $xmlWriter->writeAttribute('r:id', 'rId' . $rId);
     $xmlWriter->writeAttribute('o:title', '');
     $xmlWriter->endElement();
     // v:imagedata
     $xmlWriter->endElement();
     // v:shape
     $xmlWriter->endElement();
     // w:pict
     $xmlWriter->endElement();
     // w:r
     $xmlWriter->endElement();
     // w:p
 }
 /**
  * End w:p DOM element.
  *
  * @return void
  */
 protected function endElementP()
 {
     if (!$this->withoutP) {
         $this->xmlWriter->endElement();
         // w:p
     }
 }
Example #11
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();
 }
 /**
  * Write indivual setting, recursive to any child settings.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param string $settingKey
  * @param array|string $settingValue
  * @return void
  */
 protected function writeSetting($xmlWriter, $settingKey, $settingValue)
 {
     if ($settingValue == '') {
         $xmlWriter->writeElement($settingKey);
     } else {
         $xmlWriter->startElement($settingKey);
         /** @var array $settingValue Type hint */
         foreach ($settingValue as $childKey => $childValue) {
             if ($childKey == '@attributes') {
                 foreach ($childValue as $key => $val) {
                     $xmlWriter->writeAttribute($key, $val);
                 }
             } else {
                 $this->writeSetting($xmlWriter, $childKey, $childValue);
             }
         }
         $xmlWriter->endElement();
     }
 }
Example #13
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();
 }
 /**
  * Write side.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param string $side
  * @param int $width
  * @param string $color
  * @return void
  */
 private function writeSide(XMLWriter $xmlWriter, $side, $width, $color = null)
 {
     $xmlWriter->startElement('w:' . $side);
     if (!empty($this->colors)) {
         if ($color === null && !empty($this->attributes)) {
             if (isset($this->attributes['defaultColor'])) {
                 $color = $this->attributes['defaultColor'];
             }
         }
         $xmlWriter->writeAttribute('w:val', 'single');
         $xmlWriter->writeAttribute('w:sz', $width);
         $xmlWriter->writeAttribute('w:color', $color);
         if (!empty($this->attributes)) {
             if (isset($this->attributes['space'])) {
                 $xmlWriter->writeAttribute('w:space', $this->attributes['space']);
             }
         }
     } else {
         $xmlWriter->writeAttribute('w:w', $width);
         $xmlWriter->writeAttribute('w:type', 'dxa');
     }
     $xmlWriter->endElement();
 }
Example #15
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();
 }
Example #16
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();
 }
Example #17
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();
 }
Example #18
0
 /**
  * @param Chart $chart
  */
 private function writeWallStyle(Chart $chart)
 {
     $chartType = $chart->getPlotArea()->getType();
     // style:style
     $this->xmlContent->startElement('style:style');
     $this->xmlContent->writeAttribute('style:name', 'styleWall');
     $this->xmlContent->writeAttribute('style:family', 'chart');
     // style:chart-properties
     $this->xmlContent->startElement('style:graphic-properties');
     //@todo : Permit edit color and size border of wall
     if ($chartType instanceof Line || $chartType instanceof Scatter) {
         $this->xmlContent->writeAttribute('draw:fill', 'solid');
         $this->xmlContent->writeAttribute('draw:fill-color', '#FFFFFF');
     } else {
         $this->xmlContent->writeAttribute('draw:fill', 'none');
         $this->xmlContent->writeAttribute('draw:stroke', 'solid');
         $this->xmlContent->writeAttribute('svg:stroke-width', '0.026cm');
         $this->xmlContent->writeAttribute('svg:stroke-color', '#878787');
     }
     // > style:chart-properties
     $this->xmlContent->endElement();
     // > style:style
     $this->xmlContent->endElement();
 }
Example #19
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();
 }
Example #20
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;
 }
 /**
  * Write shading.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Style\Table $style
  * @return void
  */
 private function writeShading(XMLWriter $xmlWriter, TableStyle $style)
 {
     if (null !== $style->getShading()) {
         $xmlWriter->startElement('w:tcPr');
         $styleWriter = new Shading($xmlWriter, $style->getShading());
         $styleWriter->write();
         $xmlWriter->endElement();
     }
 }
Example #22
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();
 }
 /**
  * Write rectangle.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Style\Shape $style
  * @return void
  */
 private function writeRoundRect(XMLWriter $xmlWriter, ShapeStyle $style)
 {
     $xmlWriter->writeAttribute('arcsize', $style->getRoundness());
 }
Example #24
0
 protected function writeStylePartShadow(XMLWriter $objWriter, Shadow $oShadow)
 {
     $objWriter->writeAttribute('draw:shadow', 'visible');
     $objWriter->writeAttribute('draw:shadow-color', '#' . $oShadow->getColor()->getRGB());
     if ($oShadow->getDirection() == 0 || $oShadow->getDirection() == 360) {
         $objWriter->writeAttribute('draw:shadow-offset-x', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', '0cm');
     } elseif ($oShadow->getDirection() == 45) {
         $objWriter->writeAttribute('draw:shadow-offset-x', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     } elseif ($oShadow->getDirection() == 90) {
         $objWriter->writeAttribute('draw:shadow-offset-x', '0cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     } elseif ($oShadow->getDirection() == 135) {
         $objWriter->writeAttribute('draw:shadow-offset-x', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     } elseif ($oShadow->getDirection() == 180) {
         $objWriter->writeAttribute('draw:shadow-offset-x', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', '0cm');
     } elseif ($oShadow->getDirection() == 225) {
         $objWriter->writeAttribute('draw:shadow-offset-x', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     } elseif ($oShadow->getDirection() == 270) {
         $objWriter->writeAttribute('draw:shadow-offset-x', '0cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     } elseif ($oShadow->getDirection() == 315) {
         $objWriter->writeAttribute('draw:shadow-offset-x', CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
         $objWriter->writeAttribute('draw:shadow-offset-y', '-' . CommonDrawing::pixelsToCentimeters($oShadow->getDistance()) . 'cm');
     }
     $objWriter->writeAttribute('draw:shadow-opacity', 100 - $oShadow->getAlpha() . '%');
     $objWriter->writeAttribute('style:mirror', 'none');
 }
Example #25
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();
 }
Example #26
0
 /**
  * Write relationship
  *
  * @param  \PhpOffice\Common\XMLWriter $objWriter   XML Writer
  * @param  int                            $pId         Relationship ID. rId will be prepended!
  * @param  string                         $pType       Relationship type
  * @param  string                         $pTarget     Relationship target
  * @param  string                         $pTargetMode Relationship target mode
  * @throws \Exception
  */
 private function writeRelationship(XMLWriter $objWriter, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
 {
     if ($pType != '' && $pTarget != '') {
         if (strpos($pId, 'rId') === false) {
             $pId = 'rId' . $pId;
         }
         // Write relationship
         $objWriter->startElement('Relationship');
         $objWriter->writeAttribute('Id', $pId);
         $objWriter->writeAttribute('Type', $pType);
         $objWriter->writeAttribute('Target', $pTarget);
         if ($pTargetMode != '') {
             $objWriter->writeAttribute('TargetMode', $pTargetMode);
         }
         $objWriter->endElement();
     } else {
         throw new \Exception("Invalid parameters passed.");
     }
 }
 /**
  * Write master style.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @return void
  */
 private function writeMaster(XMLWriter $xmlWriter)
 {
     $xmlWriter->startElement('office:master-styles');
     $xmlWriter->startElement('style:master-page');
     $xmlWriter->writeAttribute('style:name', 'Standard');
     $xmlWriter->writeAttribute('style:page-layout-name', 'Mpm1');
     $xmlWriter->endElement();
     // style:master-page
     $xmlWriter->endElement();
     // office:master-styles
 }
Example #28
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();
 }
 /**
  * Write cell.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Element\Cell $cell
  * @return void
  */
 private function writeCell(XMLWriter $xmlWriter, CellElement $cell)
 {
     $xmlWriter->startElement('w:tc');
     // Write style
     $cellStyle = $cell->getStyle();
     if ($cellStyle instanceof CellStyle) {
         $styleWriter = new CellStyleWriter($xmlWriter, $cellStyle);
         $styleWriter->setWidth($cell->getWidth());
         $styleWriter->write();
     }
     // Write content
     $containerWriter = new Container($xmlWriter, $cell);
     $containerWriter->write();
     $xmlWriter->endElement();
     // w:tc
 }
 /**
  * Write end section.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Element\Section $section
  * @return void
  */
 private function writeSectionSettings(XMLWriter $xmlWriter, Section $section)
 {
     $xmlWriter->startElement('w:sectPr');
     // Header reference
     foreach ($section->getHeaders() as $header) {
         $rId = $header->getRelationId();
         $xmlWriter->startElement('w:headerReference');
         $xmlWriter->writeAttribute('w:type', $header->getType());
         $xmlWriter->writeAttribute('r:id', 'rId' . $rId);
         $xmlWriter->endElement();
     }
     // Footer reference
     foreach ($section->getFooters() as $footer) {
         $rId = $footer->getRelationId();
         $xmlWriter->startElement('w:footerReference');
         $xmlWriter->writeAttribute('w:type', $footer->getType());
         $xmlWriter->writeAttribute('r:id', 'rId' . $rId);
         $xmlWriter->endElement();
     }
     // Different first page
     if ($section->hasDifferentFirstPage()) {
         $xmlWriter->startElement('w:titlePg');
         $xmlWriter->endElement();
     }
     // Section settings
     $styleWriter = new SectionStyleWriter($xmlWriter, $section->getStyle());
     $styleWriter->write();
     $xmlWriter->endElement();
     // w:sectPr
 }