示例#1
0
 public function writePart(Chart $chart)
 {
     $this->xmlContent = $this->getXMLWriter();
     $this->xmlMeta = $this->getXMLWriter();
     $this->xmlStyles = $this->getXMLWriter();
     $this->writeContentPart($chart);
     return array('content.xml' => $this->xmlContent->getData(), 'meta.xml' => $this->xmlMeta->getData(), 'styles.xml' => $this->xmlStyles->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;
 }
 /**
  * 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());
     }
 }
 /**
  * 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());
     }
 }
示例#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');
     // 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();
 }
示例#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());
 }
示例#9
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();
 }
示例#10
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;
 }
示例#11
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();
 }
示例#12
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();
 }
示例#13
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();
 }
示例#14
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();
 }
示例#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
 /**
  * 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();
 }
示例#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');
        // 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;
    }
示例#18
0
 /**
  * @param Chart $chart
  * @return string
  * @throws \Exception
  */
 protected function writeContentPart(Chart $chart)
 {
     $this->xmlContent = new XMLWriter(XMLWriter::STORAGE_MEMORY);
     $chartType = $chart->getPlotArea()->getType();
     // Data
     $this->arrayData = array();
     $this->arrayTitle = array();
     $this->numData = 0;
     foreach ($chartType->getSeries() as $series) {
         $inc = 0;
         $this->arrayTitle[] = $series->getTitle();
         foreach ($series->getValues() as $key => $value) {
             if (!isset($this->arrayData[$inc])) {
                 $this->arrayData[$inc] = array();
             }
             if (empty($this->arrayData[$inc])) {
                 $this->arrayData[$inc][] = $key;
             }
             $this->arrayData[$inc][] = $value;
             $inc++;
         }
         if ($inc > $this->numData) {
             $this->numData = $inc;
         }
     }
     // office:document-content
     $this->xmlContent->startElement('office:document-content');
     $this->xmlContent->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
     $this->xmlContent->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0');
     $this->xmlContent->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0');
     $this->xmlContent->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0');
     $this->xmlContent->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0');
     $this->xmlContent->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0');
     $this->xmlContent->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
     $this->xmlContent->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     $this->xmlContent->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
     $this->xmlContent->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0');
     $this->xmlContent->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0');
     $this->xmlContent->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0');
     $this->xmlContent->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0');
     $this->xmlContent->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML');
     $this->xmlContent->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0');
     $this->xmlContent->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0');
     $this->xmlContent->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
     $this->xmlContent->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer');
     $this->xmlContent->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc');
     $this->xmlContent->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events');
     $this->xmlContent->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms');
     $this->xmlContent->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema');
     $this->xmlContent->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     $this->xmlContent->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report');
     $this->xmlContent->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2');
     $this->xmlContent->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml');
     $this->xmlContent->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
     $this->xmlContent->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table');
     $this->xmlContent->writeAttribute('xmlns:chartooo', 'http://openoffice.org/2010/chart');
     $this->xmlContent->writeAttribute('xmlns:drawooo', 'http://openoffice.org/2010/draw');
     $this->xmlContent->writeAttribute('xmlns:calcext', 'urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0');
     $this->xmlContent->writeAttribute('xmlns:loext', 'urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0');
     $this->xmlContent->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0');
     $this->xmlContent->writeAttribute('xmlns:formx', 'urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0');
     $this->xmlContent->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/');
     $this->xmlContent->writeAttribute('office:version', '1.2');
     // office:automatic-styles
     $this->xmlContent->startElement('office:automatic-styles');
     // Chart
     $this->writeChartStyle($chart);
     // Axis
     $this->writeAxisStyle($chart);
     // Series
     $this->numSeries = 0;
     foreach ($chartType->getSeries() as $series) {
         $this->writeSeriesStyle($chart, $series);
         $this->numSeries++;
     }
     // Floor
     $this->writeFloorStyle();
     // Legend
     $this->writeLegendStyle($chart);
     // PlotArea
     $this->writePlotAreaStyle($chart);
     // Title
     $this->writeTitleStyle($chart->getTitle());
     // Wall
     $this->writeWallStyle($chart);
     // > office:automatic-styles
     $this->xmlContent->endElement();
     // office:body
     $this->xmlContent->startElement('office:body');
     // office:chart
     $this->xmlContent->startElement('office:chart');
     // office:chart
     $this->xmlContent->startElement('chart:chart');
     $this->xmlContent->writeAttribute('svg:width', Text::numberFormat(CommonDrawing::pixelsToCentimeters($chart->getWidth()), 3) . 'cm');
     $this->xmlContent->writeAttribute('svg:height', Text::numberFormat(CommonDrawing::pixelsToCentimeters($chart->getHeight()), 3) . 'cm');
     $this->xmlContent->writeAttribute('xlink:href', '.');
     $this->xmlContent->writeAttribute('xlink:type', 'simple');
     $this->xmlContent->writeAttribute('chart:style-name', 'styleChart');
     $this->xmlContent->writeAttributeIf($chartType instanceof Area, 'chart:class', 'chart:area');
     $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypeBar, 'chart:class', 'chart:bar');
     $this->xmlContent->writeAttributeIf($chartType instanceof Line, 'chart:class', 'chart:line');
     $this->xmlContent->writeAttributeIf($chartType instanceof AbstractTypePie, 'chart:class', 'chart:circle');
     $this->xmlContent->writeAttributeIf($chartType instanceof Scatter, 'chart:class', 'chart:scatter');
     //**** Title ****
     $this->writeTitle($chart->getTitle());
     //**** Legend ****
     $this->writeLegend($chart);
     //**** Plotarea ****
     $this->writePlotArea($chart);
     //**** Table ****
     $this->writeTable();
     // > chart:chart
     $this->xmlContent->endElement();
     // > office:chart
     $this->xmlContent->endElement();
     // > office:body
     $this->xmlContent->endElement();
     // > office:document-content
     $this->xmlContent->endElement();
     return $this->xmlContent->getData();
 }
示例#19
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;
 }
示例#20
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();
 }
示例#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();
 }