Example #1
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;
 }
 /**
  * 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
 }