Source for file Slide.php
Documentation is available at Slide.php
* Copyright (c) 2009 - 2010 PHPPowerPoint
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* @category PHPPowerPoint
* @package PHPPowerPoint_Writer_PowerPoint2007
* @copyright Copyright (c) 2009 - 2010 PHPPowerPoint (http://www.codeplex.com/PHPPowerPoint)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version 0.1.0, 2009-04-27
/** PHPPowerPoint_Writer_PowerPoint2007 */
require_once 'PHPPowerPoint/Writer/PowerPoint2007.php';
/** PHPPowerPoint_Writer_PowerPoint2007_WriterPart */
require_once 'PHPPowerPoint/Writer/PowerPoint2007/WriterPart.php';
/** PHPPowerPoint_Slide */
require_once 'PHPPowerPoint/Slide.php';
/** PHPPowerPoint_Shape */
require_once 'PHPPowerPoint/Shape.php';
/** PHPPowerPoint_Shape_RichText */
require_once 'PHPPowerPoint/Shape/RichText.php';
/** PHPPowerPoint_Shape_BaseDrawing */
require_once 'PHPPowerPoint/Shape/BaseDrawing.php';
/** PHPPowerPoint_Shape_Drawing */
require_once 'PHPPowerPoint/Shape/Drawing.php';
/** PHPPowerPoint_Shape_MemoryDrawing */
require_once 'PHPPowerPoint/Shape/MemoryDrawing.php';
/** PHPPowerPoint_Shared_Font */
require_once 'PHPPowerPoint/Shared/Font.php';
/** PHPPowerPoint_Shared_String */
require_once 'PHPPowerPoint/Shared/String.php';
/** PHPPowerPoint_Shared_XMLWriter */
require_once 'PHPPowerPoint/Shared/XMLWriter.php';
* PHPPowerPoint_Writer_PowerPoint2007_Slide
* @category PHPPowerPoint
* @package PHPPowerPoint_Writer_PowerPoint2007
* @copyright Copyright (c) 2006 - 2009 PHPPowerPoint (http://www.codeplex.com/PHPPowerPoint)
* Write slide to XML format
* @param PHPPowerPoint_Slide $pSlide
* @return string XML Output
public function writeSlide(PHPPowerPoint_Slide $pSlide = null)
throw new Exception("Invalid PHPPowerPoint_Slide object passed.");
$objWriter->startDocument('1.0','UTF-8','yes');
$objWriter->startElement('p:sld');
$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->startElement('p:cSld');
$objWriter->startElement('p:spTree');
$objWriter->startElement('p:nvGrpSpPr');
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('id', '1');
$objWriter->writeAttribute('name', '');
$objWriter->endElement();
$objWriter->writeElement('p:cNvGrpSpPr', null);
$objWriter->writeElement('p:nvPr', null);
$objWriter->endElement();
$objWriter->startElement('p:grpSpPr');
$objWriter->startElement('a:xfrm');
$objWriter->startElement('a:off');
$objWriter->writeAttribute('x', '0');
$objWriter->writeAttribute('y', '0');
$objWriter->endElement();
$objWriter->startElement('a:ext');
$objWriter->writeAttribute('cx', '0');
$objWriter->writeAttribute('cy', '0');
$objWriter->endElement();
$objWriter->startElement('a:chOff');
$objWriter->writeAttribute('x', '0');
$objWriter->writeAttribute('y', '0');
$objWriter->endElement();
$objWriter->startElement('a:chExt');
$objWriter->writeAttribute('cx', '0');
$objWriter->writeAttribute('cy', '0');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$shapes = $pSlide->getShapeCollection();
foreach ($shapes as $shape)
// Picture --> $relationId
$this->_writePic($objWriter, $shape, $shapeId, $relationId);
$this->_writeTxt($objWriter, $shape, $shapeId);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('p:clrMapOvr');
$objWriter->writeElement('a:masterClrMapping', '');
$objWriter->endElement();
$objWriter->endElement();
return $objWriter->getData();
* @param PHPPowerPoint_Shared_XMLWriter $objWriter XML Writer
* @param PHPPowerPoint_Shape_BaseDrawing $shape
private function _writePic(PHPPowerPoint_Shared_XMLWriter $objWriter = null, PHPPowerPoint_Shape_BaseDrawing $shape = null, $shapeId, $relationId)
$objWriter->startElement('p:pic');
$objWriter->startElement('p:nvPicPr');
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('id', $shapeId);
$objWriter->writeAttribute('name', $shape->getName());
$objWriter->writeAttribute('descr', $shape->getDescription());
$objWriter->endElement();
$objWriter->startElement('p:cNvPicPr');
$objWriter->startElement('a:picLocks');
$objWriter->writeAttribute('noChangeAspect', '1');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->writeElement('p:nvPr', null);
$objWriter->endElement();
$objWriter->startElement('p:blipFill');
$objWriter->startElement('a:blip');
$objWriter->writeAttribute('r:embed', 'rId' . $relationId);
$objWriter->endElement();
$objWriter->startElement('a:stretch');
$objWriter->writeElement('a:fillRect', null);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('p:spPr');
$objWriter->startElement('a:xfrm');
$objWriter->startElement('a:off');
$objWriter->endElement();
$objWriter->startElement('a:ext');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('a:prstGeom');
$objWriter->writeAttribute('prst', 'rect');
$objWriter->writeElement('a:avLst', null);
$objWriter->endElement();
if ($shape->getShadow()->getVisible()) {
$objWriter->startElement('a:effectLst');
$objWriter->startElement('a:outerShdw');
$objWriter->writeAttribute('algn', $shape->getShadow()->getAlignment());
$objWriter->writeAttribute('rotWithShape', '0');
$objWriter->startElement('a:srgbClr');
$objWriter->writeAttribute('val', $shape->getShadow()->getColor()->getRGB());
$objWriter->startElement('a:alpha');
$objWriter->writeAttribute('val', $shape->getShadow()->getAlpha() * 1000);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
* @param PHPPowerPoint_Shared_XMLWriter $objWriter XML Writer
* @param PHPPowerPoint_Shape_RichText $shape
private function _writeTxt(PHPPowerPoint_Shared_XMLWriter $objWriter = null, PHPPowerPoint_Shape_RichText $shape = null, $shapeId)
$objWriter->startElement('p:sp');
$objWriter->startElement('p:nvSpPr');
$objWriter->startElement('p:cNvPr');
$objWriter->writeAttribute('id', $shapeId);
$objWriter->writeAttribute('name', '');
$objWriter->endElement();
$objWriter->startElement('p:cNvSpPr');
$objWriter->writeAttribute('txBox', '1');
$objWriter->endElement();
$objWriter->writeElement('p:nvPr', null);
$objWriter->endElement();
$objWriter->startElement('p:spPr');
$objWriter->startElement('a:xfrm');
$objWriter->startElement('a:off');
$objWriter->endElement();
$objWriter->startElement('a:ext');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('a:prstGeom');
$objWriter->writeAttribute('prst', 'rect');
$objWriter->endElement();
$objWriter->writeElement('a:noFill', null);
if ($shape->getShadow()->getVisible()) {
$objWriter->startElement('a:effectLst');
$objWriter->startElement('a:outerShdw');
$objWriter->writeAttribute('algn', $shape->getShadow()->getAlignment());
$objWriter->writeAttribute('rotWithShape', '0');
$objWriter->startElement('a:srgbClr');
$objWriter->writeAttribute('val', $shape->getShadow()->getColor()->getRGB());
$objWriter->startElement('a:alpha');
$objWriter->writeAttribute('val', $shape->getShadow()->getAlpha() * 1000);
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('p:txBody');
$objWriter->startElement('a:bodyPr');
$objWriter->writeAttribute('wrap', 'square');
$objWriter->writeAttribute('rtlCol', '0');
$objWriter->writeElement('a:spAutoFit', null);
$objWriter->endElement();
$objWriter->writeElement('a:lstStyle', null);
$objWriter->startElement('a:p');
$objWriter->startElement('a:pPr');
$objWriter->writeAttribute('algn', $shape->getAlignment()->getHorizontal());
$objWriter->writeAttribute('fontAlgn', $shape->getAlignment()->getVertical());
$objWriter->writeAttribute('indent', $shape->getAlignment()->getIndent());
$objWriter->writeAttribute('lvl', $shape->getAlignment()->getLevel());
$objWriter->endElement();
// Loop trough rich text elements
$elements = $shape->getRichTextElements();
foreach ($elements as $element) {
$objWriter->writeElement('a:br', null);
$objWriter->startElement('a:r');
$objWriter->startElement('a:rPr');
$objWriter->writeAttribute('b', ($element->getFont()->getBold() ? 'true' : 'false'));
$objWriter->writeAttribute('i', ($element->getFont()->getItalic() ? 'true' : 'false'));
$objWriter->writeAttribute('strike', ($element->getFont()->getStrikethrough() ? 'sngStrike' : 'noStrike'));
$objWriter->writeAttribute('sz', ($element->getFont()->getSize() * 100));
$objWriter->writeAttribute('u', $element->getFont()->getUnderline());
// Superscript / subscript
if ($element->getFont()->getSuperScript() || $element->getFont()->getSubScript()) {
if ($element->getFont()->getSuperScript()) {
$objWriter->writeAttribute('baseline', '30000');
} else if ($element->getFont()->getSubScript()) {
$objWriter->writeAttribute('baseline', '-25000');
$objWriter->startElement('a:solidFill');
$objWriter->startElement('a:srgbClr');
$objWriter->writeAttribute('val', $element->getFont()->getColor()->getRGB());
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('a:latin');
$objWriter->writeAttribute('typeface', $element->getFont()->getName());
$objWriter->endElement();
$objWriter->endElement();
$objWriter->startElement('a:t');
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
$objWriter->endElement();
<a:rPr lang="en-US" dirty="0" err="1" smtClean="0" />
$objWriter->endElement();
|