Example #1
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();
 }