Source for file PowerPoint2007.php
Documentation is available at PowerPoint2007.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 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
-
-
-
-
-
require_once 'PHPPowerPoint.php';
-
-
/** PHPPowerPoint_HashTable */
-
require_once 'PHPPowerPoint/HashTable.php';
-
-
/** PHPPowerPoint_IComparable */
-
require_once 'PHPPowerPoint/IComparable.php';
-
-
/** PHPPowerPoint_Slide */
-
require_once 'PHPPowerPoint/Slide.php';
-
-
/** PHPPowerPoint_IWriter */
-
require_once 'PHPPowerPoint/Writer/IWriter.php';
-
-
/** PHPPowerPoint_Shared_XMLWriter */
-
require_once 'PHPPowerPoint/Shared/XMLWriter.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_WriterPart */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/WriterPart.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_ContentTypes */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/ContentTypes.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_DocProps */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/DocProps.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_Rels */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/Rels.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_Theme */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/Theme.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_Presentation */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/Presentation.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_Slide */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/Slide.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_Drawing */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/Drawing.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_LayoutPack */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/LayoutPack.php';
-
-
/** PHPPowerPoint_Writer_PowerPoint2007_LayoutPack_Default */
-
require_once 'PHPPowerPoint/Writer/PowerPoint2007/LayoutPack/Default.php';
-
-
-
-
* PHPPowerPoint_Writer_PowerPoint2007
-
-
* @category PHPPowerPoint
-
* @package PHPPowerPoint_Writer_PowerPoint2007
-
* @copyright Copyright (c) 2009 - 2010 PHPPowerPoint (http://www.codeplex.com/PHPPowerPoint)
-
-
class PHPPowerPoint_Writer_PowerPoint2007 implements PHPPowerPoint_Writer_IWriter
-
-
-
* Office2003 compatibility
-
-
-
-
private $_office2003compatibility = false;
-
-
-
-
-
* @var PHPPowerPoint_Writer_PowerPoint2007_WriterPart[]
-
-
-
-
-
-
-
-
-
-
-
-
* Private unique PHPPowerPoint_Worksheet_BaseDrawing HashTable
-
-
* @var PHPPowerPoint_HashTable
-
-
private $_drawingHashTable ;
-
-
-
* Use disk caching where possible?
-
-
-
-
private $_useDiskCaching = false;
-
-
-
-
-
-
-
private $_diskCachingDirectory ;
-
-
-
-
-
* @var PHPPowerPoint_Writer_PowerPoint2007_LayoutPack
-
-
-
-
-
* Create a new PHPPowerPoint_Writer_PowerPoint2007
-
-
* @param PHPPowerPoint $pPHPPowerPoint
-
-
public function __construct (PHPPowerPoint $pPHPPowerPoint = null)
-
-
-
$this->setPHPPowerPoint ($pPHPPowerPoint);
-
-
// Set up disk caching location
-
$this->_diskCachingDirectory = './';
-
-
-
$this->_layoutPack = new PHPPowerPoint_Writer_PowerPoint2007_LayoutPack_Default();
-
-
// Initialise writer parts
-
$this->_writerParts ['contenttypes'] = new PHPPowerPoint_Writer_PowerPoint2007_ContentTypes();
-
$this->_writerParts ['docprops'] = new PHPPowerPoint_Writer_PowerPoint2007_DocProps();
-
$this->_writerParts ['rels'] = new PHPPowerPoint_Writer_PowerPoint2007_Rels();
-
$this->_writerParts ['theme'] = new PHPPowerPoint_Writer_PowerPoint2007_Theme();
-
$this->_writerParts ['presentation'] = new PHPPowerPoint_Writer_PowerPoint2007_Presentation();
-
$this->_writerParts ['slide'] = new PHPPowerPoint_Writer_PowerPoint2007_Slide();
-
$this->_writerParts ['drawing'] = new PHPPowerPoint_Writer_PowerPoint2007_Drawing();
-
-
-
foreach ($this->_writerParts as $writer) {
-
$writer->setParentWriter($this);
-
-
-
// Set HashTable variables
-
$this->_drawingHashTable = new PHPPowerPoint_HashTable();
-
-
-
-
-
-
* @param string $pPartName Writer part name
-
* @return PHPPowerPoint_Writer_PowerPoint2007_WriterPart
-
-
function getWriterPart ($pPartName = '') {
-
if ($pPartName != '' && isset ($this->_writerParts [strtolower($pPartName)])) {
-
return $this->_writerParts [strtolower($pPartName)];
-
-
-
-
-
-
-
* Save PHPPowerPoint to file
-
-
* @param string $pFileName
-
-
-
public function save ($pFilename = null)
-
-
if (!is_null($this->_presentation )) {
-
// If $pFilename is php://output or php://stdout, make it a temporary file...
-
$originalFilename = $pFilename;
-
-
$pFilename = @tempnam('./', 'phppttmp');
-
-
$pFilename = $originalFilename;
-
-
-
-
// Create drawing dictionary
-
$this->_drawingHashTable ->addFromSource( $this->getWriterPart ('Drawing')->allDrawings($this->_presentation ) );
-
-
// Create new ZIP file and open it for writing
-
$objZip = new ZipArchive();
-
-
// Try opening the ZIP file
-
if ($objZip->open($pFilename, ZIPARCHIVE::OVERWRITE) !== true) {
-
if ($objZip->open($pFilename, ZIPARCHIVE::CREATE) !== true) {
-
throw new Exception("Could not open " . $pFilename . " for writing.");
-
-
-
-
// Add [Content_Types].xml to ZIP file
-
$objZip->addFromString('[Content_Types].xml', $this->getWriterPart ('ContentTypes')->writeContentTypes($this->_presentation ));
-
-
// Add relationships to ZIP file
-
$objZip->addFromString('_rels/.rels', $this->getWriterPart ('Rels')->writeRelationships($this->_presentation ));
-
$objZip->addFromString('ppt/_rels/presentation.xml.rels', $this->getWriterPart ('Rels')->writePresentationRelationships($this->_presentation ));
-
-
// Add document properties to ZIP file
-
$objZip->addFromString('docProps/app.xml', $this->getWriterPart ('DocProps')->writeDocPropsApp($this->_presentation ));
-
$objZip->addFromString('docProps/core.xml', $this->getWriterPart ('DocProps')->writeDocPropsCore($this->_presentation ));
-
-
-
$objZip->addFromString('ppt/theme/theme1.xml', $this->getWriterPart ('Theme')->writeTheme($this->_presentation ));
-
-
// Add slide master to ZIP file
-
$masterSlide = $this->getLayoutPack ()->getMasterSlide();
-
$objZip->addFromString('ppt/slideMasters/_rels/slideMaster1.xml.rels', $this->getWriterPart ('Rels')->writeSlideMasterRelationships());
-
$objZip->addFromString('ppt/slideMasters/slideMaster1.xml', $masterSlide['body']);
-
-
// Add slide layouts to ZIP file
-
$slideLayouts = $this->getLayoutPack ()->getLayouts();
-
for ($i = 0; $i < count($slideLayouts); ++ $i) {
-
$objZip->addFromString('ppt/slideLayouts/_rels/slideLayout' . ($i + 1) . '.xml.rels', $this->getWriterPart ('Rels')->writeSlideLayoutRelationships());
-
$objZip->addFromString('ppt/slideLayouts/slideLayout' . ($i + 1) . '.xml', $slideLayouts[$i]['body']);
-
-
-
// Add presentation to ZIP file
-
$objZip->addFromString('ppt/presentation.xml', $this->getWriterPart ('Presentation')->writePresentation($this->_presentation ));
-
-
// Add slides (drawings, ...)
-
for ($i = 0; $i < $this->_presentation ->getSlideCount(); ++ $i) {
-
-
$objZip->addFromString('ppt/slides/slide' . ($i + 1) . '.xml', $this->getWriterPart ('Slide')->writeSlide($this->_presentation ->getSlide($i)));
-
-
-
// Add slide relationships (drawings, ...)
-
for ($i = 0; $i < $this->_presentation ->getSlideCount(); ++ $i) {
-
-
$objZip->addFromString('ppt/slides/_rels/slide' . ($i + 1) . '.xml.rels', $this->getWriterPart ('Rels')->writeSlideRelationships($this->_presentation ->getSlide($i), ($i + 1)));
-
-
-
-
for ($i = 0; $i < $this->getDrawingHashTable ()->count(); ++ $i) {
-
if ($this->getDrawingHashTable ()->getByIndex($i) instanceof PHPPowerPoint_Shape_Drawing) {
-
-
$imagePath = $this->getDrawingHashTable ()->getByIndex($i)->getPath();
-
-
if (strpos($imagePath, 'zip://') !== false) {
-
$imagePath = substr($imagePath, 6);
-
$imagePathSplitted = explode('#', $imagePath);
-
-
$imageZip = new ZipArchive();
-
$imageZip->open($imagePathSplitted[0]);
-
$imageContents = $imageZip->getFromName($imagePathSplitted[1]);
-
-
-
-
-
-
-
$objZip->addFromString('ppt/media/' . str_replace(' ', '_', $this->getDrawingHashTable ()->getByIndex($i)->getIndexedFilename()), $imageContents);
-
} else if ($this->getDrawingHashTable ()->getByIndex($i) instanceof PHPPowerPoint_Shape_MemoryDrawing) {
-
-
-
$this->getDrawingHashTable ()->getByIndex($i)->getRenderingFunction(),
-
$this->getDrawingHashTable ()->getByIndex($i)->getImageResource()
-
-
-
-
-
$objZip->addFromString('ppt/media/' . str_replace(' ', '_', $this->getDrawingHashTable ()->getByIndex($i)->getIndexedFilename()), $imageContents);
-
-
-
-
-
if ($objZip->close() === false) {
-
throw new Exception("Could not close zip file $pFilename.");
-
-
-
// If a temporary file was used, copy it to the correct file stream
-
if ($originalFilename != $pFilename) {
-
if (copy($pFilename, $originalFilename) === false) {
-
throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename.");
-
-
-
-
-
throw new Exception("PHPPowerPoint object unassigned.");
-
-
-
-
-
* Get PHPPowerPoint object
-
-
-
-
-
public function getPHPPowerPoint () {
-
if (!is_null($this->_presentation )) {
-
return $this->_presentation ;
-
-
throw new Exception("No PHPPowerPoint assigned.");
-
-
-
-
-
* Get PHPPowerPoint object
-
-
* @param PHPPowerPoint $pPHPPowerPoint PHPPowerPoint object
-
-
-
public function setPHPPowerPoint (PHPPowerPoint $pPHPPowerPoint = null) {
-
$this->_presentation = $pPHPPowerPoint;
-
-
-
-
* Get PHPPowerPoint_Worksheet_BaseDrawing HashTable
-
-
* @return PHPPowerPoint_HashTable
-
-
public function getDrawingHashTable () {
-
return $this->_drawingHashTable ;
-
-
-
-
* Get Office2003 compatibility
-
-
-
-
public function getOffice2003Compatibility () {
-
return $this->_office2003compatibility ;
-
-
-
-
* Set Pre-Calculate Formulas
-
-
* @param boolean $pValue Office2003 compatibility?
-
-
public function setOffice2003Compatibility ($pValue = false) {
-
$this->_office2003compatibility = $pValue;
-
-
-
-
* Get use disk caching where possible?
-
-
-
-
public function getUseDiskCaching () {
-
return $this->_useDiskCaching ;
-
-
-
-
* Set use disk caching where possible?
-
-
-
* @param string $pDirectory Disk caching directory
-
* @throws Exception Exception when directory does not exist
-
-
public function setUseDiskCaching ($pValue = false, $pDirectory = null) {
-
$this->_useDiskCaching = $pValue;
-
-
-
-
$this->_diskCachingDirectory = $pDirectory;
-
-
throw new Exception("Directory does not exist: $pDirectory");
-
-
-
-
-
-
* Get disk caching directory
-
-
-
-
public function getDiskCachingDirectory () {
-
return $this->_diskCachingDirectory ;
-
-
-
-
-
-
* @return PHPPowerPoint_Writer_PowerPoint2007_LayoutPack
-
-
public function getLayoutPack () {
-
return $this->_layoutPack ;
-
-
-
-
-
-
* @param PHPPowerPoint_Writer_PowerPoint2007_LayoutPack $pValue
-
-
public function setLayoutPack (PHPPowerPoint_Writer_PowerPoint2007_LayoutPack $pValue = null) {
-
$this->_layoutPack = $pValue;
-
-
|