/** * @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; }
/** * Write individual property * * @param \PhpOffice\Common\XMLWriter $xmlWriter * @param string $property * @param string $value * @return void * * @todo Handle other `$type`: double|date|dateTime|duration|boolean (4th arguments) */ private function writeCustomProperty(XMLWriter $xmlWriter, $property, $value) { $xmlWriter->startElement('meta:user-defined'); $xmlWriter->writeAttribute('meta:name', $property); // if ($type !== null) { // $xmlWriter->writeAttribute('meta:value-type', $type); // } if (Settings::isOutputEscapingEnabled()) { $xmlWriter->text($value); } else { $xmlWriter->writeRaw($value); } $xmlWriter->endElement(); // meta:user-defined }
/** * @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; }
/** * Write series items. * * @param \PhpOffice\Common\XMLWriter $xmlWriter * @param string $type * @param array $values * @return void */ private function writeSeriesItem(XMLWriter $xmlWriter, $type, $values) { $types = array('cat' => array('c:cat', 'c:strLit'), 'val' => array('c:val', 'c:numLit'), 'xVal' => array('c:xVal', 'c:strLit'), 'yVal' => array('c:yVal', 'c:numLit')); list($itemType, $itemLit) = $types[$type]; $xmlWriter->startElement($itemType); $xmlWriter->startElement($itemLit); $index = 0; foreach ($values as $value) { $xmlWriter->startElement('c:pt'); $xmlWriter->writeAttribute('idx', $index); if (\PhpOffice\PhpWord\Settings::isOutputEscapingEnabled()) { $xmlWriter->writeElement('c:v', $value); } else { $xmlWriter->startElement('c:v'); $xmlWriter->writeRaw($value); $xmlWriter->endElement(); } $xmlWriter->endElement(); // c:pt $index++; } $xmlWriter->endElement(); // $itemLit $xmlWriter->endElement(); // $itemType }