Merge pull request #40 from gavroche/master

PR40 - Added support for Composer, Images Wrapping, Unit Testing and started re-writing code to be PSR-2 compliant
This commit is contained in:
Progi1984 2013-12-16 04:14:06 -08:00
commit a4b6b843ad
88 changed files with 10852 additions and 10131 deletions

13
.gitignore vendored
View File

@ -1,9 +1,18 @@
.DS_Store
._*
.Spotlight-V100
.Trashes
Thumbs.db
Desktop.ini
.idea
phpunit.xml
composer.lock
composer.phar
vendor
/.settings /.settings
/.buildpath /.buildpath
/.project /.project
/docs /docs
*.odt *.odt
*.docx *.docx
*.rtf *.rtf

336
Classes/PHPWord.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,13 +20,13 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** PHPWORD_BASE_PATH */ /** PHPWORD_BASE_PATH */
if(!defined('PHPWORD_BASE_PATH')) { if (!defined('PHPWORD_BASE_PATH')) {
define('PHPWORD_BASE_PATH', dirname(__FILE__) . '/'); define('PHPWORD_BASE_PATH', dirname(__FILE__) . '/');
require PHPWORD_BASE_PATH . 'PHPWord/Autoloader.php'; require PHPWORD_BASE_PATH . 'PHPWord/Autoloader.php';
PHPWord_Autoloader::Register(); PHPWord_Autoloader::Register();
@ -35,182 +35,194 @@ if(!defined('PHPWORD_BASE_PATH')) {
/** /**
* PHPWord * PHPWord
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord { class PHPWord
{
/** /**
* Document properties * Document properties
* *
* @var PHPWord_DocumentProperties * @var PHPWord_DocumentProperties
*/ */
private $_properties; private $_properties;
/** /**
* Default Font Name * Default Font Name
* *
* @var string * @var string
*/ */
private $_defaultFontName; private $_defaultFontName;
/** /**
* Default Font Size * Default Font Size
* *
* @var int * @var int
*/ */
private $_defaultFontSize; private $_defaultFontSize;
/** /**
* Collection of section elements * Collection of section elements
* *
* @var array * @var array
*/ */
private $_sectionCollection = array(); private $_sectionCollection = array();
/** /**
* Create a new PHPWord Document * Create a new PHPWord Document
*/ */
public function __construct() { public function __construct()
$this->_properties = new PHPWord_DocumentProperties(); {
$this->_defaultFontName = 'Arial'; $this->_properties = new PHPWord_DocumentProperties();
$this->_defaultFontSize = 20; $this->_defaultFontName = 'Arial';
} $this->_defaultFontSize = 20;
}
/** /**
* Get properties * Get properties
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function getProperties() { public function getProperties()
return $this->_properties; {
} return $this->_properties;
}
/** /**
* Set properties * Set properties
* *
* @param PHPWord_DocumentProperties $value * @param PHPWord_DocumentProperties $value
* @return PHPWord * @return PHPWord
*/ */
public function setProperties(PHPWord_DocumentProperties $value) { public function setProperties(PHPWord_DocumentProperties $value)
$this->_properties = $value; {
return $this; $this->_properties = $value;
} return $this;
}
/** /**
* Create a new Section * Create a new Section
* *
* @param PHPWord_Section_Settings $settings * @param PHPWord_Section_Settings $settings
* @return PHPWord_Section * @return PHPWord_Section
*/ */
public function createSection($settings = null) { public function createSection($settings = null)
$sectionCount = $this->_countSections() + 1; {
$sectionCount = $this->_countSections() + 1;
$section = new PHPWord_Section($sectionCount, $settings); $section = new PHPWord_Section($sectionCount, $settings);
$this->_sectionCollection[] = $section; $this->_sectionCollection[] = $section;
return $section; return $section;
} }
/** /**
* Get default Font name * Get default Font name
* @return string * @return string
*/ */
public function getDefaultFontName() { public function getDefaultFontName()
return $this->_defaultFontName; {
} return $this->_defaultFontName;
}
/** /**
* Set default Font name * Set default Font name
* @param string $pValue * @param string $pValue
*/ */
public function setDefaultFontName($pValue) { public function setDefaultFontName($pValue)
$this->_defaultFontName = $pValue; {
} $this->_defaultFontName = $pValue;
}
/** /**
* Get default Font size * Get default Font size
* @return string * @return string
*/ */
public function getDefaultFontSize() { public function getDefaultFontSize()
return $this->_defaultFontSize; {
} return $this->_defaultFontSize;
}
/** /**
* Set default Font size * Set default Font size
* @param int $pValue * @param int $pValue
*/ */
public function setDefaultFontSize($pValue) { public function setDefaultFontSize($pValue)
$pValue = $pValue * 2; {
$this->_defaultFontSize = $pValue; $pValue = $pValue * 2;
} $this->_defaultFontSize = $pValue;
}
/** /**
* Adds a paragraph style definition to styles.xml * Adds a paragraph style definition to styles.xml
* *
* @param $styleName string * @param $styleName string
* @param $styles array * @param $styles array
*/ */
public function addParagraphStyle($styleName, $styles) { public function addParagraphStyle($styleName, $styles)
PHPWord_Style::addParagraphStyle($styleName, $styles); {
} PHPWord_Style::addParagraphStyle($styleName, $styles);
}
/** /**
* Adds a font style definition to styles.xml * Adds a font style definition to styles.xml
* *
* @param $styleName string * @param $styleName string
* @param $styles array * @param $styles array
*/ */
public function addFontStyle($styleName, $styleFont, $styleParagraph = null) { public function addFontStyle($styleName, $styleFont, $styleParagraph = null)
PHPWord_Style::addFontStyle($styleName, $styleFont, $styleParagraph); {
} PHPWord_Style::addFontStyle($styleName, $styleFont, $styleParagraph);
}
/** /**
* Adds a table style definition to styles.xml * Adds a table style definition to styles.xml
* *
* @param $styleName string * @param $styleName string
* @param $styles array * @param $styles array
*/ */
public function addTableStyle($styleName, $styleTable, $styleFirstRow = null) { public function addTableStyle($styleName, $styleTable, $styleFirstRow = null)
PHPWord_Style::addTableStyle($styleName, $styleTable, $styleFirstRow); {
} PHPWord_Style::addTableStyle($styleName, $styleTable, $styleFirstRow);
}
/** /**
* Adds a heading style definition to styles.xml * Adds a heading style definition to styles.xml
* *
* @param $titleCount int * @param $titleCount int
* @param $styles array * @param $styles array
*/ */
public function addTitleStyle($titleCount, $styleFont, $styleParagraph = null) { public function addTitleStyle($titleCount, $styleFont, $styleParagraph = null)
PHPWord_Style::addTitleStyle($titleCount, $styleFont, $styleParagraph); {
} PHPWord_Style::addTitleStyle($titleCount, $styleFont, $styleParagraph);
}
/** /**
* Adds a hyperlink style to styles.xml * Adds a hyperlink style to styles.xml
* *
* @param $styleName string * @param $styleName string
* @param $styles array * @param $styles array
*/ */
public function addLinkStyle($styleName, $styles) { public function addLinkStyle($styleName, $styles)
PHPWord_Style::addLinkStyle($styleName, $styles); {
} PHPWord_Style::addLinkStyle($styleName, $styles);
}
/** /**
* Get sections * Get sections
* @return PHPWord_Section[] * @return PHPWord_Section[]
*/ */
public function getSections() { public function getSections()
return $this->_sectionCollection; {
} return $this->_sectionCollection;
}
/** /**
* Get section count * Get section count
* @return int * @return int
*/ */
private function _countSections() { private function _countSections()
return count($this->_sectionCollection); {
} return count($this->_sectionCollection);
}
/** /**
* Load a Template File * Load a Template File
@ -218,13 +230,13 @@ class PHPWord {
* @param string $strFilename * @param string $strFilename
* @return PHPWord_Template * @return PHPWord_Template
*/ */
public function loadTemplate($strFilename) { public function loadTemplate($strFilename)
if(file_exists($strFilename)) { {
if (file_exists($strFilename)) {
$template = new PHPWord_Template($strFilename); $template = new PHPWord_Template($strFilename);
return $template; return $template;
} else { } else {
trigger_error('Template file '.$strFilename.' not found.', E_USER_ERROR); trigger_error('Template file ' . $strFilename . ' not found.', E_USER_ERROR);
} }
} }
} }
?>

53
Classes/PHPWord/Autoloader.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,29 +20,44 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
if (!defined('PHPWORD_BASE_PATH')) {
define('PHPWORD_BASE_PATH', realpath(__DIR__ . '/../') . '/');
}
/**
* Class PHPWord_Autoloader
*/
class PHPWord_Autoloader class PHPWord_Autoloader
{ {
public static function Register() { /**
return spl_autoload_register(array('PHPWord_Autoloader', 'Load')); * Register the autoloader
} *
* @return void
*/
public static function register()
{
spl_autoload_register(array('PHPWord_Autoloader', 'load'));
}
public static function Load($strObjectName) { /**
if((class_exists($strObjectName)) || (strpos($strObjectName, 'PHPWord') === false)) { * Autoloader
return false; *
} * @param string $strObjectName
* @return mixed
*/
public static function load($strObjectName)
{
$strObjectFilePath = __DIR__ . '/../' . str_replace('_', '/', $strObjectName) . '.php';
if (file_exists($strObjectFilePath) && is_readable($strObjectFilePath)) {
require_once $strObjectFilePath;
return true;
}
$strObjectFilePath = PHPWORD_BASE_PATH . str_replace('_', '/', $strObjectName) . '.php'; return null;
}
if((file_exists($strObjectFilePath) === false) || (is_readable($strObjectFilePath) === false)) {
return false;
}
require($strObjectFilePath);
}
} }
?>

560
Classes/PHPWord/DocumentProperties.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,311 +20,327 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_DocumentProperties * Class PHPWord_DocumentProperties
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2009 - 2011 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_DocumentProperties { class PHPWord_DocumentProperties
{
/** /**
* Creator * Creator
* *
* @var string * @var string
*/ */
private $_creator; private $_creator;
/** /**
* LastModifiedBy * LastModifiedBy
* *
* @var string * @var string
*/ */
private $_lastModifiedBy; private $_lastModifiedBy;
/** /**
* Created * Created
* *
* @var datetime * @var datetime
*/ */
private $_created; private $_created;
/** /**
* Modified * Modified
* *
* @var datetime * @var datetime
*/ */
private $_modified; private $_modified;
/** /**
* Title * Title
* *
* @var string * @var string
*/ */
private $_title; private $_title;
/** /**
* Description * Description
* *
* @var string * @var string
*/ */
private $_description; private $_description;
/** /**
* Subject * Subject
* *
* @var string * @var string
*/ */
private $_subject; private $_subject;
/** /**
* Keywords * Keywords
* *
* @var string * @var string
*/ */
private $_keywords; private $_keywords;
/** /**
* Category * Category
* *
* @var string * @var string
*/ */
private $_category; private $_category;
/** /**
* Company * Company
* *
* @var string * @var string
*/ */
private $_company; private $_company;
/** /**
* Create new PHPWord_DocumentProperties * Create new PHPWord_DocumentProperties
*/ */
public function __construct() { public function __construct()
$this->_creator = ''; {
$this->_lastModifiedBy = $this->_creator; $this->_creator = '';
$this->_created = time(); $this->_lastModifiedBy = $this->_creator;
$this->_modified = time(); $this->_created = time();
$this->_title = ''; $this->_modified = time();
$this->_subject = ''; $this->_title = '';
$this->_description = ''; $this->_subject = '';
$this->_keywords = ''; $this->_description = '';
$this->_category = ''; $this->_keywords = '';
$this->_company = ''; $this->_category = '';
} $this->_company = '';
}
/** /**
* Get Creator * Get Creator
* *
* @return string * @return string
*/ */
public function getCreator() { public function getCreator()
return $this->_creator; {
} return $this->_creator;
}
/** /**
* Set Creator * Set Creator
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setCreator($pValue = '') { public function setCreator($pValue = '')
$this->_creator = $pValue; {
return $this; $this->_creator = $pValue;
} return $this;
}
/** /**
* Get Last Modified By * Get Last Modified By
* *
* @return string * @return string
*/ */
public function getLastModifiedBy() { public function getLastModifiedBy()
return $this->_lastModifiedBy; {
} return $this->_lastModifiedBy;
}
/** /**
* Set Last Modified By * Set Last Modified By
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setLastModifiedBy($pValue = '') { public function setLastModifiedBy($pValue = '')
$this->_lastModifiedBy = $pValue; {
return $this; $this->_lastModifiedBy = $pValue;
} return $this;
}
/** /**
* Get Created * Get Created
* *
* @return datetime * @return datetime
*/ */
public function getCreated() { public function getCreated()
return $this->_created; {
} return $this->_created;
}
/** /**
* Set Created * Set Created
* *
* @param datetime $pValue * @param datetime $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setCreated($pValue = null) { public function setCreated($pValue = null)
if (is_null($pValue)) { {
$pValue = time(); if (is_null($pValue)) {
} $pValue = time();
$this->_created = $pValue; }
return $this; $this->_created = $pValue;
} return $this;
}
/** /**
* Get Modified * Get Modified
* *
* @return datetime * @return datetime
*/ */
public function getModified() { public function getModified()
return $this->_modified; {
} return $this->_modified;
}
/** /**
* Set Modified * Set Modified
* *
* @param datetime $pValue * @param datetime $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setModified($pValue = null) { public function setModified($pValue = null)
if (is_null($pValue)) { {
$pValue = time(); if (is_null($pValue)) {
} $pValue = time();
$this->_modified = $pValue; }
return $this; $this->_modified = $pValue;
} return $this;
}
/** /**
* Get Title * Get Title
* *
* @return string * @return string
*/ */
public function getTitle() { public function getTitle()
return $this->_title; {
} return $this->_title;
}
/** /**
* Set Title * Set Title
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setTitle($pValue = '') { public function setTitle($pValue = '')
$this->_title = $pValue; {
return $this; $this->_title = $pValue;
} return $this;
}
/** /**
* Get Description * Get Description
* *
* @return string * @return string
*/ */
public function getDescription() { public function getDescription()
return $this->_description; {
} return $this->_description;
}
/** /**
* Set Description * Set Description
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setDescription($pValue = '') { public function setDescription($pValue = '')
$this->_description = $pValue; {
return $this; $this->_description = $pValue;
} return $this;
}
/** /**
* Get Subject * Get Subject
* *
* @return string * @return string
*/ */
public function getSubject() { public function getSubject()
return $this->_subject; {
} return $this->_subject;
}
/** /**
* Set Subject * Set Subject
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setSubject($pValue = '') { public function setSubject($pValue = '')
$this->_subject = $pValue; {
return $this; $this->_subject = $pValue;
} return $this;
}
/** /**
* Get Keywords * Get Keywords
* *
* @return string * @return string
*/ */
public function getKeywords() { public function getKeywords()
return $this->_keywords; {
} return $this->_keywords;
}
/** /**
* Set Keywords * Set Keywords
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setKeywords($pValue = '') { public function setKeywords($pValue = '')
$this->_keywords = $pValue; {
return $this; $this->_keywords = $pValue;
} return $this;
}
/** /**
* Get Category * Get Category
* *
* @return string * @return string
*/ */
public function getCategory() { public function getCategory()
return $this->_category; {
} return $this->_category;
}
/** /**
* Set Category * Set Category
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setCategory($pValue = '') { public function setCategory($pValue = '')
$this->_category = $pValue; {
return $this; $this->_category = $pValue;
} return $this;
}
/** /**
* Get Company * Get Company
* *
* @return string * @return string
*/ */
public function getCompany() { public function getCompany()
return $this->_company; {
} return $this->_company;
}
/** /**
* Set Company * Set Company
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_DocumentProperties * @return PHPWord_DocumentProperties
*/ */
public function setCompany($pValue = '') { public function setCompany($pValue = '')
$this->_company = $pValue; {
return $this; $this->_company = $pValue;
} return $this;
}
} }
?>

45
Classes/PHPWord/Exception.php Normal file → Executable file
View File

@ -20,33 +20,30 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Exception * Class PHPWord_Exception
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2006 - 2013 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Exception extends Exception { class PHPWord_Exception extends Exception
/** {
* Error handler callback /**
* * Error handler callback
* @param mixed $code *
* @param mixed $string * @param mixed $code
* @param mixed $file * @param mixed $string
* @param mixed $line * @param mixed $file
* @param mixed $context * @param mixed $line
*/ * @param mixed $context
public static function errorHandlerCallback($code, $string, $file, $line, $context) { */
$e = new self($string, $code); public static function errorHandlerCallback($code, $string, $file, $line, $context)
$e->line = $line; {
$e->file = $file; $e = new self($string, $code);
throw $e; $e->line = $line;
} $e->file = $file;
throw $e;
}
} }

187
Classes/PHPWord/HashTable.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,18 +20,13 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_HashTable * PHPWord_HashTable
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_HashTable class PHPWord_HashTable
{ {
@ -52,25 +47,26 @@ class PHPWord_HashTable
/** /**
* Create a new PHPWord_HashTable * Create a new PHPWord_HashTable
* *
* @param PHPWord_IComparable[] $pSource Optional source array to create HashTable from * @param PHPWord_IComparable[] $pSource Optional source array to create HashTable from
* @throws Exception * @throws Exception
*/ */
public function __construct($pSource = null) public function __construct($pSource = null)
{ {
if (!is_null($pSource)) { if (!is_null($pSource)) {
// Create HashTable // Create HashTable
$this->addFromSource($pSource); $this->addFromSource($pSource);
} }
} }
/** /**
* Add HashTable items from source * Add HashTable items from source
* *
* @param PHPWord_IComparable[] $pSource Source array to create HashTable from * @param PHPWord_IComparable[] $pSource Source array to create HashTable from
* @throws Exception * @throws Exception
*/ */
public function addFromSource($pSource = null) { public function addFromSource($pSource = null)
// Check if an array was passed {
// Check if an array was passed
if ($pSource == null) { if ($pSource == null) {
return; return;
} else if (!is_array($pSource)) { } else if (!is_array($pSource)) {
@ -85,63 +81,66 @@ class PHPWord_HashTable
/** /**
* Add HashTable item * Add HashTable item
* *
* @param PHPWord_IComparable $pSource Item to add * @param PHPWord_IComparable $pSource Item to add
* @throws Exception * @throws Exception
*/ */
public function add(PHPWord_IComparable $pSource = null) { public function add(PHPWord_IComparable $pSource = null)
// Determine hashcode {
$hashCode = null; // Determine hashcode
$hashIndex = $pSource->getHashIndex(); $hashCode = null;
if ( is_null ( $hashIndex ) ) { $hashIndex = $pSource->getHashIndex();
$hashCode = $pSource->getHashCode(); if (is_null($hashIndex)) {
} else if ( isset ( $this->_keyMap[$hashIndex] ) ) { $hashCode = $pSource->getHashCode();
$hashCode = $this->_keyMap[$hashIndex]; } else if (isset ($this->_keyMap[$hashIndex])) {
} else { $hashCode = $this->_keyMap[$hashIndex];
$hashCode = $pSource->getHashCode(); } else {
} $hashCode = $pSource->getHashCode();
}
// Add value // Add value
if (!isset($this->_items[ $hashCode ])) { if (!isset($this->_items[$hashCode])) {
$this->_items[ $hashCode ] = $pSource; $this->_items[$hashCode] = $pSource;
$index = count($this->_items) - 1; $index = count($this->_items) - 1;
$this->_keyMap[ $index ] = $hashCode; $this->_keyMap[$index] = $hashCode;
$pSource->setHashIndex( $index ); $pSource->setHashIndex($index);
} else { } else {
$pSource->setHashIndex( $this->_items[ $hashCode ]->getHashIndex() ); $pSource->setHashIndex($this->_items[$hashCode]->getHashIndex());
} }
} }
/** /**
* Remove HashTable item * Remove HashTable item
* *
* @param PHPWord_IComparable $pSource Item to remove * @param PHPWord_IComparable $pSource Item to remove
* @throws Exception * @throws Exception
*/ */
public function remove(PHPWord_IComparable $pSource = null) { public function remove(PHPWord_IComparable $pSource = null)
if (isset($this->_items[ $pSource->getHashCode() ])) { {
unset($this->_items[ $pSource->getHashCode() ]); if (isset($this->_items[$pSource->getHashCode()])) {
unset($this->_items[$pSource->getHashCode()]);
$deleteKey = -1; $deleteKey = -1;
foreach ($this->_keyMap as $key => $value) { foreach ($this->_keyMap as $key => $value) {
if ($deleteKey >= 0) { if ($deleteKey >= 0) {
$this->_keyMap[$key - 1] = $value; $this->_keyMap[$key - 1] = $value;
} }
if ($value == $pSource->getHashCode()) { if ($value == $pSource->getHashCode()) {
$deleteKey = $key; $deleteKey = $key;
} }
} }
unset($this->_keyMap[ count($this->_keyMap) - 1 ]); unset($this->_keyMap[count($this->_keyMap) - 1]);
} }
} }
/** /**
* Clear HashTable * Clear HashTable
* *
*/ */
public function clear() { public function clear()
$this->_items = array(); {
$this->_keyMap = array(); $this->_items = array();
$this->_keyMap = array();
} }
/** /**
@ -149,48 +148,52 @@ class PHPWord_HashTable
* *
* @return int * @return int
*/ */
public function count() { public function count()
return count($this->_items); {
return count($this->_items);
} }
/** /**
* Get index for hash code * Get index for hash code
* *
* @param string $pHashCode * @param string $pHashCode
* @return int Index * @return int Index
*/ */
public function getIndexForHashCode($pHashCode = '') { public function getIndexForHashCode($pHashCode = '')
return array_search($pHashCode, $this->_keyMap); {
return array_search($pHashCode, $this->_keyMap);
} }
/** /**
* Get by index * Get by index
* *
* @param int $pIndex * @param int $pIndex
* @return PHPWord_IComparable * @return PHPWord_IComparable
* *
*/ */
public function getByIndex($pIndex = 0) { public function getByIndex($pIndex = 0)
if (isset($this->_keyMap[$pIndex])) { {
return $this->getByHashCode( $this->_keyMap[$pIndex] ); if (isset($this->_keyMap[$pIndex])) {
} return $this->getByHashCode($this->_keyMap[$pIndex]);
}
return null; return null;
} }
/** /**
* Get by hashcode * Get by hashcode
* *
* @param string $pHashCode * @param string $pHashCode
* @return PHPWord_IComparable * @return PHPWord_IComparable
* *
*/ */
public function getByHashCode($pHashCode = '') { public function getByHashCode($pHashCode = '')
if (isset($this->_items[$pHashCode])) { {
return $this->_items[$pHashCode]; if (isset($this->_items[$pHashCode])) {
} return $this->_items[$pHashCode];
}
return null; return null;
} }
/** /**
@ -198,19 +201,21 @@ class PHPWord_HashTable
* *
* @return PHPWord_IComparable[] * @return PHPWord_IComparable[]
*/ */
public function toArray() { public function toArray()
return $this->_items; {
return $this->_items;
} }
/** /**
* Implement PHP __clone to create a deep clone, not just a shallow copy. * Implement PHP __clone to create a deep clone, not just a shallow copy.
*/ */
public function __clone() { public function __clone()
$vars = get_object_vars($this); {
foreach ($vars as $key => $value) { $vars = get_object_vars($this);
if (is_object($value)) { foreach ($vars as $key => $value) {
$this->$key = clone $value; if (is_object($value)) {
} $this->$key = clone $value;
} }
} }
}
} }

167
Classes/PHPWord/IOFactory.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,101 +20,102 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_IOFactory * Class PHPWord_IOFactory
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_IOFactory { class PHPWord_IOFactory
{
/** /**
* Search locations * Search locations
* *
* @var array * @var array
*/ */
private static $_searchLocations = array( private static $_searchLocations = array(
array('type' => 'IWriter', 'path' => 'PHPWord/Writer/{0}.php', 'class' => 'PHPWord_Writer_{0}') array('type' => 'IWriter', 'path' => 'PHPWord/Writer/{0}.php', 'class' => 'PHPWord_Writer_{0}')
); );
/** /**
* Autoresolve classes * Autoresolve classes
* *
* @var array * @var array
*/ */
private static $_autoResolveClasses = array( private static $_autoResolveClasses = array(
'Serialized' 'Serialized'
); );
/** /**
* Private constructor for PHPWord_IOFactory * Private constructor for PHPWord_IOFactory
*/ */
private function __construct() { } private function __construct()
{
}
/** /**
* Get search locations * Get search locations
* *
* @return array * @return array
*/ */
public static function getSearchLocations() { public static function getSearchLocations()
return self::$_searchLocations; {
} return self::$_searchLocations;
}
/** /**
* Set search locations * Set search locations
* *
* @param array $value * @param array $value
* @throws Exception * @throws Exception
*/ */
public static function setSearchLocations($value) { public static function setSearchLocations($value)
if (is_array($value)) { {
self::$_searchLocations = $value; if (is_array($value)) {
} else { self::$_searchLocations = $value;
throw new Exception('Invalid parameter passed.'); } else {
} throw new Exception('Invalid parameter passed.');
} }
}
/** /**
* Add search location * Add search location
* *
* @param string $type Example: IWriter * @param string $type Example: IWriter
* @param string $location Example: PHPWord/Writer/{0}.php * @param string $location Example: PHPWord/Writer/{0}.php
* @param string $classname Example: PHPWord_Writer_{0} * @param string $classname Example: PHPWord_Writer_{0}
*/ */
public static function addSearchLocation($type = '', $location = '', $classname = '') { public static function addSearchLocation($type = '', $location = '', $classname = '')
self::$_searchLocations[] = array( 'type' => $type, 'path' => $location, 'class' => $classname ); {
} self::$_searchLocations[] = array('type' => $type, 'path' => $location, 'class' => $classname);
}
/** /**
* Create PHPWord_Writer_IWriter * Create PHPWord_Writer_IWriter
* *
* @param PHPWord $PHPWord * @param PHPWord $PHPWord
* @param string $writerType Example: Word2007 * @param string $writerType Example: Word2007
* @return PHPWord_Writer_IWriter * @return PHPWord_Writer_IWriter
*/ */
public static function createWriter(PHPWord $PHPWord, $writerType = '') { public static function createWriter(PHPWord $PHPWord, $writerType = '')
$searchType = 'IWriter'; {
$searchType = 'IWriter';
foreach (self::$_searchLocations as $searchLocation) { foreach (self::$_searchLocations as $searchLocation) {
if ($searchLocation['type'] == $searchType) { if ($searchLocation['type'] == $searchType) {
$className = str_replace('{0}', $writerType, $searchLocation['class']); $className = str_replace('{0}', $writerType, $searchLocation['class']);
$classFile = str_replace('{0}', $writerType, $searchLocation['path']); $classFile = str_replace('{0}', $writerType, $searchLocation['path']);
$instance = new $className($PHPWord); $instance = new $className($PHPWord);
if(!is_null($instance)) { if (!is_null($instance)) {
return $instance; return $instance;
} }
} }
} }
throw new Exception("No $searchType found for type $writerType"); throw new Exception("No $searchType found for type $writerType");
} }
} }
?>

527
Classes/PHPWord/Media.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,309 +20,314 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Media * Class PHPWord_Media
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Media { class PHPWord_Media
{
/** /**
* Section Media Elements * Section Media Elements
* *
* @var array * @var array
*/ */
private static $_sectionMedia = array('images'=>array(), private static $_sectionMedia = array('images' => array(),
'embeddings'=>array(), 'embeddings' => array(),
'links'=>array()); 'links' => array());
/** /**
* Header Media Elements * Header Media Elements
* *
* @var array * @var array
*/ */
private static $_headerMedia = array(); private static $_headerMedia = array();
/** /**
* Footer Media Elements * Footer Media Elements
* *
* @var array * @var array
*/ */
private static $_footerMedia = array(); private static $_footerMedia = array();
/** /**
* ObjectID Counter * ObjectID Counter
* *
* @var int * @var int
*/ */
private static $_objectId = 1325353440; private static $_objectId = 1325353440;
/** /**
* Add new Section Media Element * Add new Section Media Element
* *
* @param string $src * @param string $src
* @param string $type * @param string $type
* * @return mixed
* @return mixed */
*/ public static function addSectionMediaElement($src, $type, PHPWord_Section_MemoryImage $memoryImage = null)
public static function addSectionMediaElement($src, $type, PHPWord_Section_MemoryImage $memoryImage = null) { {
$mediaId = md5($src); $mediaId = md5($src);
$key = ($type == 'image') ? 'images' : 'embeddings'; $key = ($type == 'image') ? 'images' : 'embeddings';
if(!array_key_exists($mediaId, self::$_sectionMedia[$key])) { if (!array_key_exists($mediaId, self::$_sectionMedia[$key])) {
$cImg = self::countSectionMediaElements('images'); $cImg = self::countSectionMediaElements('images');
$cObj = self::countSectionMediaElements('embeddings'); $cObj = self::countSectionMediaElements('embeddings');
$rID = self::countSectionMediaElements() + 7; $rID = self::countSectionMediaElements() + 7;
$media = array(); $media = array();
if($type == 'image') { if ($type == 'image') {
$cImg++; $cImg++;
$inf = pathinfo($src); $inf = pathinfo($src);
$isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php' && $type == 'image') ? true : false; $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php' && $type == 'image') ? true : false;
if($isMemImage) { if ($isMemImage) {
$ext = $memoryImage->getImageExtension(); $ext = $memoryImage->getImageExtension();
$media['isMemImage'] = true; $media['isMemImage'] = true;
$media['createfunction'] = $memoryImage->getImageCreateFunction(); $media['createfunction'] = $memoryImage->getImageCreateFunction();
$media['imagefunction'] = $memoryImage->getImageFunction(); $media['imagefunction'] = $memoryImage->getImageFunction();
} else { } else {
$ext = $inf['extension']; $ext = $inf['extension'];
if($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg if ($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg
$ext = 'jpg'; $ext = 'jpg';
} }
} }
$folder = 'media'; $folder = 'media';
$file = $type.$cImg.'.'.strtolower($ext); $file = $type . $cImg . '.' . strtolower($ext);
} elseif($type == 'oleObject') { } elseif ($type == 'oleObject') {
$cObj++; $cObj++;
$folder = 'embedding'; $folder = 'embedding';
$file = $type.$cObj.'.bin'; $file = $type . $cObj . '.bin';
} }
$media['source'] = $src; $media['source'] = $src;
$media['target'] = "$folder/section_$file"; $media['target'] = "$folder/section_$file";
$media['type'] = $type; $media['type'] = $type;
$media['rID'] = $rID; $media['rID'] = $rID;
self::$_sectionMedia[$key][$mediaId] = $media; self::$_sectionMedia[$key][$mediaId] = $media;
if($type == 'oleObject') { if ($type == 'oleObject') {
return array($rID, ++self::$_objectId); return array($rID, ++self::$_objectId);
} else { } else {
return $rID; return $rID;
} }
} else { } else {
if($type == 'oleObject') { if ($type == 'oleObject') {
$rID = self::$_sectionMedia[$key][$mediaId]['rID']; $rID = self::$_sectionMedia[$key][$mediaId]['rID'];
return array($rID, ++self::$_objectId); return array($rID, ++self::$_objectId);
} else { } else {
return self::$_sectionMedia[$key][$mediaId]['rID']; return self::$_sectionMedia[$key][$mediaId]['rID'];
} }
} }
} }
/** /**
* Add new Section Link Element * Add new Section Link Element
* *
* @param string $linkSrc * @param string $linkSrc
* @param string $linkName * @param string $linkName
* *
* @return mixed * @return mixed
*/ */
public static function addSectionLinkElement($linkSrc) { public static function addSectionLinkElement($linkSrc)
$rID = self::countSectionMediaElements() + 7; {
$rID = self::countSectionMediaElements() + 7;
$link = array(); $link = array();
$link['target'] = $linkSrc; $link['target'] = $linkSrc;
$link['rID'] = $rID; $link['rID'] = $rID;
$link['type'] = 'hyperlink'; $link['type'] = 'hyperlink';
self::$_sectionMedia['links'][] = $link; self::$_sectionMedia['links'][] = $link;
return $rID; return $rID;
} }
/** /**
* Get Section Media Elements * Get Section Media Elements
* *
* @param string $key * @param string $key
* @return array * @return array
*/ */
public static function getSectionMediaElements($key = null) { public static function getSectionMediaElements($key = null)
if(!is_null($key)) { {
return self::$_sectionMedia[$key]; if (!is_null($key)) {
} else { return self::$_sectionMedia[$key];
$arrImages = self::$_sectionMedia['images']; } else {
$arrObjects = self::$_sectionMedia['embeddings']; $arrImages = self::$_sectionMedia['images'];
$arrLinks = self::$_sectionMedia['links']; $arrObjects = self::$_sectionMedia['embeddings'];
return array_merge($arrImages, $arrObjects, $arrLinks); $arrLinks = self::$_sectionMedia['links'];
} return array_merge($arrImages, $arrObjects, $arrLinks);
} }
}
/** /**
* Get Section Media Elements Count * Get Section Media Elements Count
* *
* @param string $key * @param string $key
* @return int * @return int
*/ */
public static function countSectionMediaElements($key = null) { public static function countSectionMediaElements($key = null)
if(!is_null($key)) { {
return count(self::$_sectionMedia[$key]); if (!is_null($key)) {
} else { return count(self::$_sectionMedia[$key]);
$cImages = count(self::$_sectionMedia['images']); } else {
$cObjects = count(self::$_sectionMedia['embeddings']); $cImages = count(self::$_sectionMedia['images']);
$cLinks = count(self::$_sectionMedia['links']); $cObjects = count(self::$_sectionMedia['embeddings']);
return ($cImages + $cObjects + $cLinks); $cLinks = count(self::$_sectionMedia['links']);
} return ($cImages + $cObjects + $cLinks);
} }
}
/** /**
* Add new Header Media Element * Add new Header Media Element
* *
* @param int $headerCount * @param int $headerCount
* @param string $src * @param string $src
* @return int * @return int
*/ */
public static function addHeaderMediaElement($headerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null) { public static function addHeaderMediaElement($headerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null)
$mediaId = md5($src); {
$key = 'header'.$headerCount; $mediaId = md5($src);
$key = 'header' . $headerCount;
if(!array_key_exists($key, self::$_headerMedia)) { if (!array_key_exists($key, self::$_headerMedia)) {
self::$_headerMedia[$key] = array(); self::$_headerMedia[$key] = array();
} }
if(!array_key_exists($mediaId, self::$_headerMedia[$key])) { if (!array_key_exists($mediaId, self::$_headerMedia[$key])) {
$cImg = self::countHeaderMediaElements($key); $cImg = self::countHeaderMediaElements($key);
$rID = $cImg + 1; $rID = $cImg + 1;
$cImg++; $cImg++;
$inf = pathinfo($src); $inf = pathinfo($src);
$isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false; $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false;
$media = array(); $media = array();
if($isMemImage) { if ($isMemImage) {
$ext = $memoryImage->getImageExtension(); $ext = $memoryImage->getImageExtension();
$media['isMemImage'] = true; $media['isMemImage'] = true;
$media['createfunction'] = $memoryImage->getImageCreateFunction(); $media['createfunction'] = $memoryImage->getImageCreateFunction();
$media['imagefunction'] = $memoryImage->getImageFunction(); $media['imagefunction'] = $memoryImage->getImageFunction();
} else { } else {
$ext = $inf['extension']; $ext = $inf['extension'];
if($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg if ($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg
$ext = 'jpg'; $ext = 'jpg';
} }
} }
$file = 'image'.$cImg.'.'.strtolower($ext); $file = 'image' . $cImg . '.' . strtolower($ext);
$media['source'] = $src; $media['source'] = $src;
$media['target'] = 'media/'.$key.'_'.$file; $media['target'] = 'media/' . $key . '_' . $file;
$media['type'] = 'image'; $media['type'] = 'image';
$media['rID'] = $rID; $media['rID'] = $rID;
self::$_headerMedia[$key][$mediaId] = $media; self::$_headerMedia[$key][$mediaId] = $media;
return $rID; return $rID;
} else { } else {
return self::$_headerMedia[$key][$mediaId]['rID']; return self::$_headerMedia[$key][$mediaId]['rID'];
} }
} }
/** /**
* Get Header Media Elements Count * Get Header Media Elements Count
* *
* @param string $key * @param string $key
* @return int * @return int
*/ */
public static function countHeaderMediaElements($key) { public static function countHeaderMediaElements($key)
return count(self::$_headerMedia[$key]); {
} return count(self::$_headerMedia[$key]);
}
/** /**
* Get Header Media Elements * Get Header Media Elements
* *
* @return int * @return int
*/ */
public static function getHeaderMediaElements() { public static function getHeaderMediaElements()
return self::$_headerMedia; {
} return self::$_headerMedia;
}
/** /**
* Add new Footer Media Element * Add new Footer Media Element
* *
* @param int $footerCount * @param int $footerCount
* @param string $src * @param string $src
* @return int * @return int
*/ */
public static function addFooterMediaElement($footerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null) { public static function addFooterMediaElement($footerCount, $src, PHPWord_Section_MemoryImage $memoryImage = null)
$mediaId = md5($src); {
$key = 'footer'.$footerCount; $mediaId = md5($src);
$key = 'footer' . $footerCount;
if(!array_key_exists($key, self::$_footerMedia)) { if (!array_key_exists($key, self::$_footerMedia)) {
self::$_footerMedia[$key] = array(); self::$_footerMedia[$key] = array();
} }
if(!array_key_exists($mediaId, self::$_footerMedia[$key])) { if (!array_key_exists($mediaId, self::$_footerMedia[$key])) {
$cImg = self::countFooterMediaElements($key); $cImg = self::countFooterMediaElements($key);
$rID = $cImg + 1; $rID = $cImg + 1;
$cImg++; $cImg++;
$inf = pathinfo($src); $inf = pathinfo($src);
$isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false; $isMemImage = (substr(strtolower($inf['extension']), 0, 3) == 'php') ? true : false;
$media = array(); $media = array();
if($isMemImage) { if ($isMemImage) {
$ext = $memoryImage->getImageExtension(); $ext = $memoryImage->getImageExtension();
$media['isMemImage'] = true; $media['isMemImage'] = true;
$media['createfunction'] = $memoryImage->getImageCreateFunction(); $media['createfunction'] = $memoryImage->getImageCreateFunction();
$media['imagefunction'] = $memoryImage->getImageFunction(); $media['imagefunction'] = $memoryImage->getImageFunction();
} else { } else {
$ext = $inf['extension']; $ext = $inf['extension'];
if($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg if ($ext == 'jpeg') { // Office crashes when adding a jpEg Image, so rename to jpg
$ext = 'jpg'; $ext = 'jpg';
} }
} }
$file = 'image'.$cImg.'.'.strtolower($ext); $file = 'image' . $cImg . '.' . strtolower($ext);
$media['source'] = $src; $media['source'] = $src;
$media['target'] = 'media/'.$key.'_'.$file; $media['target'] = 'media/' . $key . '_' . $file;
$media['type'] = 'image'; $media['type'] = 'image';
$media['rID'] = $rID; $media['rID'] = $rID;
self::$_footerMedia[$key][$mediaId] = $media; self::$_footerMedia[$key][$mediaId] = $media;
return $rID; return $rID;
} else { } else {
return self::$_footerMedia[$key][$mediaId]['rID']; return self::$_footerMedia[$key][$mediaId]['rID'];
} }
} }
/** /**
* Get Footer Media Elements Count * Get Footer Media Elements Count
* *
* @param string $key * @param string $key
* @return int * @return int
*/ */
public static function countFooterMediaElements($key) { public static function countFooterMediaElements($key)
return count(self::$_footerMedia[$key]); {
} return count(self::$_footerMedia[$key]);
}
/** /**
* Get Footer Media Elements * Get Footer Media Elements
* *
* @return int * @return int
*/ */
public static function getFooterMediaElements() { public static function getFooterMediaElements()
return self::$_footerMedia; {
} return self::$_footerMedia;
}
} }
?>

681
Classes/PHPWord/Section.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,378 +20,393 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section * Class PHPWord_Section
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section { class PHPWord_Section
{
/** /**
* Section count * Section count
* *
* @var int * @var int
*/ */
private $_sectionCount; private $_sectionCount;
/** /**
* Section settings * Section settings
* *
* @var PHPWord_Section_Settings * @var PHPWord_Section_Settings
*/ */
private $_settings; private $_settings;
/** /**
* Section Element Collection * Section Element Collection
* *
* @var array * @var array
*/ */
private $_elementCollection = array(); private $_elementCollection = array();
/** /**
* Section Headers * Section Headers
* *
* @var array * @var array
*/ */
private $_headers = array(); private $_headers = array();
/** /**
* Section Footer * Section Footer
* *
* @var PHPWord_Section_Footer * @var PHPWord_Section_Footer
*/ */
private $_footer = null; private $_footer = null;
/** /**
* Create a new Section * Create a new Section
* *
* @param int $sectionCount * @param int $sectionCount
* @param mixed $settings * @param mixed $settings
*/ */
public function __construct($sectionCount, $settings = null) { public function __construct($sectionCount, $settings = null)
$this->_sectionCount = $sectionCount; {
$this->_settings = new PHPWord_Section_Settings(); $this->_sectionCount = $sectionCount;
$this->_settings = new PHPWord_Section_Settings();
if(!is_null($settings) && is_array($settings)) { if (!is_null($settings) && is_array($settings)) {
foreach($settings as $key => $value) { foreach ($settings as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_settings->setSettingValue($key, $value); $this->_settings->setSettingValue($key, $value);
} }
} }
}
/**
* Get Section Settings
*
* @return PHPWord_Section_Settings
*/
public function getSettings() {
return $this->_settings;
}
/**
* Add a Text Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Text
*/
public function addText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
/** /**
* Add a Link Element * Get Section Settings
* *
* @param string $linkSrc * @return PHPWord_Section_Settings
* @param string $linkName */
* @param mixed $styleFont public function getSettings()
* @param mixed $styleParagraph {
* @return PHPWord_Section_Link return $this->_settings;
*/
public function addLink($linkSrc, $linkName = null, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($linkSrc)){
$linkSrc = utf8_encode($linkSrc);
} }
if(!is_null($linkName)) {
if(!PHPWord_Shared_String::IsUTF8($linkName)){
$linkName = utf8_encode($linkName);
}
}
$link = new PHPWord_Section_Link($linkSrc, $linkName, $styleFont, $styleParagraph); /**
$rID = PHPWord_Media::addSectionLinkElement($linkSrc); * Add a Text Element
$link->setRelationId($rID); *
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Text
*/
public function addText($text, $styleFont = null, $styleParagraph = null)
{
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
$this->_elementCollection[] = $link; /**
return $link; * Add a Link Element
} *
* @param string $linkSrc
* @param string $linkName
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Link
*/
public function addLink($linkSrc, $linkName = null, $styleFont = null, $styleParagraph = null)
{
if (!PHPWord_Shared_String::IsUTF8($linkSrc)) {
$linkSrc = utf8_encode($linkSrc);
}
if (!is_null($linkName)) {
if (!PHPWord_Shared_String::IsUTF8($linkName)) {
$linkName = utf8_encode($linkName);
}
}
/** $link = new PHPWord_Section_Link($linkSrc, $linkName, $styleFont, $styleParagraph);
* Add a TextBreak Element $rID = PHPWord_Media::addSectionLinkElement($linkSrc);
* $link->setRelationId($rID);
* @param int $count
*/
public function addTextBreak($count = 1) {
for($i=1; $i<=$count; $i++) {
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
}
/** $this->_elementCollection[] = $link;
* Add a PageBreak Element return $link;
*/ }
public function addPageBreak() {
$this->_elementCollection[] = new PHPWord_Section_PageBreak();
}
/** /**
* Add a Table Element * Add a TextBreak Element
* *
* @param mixed $style * @param int $count
* @return PHPWord_Section_Table */
*/ public function addTextBreak($count = 1)
public function addTable($style = null) { {
$table = new PHPWord_Section_Table('section', $this->_sectionCount, $style); for ($i = 1; $i <= $count; $i++) {
$this->_elementCollection[] = $table; $this->_elementCollection[] = new PHPWord_Section_TextBreak();
return $table; }
} }
/** /**
* Add a ListItem Element * Add a PageBreak Element
* */
* @param string $text public function addPageBreak()
* @param int $depth {
* @param mixed $styleFont $this->_elementCollection[] = new PHPWord_Section_PageBreak();
}
/**
* Add a Table Element
*
* @param mixed $style
* @return PHPWord_Section_Table
*/
public function addTable($style = null)
{
$table = new PHPWord_Section_Table('section', $this->_sectionCount, $style);
$this->_elementCollection[] = $table;
return $table;
}
/**
* Add a ListItem Element
*
* @param string $text
* @param int $depth
* @param mixed $styleFont
* @param mixed $styleList * @param mixed $styleList
* @param mixed $styleParagraph * @param mixed $styleParagraph
* @return PHPWord_Section_ListItem * @return PHPWord_Section_ListItem
*/ */
public function addListItem($text, $depth = 0, $styleFont = null, $styleList = null, $styleParagraph = null) { public function addListItem($text, $depth = 0, $styleFont = null, $styleList = null, $styleParagraph = null)
if(!PHPWord_Shared_String::IsUTF8($text)){ {
$text = utf8_encode($text); if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$listItem = new PHPWord_Section_ListItem($text, $depth, $styleFont, $styleList, $styleParagraph);
$this->_elementCollection[] = $listItem;
return $listItem;
} }
$listItem = new PHPWord_Section_ListItem($text, $depth, $styleFont, $styleList, $styleParagraph);
$this->_elementCollection[] = $listItem;
return $listItem;
}
/** /**
* Add a OLE-Object Element * Add a OLE-Object Element
* *
* @param string $src * @param string $src
* @param mixed $style * @param mixed $style
* @return PHPWord_Section_Object * @return PHPWord_Section_Object
*/ */
public function addObject($src, $style = null) { public function addObject($src, $style = null)
$object = new PHPWord_Section_Object($src, $style); {
$object = new PHPWord_Section_Object($src, $style);
if(!is_null($object->getSource())) { if (!is_null($object->getSource())) {
$inf = pathinfo($src); $inf = pathinfo($src);
$ext = $inf['extension']; $ext = $inf['extension'];
if(strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') { if (strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') {
$ext = substr($ext, 0, -1); $ext = substr($ext, 0, -1);
} }
$iconSrc = PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/'; $iconSrc = PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/';
if(!file_exists($iconSrc.'_'.$ext.'.png')) { if (!file_exists($iconSrc . '_' . $ext . '.png')) {
$iconSrc = $iconSrc.'_default.png'; $iconSrc = $iconSrc . '_default.png';
} else { } else {
$iconSrc .= '_'.$ext.'.png'; $iconSrc .= '_' . $ext . '.png';
} }
$rIDimg = PHPWord_Media::addSectionMediaElement($iconSrc, 'image'); $rIDimg = PHPWord_Media::addSectionMediaElement($iconSrc, 'image');
$data = PHPWord_Media::addSectionMediaElement($src, 'oleObject'); $data = PHPWord_Media::addSectionMediaElement($src, 'oleObject');
$rID = $data[0]; $rID = $data[0];
$objectId = $data[1]; $objectId = $data[1];
$object->setRelationId($rID); $object->setRelationId($rID);
$object->setObjectId($objectId); $object->setObjectId($objectId);
$object->setImageRelationId($rIDimg); $object->setImageRelationId($rIDimg);
$this->_elementCollection[] = $object; $this->_elementCollection[] = $object;
return $object; return $object;
} else { } else {
trigger_error('Source does not exist or unsupported object type.'); trigger_error('Source does not exist or unsupported object type.');
} }
}
/**
* Add a Image Element
*
* @param string $src
* @param mixed $style
* @return PHPWord_Section_Image
*/
public function addImage($src, $style = null) {
$image = new PHPWord_Section_Image($src, $style);
if(!is_null($image->getSource())) {
$rID = PHPWord_Media::addSectionMediaElement($src, 'image');
$image->setRelationId($rID);
$this->_elementCollection[] = $image;
return $image;
} else {
trigger_error('Source does not exist or unsupported image type.');
}
}
/**
* Add a by PHP created Image Element
*
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null) {
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if(!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addSectionMediaElement($link, 'image', $memoryImage);
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $memoryImage;
return $memoryImage;
} else {
trigger_error('Unsupported image type.');
}
}
/**
* Add a Table-of-Contents Element
*
* @param mixed $styleFont
* @param mixed $styleTOC
* @return PHPWord_TOC
*/
public function addTOC($styleFont = null, $styleTOC = null) {
$toc = new PHPWord_TOC($styleFont, $styleTOC);
$this->_elementCollection[] = $toc;
return $toc;
}
/**
* Add a Title Element
*
* @param string $text
* @param int $depth
* @return PHPWord_Section_Title
*/
public function addTitle($text, $depth = 1) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$styles = PHPWord_Style::getStyles();
if(array_key_exists('Heading_'.$depth, $styles)) {
$style = 'Heading'.$depth;
} else {
$style = null;
}
$title = new PHPWord_Section_Title($text, $depth, $style); /**
* Add a Image Element
*
* @param string $src
* @param mixed $style
* @return PHPWord_Section_Image
*/
public function addImage($src, $style = null)
{
$image = new PHPWord_Section_Image($src, $style);
$data = PHPWord_TOC::addTitle($text, $depth); if (!is_null($image->getSource())) {
$anchor = $data[0]; $rID = PHPWord_Media::addSectionMediaElement($src, 'image');
$bookmarkId = $data[1]; $image->setRelationId($rID);
$title->setAnchor($anchor); $this->_elementCollection[] = $image;
$title->setBookmarkId($bookmarkId); return $image;
} else {
trigger_error('Source does not exist or unsupported image type.');
}
}
$this->_elementCollection[] = $title; /**
return $title; * Add a by PHP created Image Element
} *
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null)
{
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if (!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addSectionMediaElement($link, 'image', $memoryImage);
$memoryImage->setRelationId($rID);
/** $this->_elementCollection[] = $memoryImage;
* Create a new TextRun return $memoryImage;
* } else {
* @return PHPWord_Section_TextRun trigger_error('Unsupported image type.');
*/ }
public function createTextRun($styleParagraph = null) { }
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/** /**
* Get all Elements * Add a Table-of-Contents Element
* *
* @return array * @param mixed $styleFont
*/ * @param mixed $styleTOC
public function getElements() { * @return PHPWord_TOC
return $this->_elementCollection; */
} public function addTOC($styleFont = null, $styleTOC = null)
{
$toc = new PHPWord_TOC($styleFont, $styleTOC);
$this->_elementCollection[] = $toc;
return $toc;
}
/** /**
* Create a new Header * Add a Title Element
* *
* @return PHPWord_Section_Header * @param string $text
*/ * @param int $depth
public function createHeader() { * @return PHPWord_Section_Title
$header = new PHPWord_Section_Header($this->_sectionCount); */
$this->_headers[] = $header; public function addTitle($text, $depth = 1)
return $header; {
} if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$styles = PHPWord_Style::getStyles();
if (array_key_exists('Heading_' . $depth, $styles)) {
$style = 'Heading' . $depth;
} else {
$style = null;
}
/** $title = new PHPWord_Section_Title($text, $depth, $style);
* Get Headers
*
* @return array
*/
public function getHeaders() {
return $this->_headers;
}
/** $data = PHPWord_TOC::addTitle($text, $depth);
* Is there a header for this section that is for the first page only? $anchor = $data[0];
* $bookmarkId = $data[1];
* If any of the PHPWord_Section_Header instances have a type of
* PHPWord_Section_Header::FIRST then this method returns true. False
* otherwise.
*
* @return Boolean
*/
public function hasDifferentFirstPage() {
$value = array_filter($this->_headers, function(PHPWord_Section_Header &$header) {
return $header->getType() == PHPWord_Section_Header::FIRST;
});
return count($value) > 0;
}
/** $title->setAnchor($anchor);
* Create a new Footer $title->setBookmarkId($bookmarkId);
*
* @return PHPWord_Section_Footer
*/
public function createFooter() {
$footer = new PHPWord_Section_Footer($this->_sectionCount);
$this->_footer = $footer;
return $footer;
}
/** $this->_elementCollection[] = $title;
* Get Footer return $title;
* }
* @return PHPWord_Section_Footer
*/ /**
public function getFooter() { * Create a new TextRun
return $this->_footer; *
} * @return PHPWord_Section_TextRun
*/
public function createTextRun($styleParagraph = null)
{
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/**
* Get all Elements
*
* @return array
*/
public function getElements()
{
return $this->_elementCollection;
}
/**
* Create a new Header
*
* @return PHPWord_Section_Header
*/
public function createHeader()
{
$header = new PHPWord_Section_Header($this->_sectionCount);
$this->_headers[] = $header;
return $header;
}
/**
* Get Headers
*
* @return array
*/
public function getHeaders()
{
return $this->_headers;
}
/**
* Is there a header for this section that is for the first page only?
*
* If any of the PHPWord_Section_Header instances have a type of
* PHPWord_Section_Header::FIRST then this method returns true. False
* otherwise.
*
* @return Boolean
*/
public function hasDifferentFirstPage()
{
$value = array_filter($this->_headers, function (PHPWord_Section_Header &$header) {
return $header->getType() == PHPWord_Section_Header::FIRST;
});
return count($value) > 0;
}
/**
* Create a new Footer
*
* @return PHPWord_Section_Footer
*/
public function createFooter()
{
$footer = new PHPWord_Section_Footer($this->_sectionCount);
$this->_footer = $footer;
return $footer;
}
/**
* Get Footer
*
* @return PHPWord_Section_Footer
*/
public function getFooter()
{
return $this->_footer;
}
} }
?>

339
Classes/PHPWord/Section/Footer.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,186 +20,193 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Footer * PHPWord_Section_Footer
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Footer { class PHPWord_Section_Footer
{
/** /**
* Footer Count * Footer Count
* *
* @var int * @var int
*/ */
private $_footerCount; private $_footerCount;
/** /**
* Footer Relation ID * Footer Relation ID
* *
* @var int * @var int
*/ */
private $_rId; private $_rId;
/** /**
* Footer Element Collection * Footer Element Collection
* *
* @var int * @var int
*/ */
private $_elementCollection = array(); private $_elementCollection = array();
/** /**
* Create a new Footer * Create a new Footer
*/ */
public function __construct($sectionCount) { public function __construct($sectionCount)
$this->_footerCount = $sectionCount; {
} $this->_footerCount = $sectionCount;
/**
* Add a Text Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Text
*/
public function addText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
/** /**
* Add a TextBreak Element * Add a Text Element
* *
* @param int $count * @param string $text
*/ * @param mixed $styleFont
public function addTextBreak($count = 1) { * @param mixed $styleParagraph
for($i=1; $i<=$count; $i++) { * @return PHPWord_Section_Text
$this->_elementCollection[] = new PHPWord_Section_TextBreak(); */
} public function addText($text, $styleFont = null, $styleParagraph = null)
} {
if (!PHPWord_Shared_String::IsUTF8($text)) {
/** $text = utf8_encode($text);
* Create a new TextRun }
* $text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
* @return PHPWord_Section_TextRun $this->_elementCollection[] = $text;
*/ return $text;
public function createTextRun($styleParagraph = null) {
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/**
* Add a Table Element
*
* @param mixed $style
* @return PHPWord_Section_Table
*/
public function addTable($style = null) {
$table = new PHPWord_Section_Table('footer', $this->_footerCount, $style);
$this->_elementCollection[] = $table;
return $table;
}
/**
* Add a Image Element
*
* @param string $src
* @param mixed $style
* @return PHPWord_Section_Image
*/
public function addImage($src, $style = null) {
$image = new PHPWord_Section_Image($src, $style);
if(!is_null($image->getSource())) {
$rID = PHPWord_Media::addFooterMediaElement($this->_footerCount, $src);
$image->setRelationId($rID);
$this->_elementCollection[] = $image;
return $image;
} else {
trigger_error('Src does not exist or invalid image type.', E_USER_ERROR);
}
}
/**
* Add a by PHP created Image Element
*
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null) {
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if(!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addFooterMediaElement($this->_footerCount, $link, $memoryImage);
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $memoryImage;
return $memoryImage;
} else {
trigger_error('Unsupported image type.');
}
}
/**
* Add a PreserveText Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Footer_PreserveText
*/
public function addPreserveText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
}
/** /**
* Get Footer Relation ID * Add a TextBreak Element
*/ *
public function getRelationId() { * @param int $count
return $this->_rId; */
} public function addTextBreak($count = 1)
{
for ($i = 1; $i <= $count; $i++) {
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
}
/** /**
* Set Footer Relation ID * Create a new TextRun
* *
* @param int $rId * @return PHPWord_Section_TextRun
*/ */
public function setRelationId($rId) { public function createTextRun($styleParagraph = null)
$this->_rId = $rId; {
} $textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/** /**
* Get all Footer Elements * Add a Table Element
*/ *
public function getElements() { * @param mixed $style
return $this->_elementCollection; * @return PHPWord_Section_Table
} */
public function addTable($style = null)
{
$table = new PHPWord_Section_Table('footer', $this->_footerCount, $style);
$this->_elementCollection[] = $table;
return $table;
}
/** /**
* Get Footer Count * Add a Image Element
*/ *
public function getFooterCount() { * @param string $src
return $this->_footerCount; * @param mixed $style
} * @return PHPWord_Section_Image
*/
public function addImage($src, $style = null)
{
$image = new PHPWord_Section_Image($src, $style);
if (!is_null($image->getSource())) {
$rID = PHPWord_Media::addFooterMediaElement($this->_footerCount, $src);
$image->setRelationId($rID);
$this->_elementCollection[] = $image;
return $image;
} else {
trigger_error('Src does not exist or invalid image type.', E_USER_ERROR);
}
}
/**
* Add a by PHP created Image Element
*
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null)
{
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if (!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addFooterMediaElement($this->_footerCount, $link, $memoryImage);
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $memoryImage;
return $memoryImage;
} else {
trigger_error('Unsupported image type.');
}
}
/**
* Add a PreserveText Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Footer_PreserveText
*/
public function addPreserveText($text, $styleFont = null, $styleParagraph = null)
{
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
}
/**
* Get Footer Relation ID
*/
public function getRelationId()
{
return $this->_rId;
}
/**
* Set Footer Relation ID
*
* @param int $rId
*/
public function setRelationId($rId)
{
$this->_rId = $rId;
}
/**
* Get all Footer Elements
*/
public function getElements()
{
return $this->_elementCollection;
}
/**
* Get Footer Count
*/
public function getFooterCount()
{
return $this->_footerCount;
}
} }
?>

175
Classes/PHPWord/Section/Footer/PreserveText.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,109 +20,108 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Footer_PreserveText * Class PHPWord_Section_Footer_PreserveText
*
* @category PHPWord
* @package PHPWord_Section_Footer
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Footer_PreserveText { class PHPWord_Section_Footer_PreserveText
{
/** /**
* Text content * Text content
* *
* @var string * @var string
*/ */
private $_text; private $_text;
/** /**
* Text style * Text style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleFont; private $_styleFont;
/** /**
* Paragraph style * Paragraph style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleParagraph; private $_styleParagraph;
/** /**
* Create a new Preserve Text Element * Create a new Preserve Text Element
* *
* @var string $text * @var string $text
* @var mixed $style * @var mixed $style
*/ */
public function __construct($text = null, $styleFont = null, $styleParagraph = null) { public function __construct($text = null, $styleFont = null, $styleParagraph = null)
// Set font style {
if(is_array($styleFont)) { // Set font style
$this->_styleFont = new PHPWord_Style_Font('text'); if (is_array($styleFont)) {
$this->_styleFont = new PHPWord_Style_Font('text');
foreach($styleFont as $key => $value) { foreach ($styleFont as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleFont->setStyleValue($key, $value); $this->_styleFont->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleFont = $styleFont; $this->_styleFont = $styleFont;
} }
// Set paragraph style // Set paragraph style
if(is_array($styleParagraph)) { if (is_array($styleParagraph)) {
$this->_styleParagraph = new PHPWord_Style_Paragraph(); $this->_styleParagraph = new PHPWord_Style_Paragraph();
foreach($styleParagraph as $key => $value) { foreach ($styleParagraph as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleParagraph->setStyleValue($key, $value); $this->_styleParagraph->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleParagraph = $styleParagraph; $this->_styleParagraph = $styleParagraph;
} }
$pattern = '/({.*?})/'; $pattern = '/({.*?})/';
$this->_text = preg_split($pattern, $text, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); $this->_text = preg_split($pattern, $text, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
return $this; return $this;
} }
/** /**
* Get Text style * Get Text style
* *
* @return PHPWord_Style_Font * @return PHPWord_Style_Font
*/ */
public function getFontStyle() { public function getFontStyle()
return $this->_styleFont; {
} return $this->_styleFont;
}
/** /**
* Get Paragraph style * Get Paragraph style
* *
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function getParagraphStyle() { public function getParagraphStyle()
return $this->_styleParagraph; {
} return $this->_styleParagraph;
}
/** /**
* Get Text content * Get Text content
* *
* @return string * @return string
*/ */
public function getText() { public function getText()
return $this->_text; {
} return $this->_text;
}
} }
?>

478
Classes/PHPWord/Section/Header.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,265 +20,277 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Header * PHPWord_Section_Header
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Header { class PHPWord_Section_Header
{
/** /**
* Header Count * Header Count
* *
* @var int * @var int
*/ */
private $_headerCount; private $_headerCount;
/** /**
* Header Relation ID * Header Relation ID
* *
* @var int * @var int
*/ */
private $_rId; private $_rId;
/** /**
* Header type * Header type
* *
* @var string * @var string
* @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type * @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type
*/ */
private $_type = PHPWord_Section_Header::AUTO; private $_type = PHPWord_Section_Header::AUTO;
/** /**
* Even Numbered Pages Only * Even Numbered Pages Only
* @var string * @var string
* @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type * @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type
*/ */
const EVEN = 'even'; const EVEN = 'even';
/** /**
* Default Header or Footer * Default Header or Footer
* @var string * @var string
* @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type * @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type
*/ */
const AUTO = 'default'; // Did not use DEFAULT because it is a PHP keyword const AUTO = 'default'; // Did not use DEFAULT because it is a PHP keyword
/** /**
* First Page Only * First Page Only
* @var string * @var string
* @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type * @link http://www.schemacentral.com/sc/ooxml/a-w_type-4.html Header or Footer Type
*/ */
const FIRST = 'first'; const FIRST = 'first';
/** /**
* Header Element Collection * Header Element Collection
* *
* @var int * @var int
*/ */
private $_elementCollection = array(); private $_elementCollection = array();
/** /**
* Create a new Header * Create a new Header
*/ */
public function __construct($sectionCount) { public function __construct($sectionCount)
$this->_headerCount = $sectionCount; {
} $this->_headerCount = $sectionCount;
/**
* Add a Text Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Text
*/
public function addText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
/** /**
* Add a TextBreak Element * Add a Text Element
* *
* @param int $count * @param string $text
*/ * @param mixed $styleFont
public function addTextBreak($count = 1) { * @param mixed $styleParagraph
for($i=1; $i<=$count; $i++) { * @return PHPWord_Section_Text
$this->_elementCollection[] = new PHPWord_Section_TextBreak(); */
} public function addText($text, $styleFont = null, $styleParagraph = null)
} {
if (!PHPWord_Shared_String::IsUTF8($text)) {
/** $text = utf8_encode($text);
* Create a new TextRun }
* $text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
* @return PHPWord_Section_TextRun $this->_elementCollection[] = $text;
*/ return $text;
public function createTextRun($styleParagraph = null) {
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/**
* Add a Table Element
*
* @param mixed $style
* @return PHPWord_Section_Table
*/
public function addTable($style = null) {
$table = new PHPWord_Section_Table('header', $this->_headerCount, $style);
$this->_elementCollection[] = $table;
return $table;
}
/**
* Add a Image Element
*
* @param string $src
* @param mixed $style
* @return PHPWord_Section_Image
*/
public function addImage($src, $style = null) {
$image = new PHPWord_Section_Image($src, $style);
if(!is_null($image->getSource())) {
$rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $src);
$image->setRelationId($rID);
$this->_elementCollection[] = $image;
return $image;
} else {
trigger_error('Src does not exist or invalid image type.', E_USER_ERROR);
}
}
/**
* Add a by PHP created Image Element
*
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null) {
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if(!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $link, $memoryImage);
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $memoryImage;
return $memoryImage;
} else {
trigger_error('Unsupported image type.');
}
}
/**
* Add a PreserveText Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Footer_PreserveText
*/
public function addPreserveText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
}
/** /**
* Add a Watermark Element * Add a TextBreak Element
* *
* @param string $src * @param int $count
* @param mixed $style */
* @return PHPWord_Section_Image public function addTextBreak($count = 1)
*/ {
public function addWatermark($src, $style = null) { for ($i = 1; $i <= $count; $i++) {
$image = new PHPWord_Section_Image($src, $style, true); $this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
}
if(!is_null($image->getSource())) { /**
$rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $src); * Create a new TextRun
$image->setRelationId($rID); *
* @return PHPWord_Section_TextRun
*/
public function createTextRun($styleParagraph = null)
{
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
$this->_elementCollection[] = $image; /**
return $image; * Add a Table Element
} else { *
trigger_error('Src does not exist or invalid image type.', E_USER_ERROR); * @param mixed $style
} * @return PHPWord_Section_Table
} */
public function addTable($style = null)
{
$table = new PHPWord_Section_Table('header', $this->_headerCount, $style);
$this->_elementCollection[] = $table;
return $table;
}
/** /**
* Get Header Relation ID * Add a Image Element
*/ *
public function getRelationId() { * @param string $src
return $this->_rId; * @param mixed $style
} * @return PHPWord_Section_Image
*/
public function addImage($src, $style = null)
{
$image = new PHPWord_Section_Image($src, $style);
/** if (!is_null($image->getSource())) {
* Set Header Relation ID $rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $src);
* $image->setRelationId($rID);
* @param int $rId
*/
public function setRelationId($rId) {
$this->_rId = $rId;
}
/** $this->_elementCollection[] = $image;
* Get all Header Elements return $image;
*/ } else {
public function getElements() { trigger_error('Src does not exist or invalid image type.', E_USER_ERROR);
return $this->_elementCollection; }
} }
/** /**
* Get Header Count * Add a by PHP created Image Element
*/ *
public function getHeaderCount() { * @param string $link
return $this->_headerCount; * @param mixed $style
} * @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null)
{
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if (!is_null($memoryImage->getSource())) {
$rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $link, $memoryImage);
$memoryImage->setRelationId($rID);
/** $this->_elementCollection[] = $memoryImage;
* Get Header Type return $memoryImage;
*/ } else {
public function getType() { trigger_error('Unsupported image type.');
return $this->_type; }
} }
/** /**
* Reset back to default * Add a PreserveText Element
*/ *
public function resetType() { * @param string $text
return $this->_type = PHPWord_Section_Header::AUTO; * @param mixed $styleFont
} * @param mixed $styleParagraph
* @return PHPWord_Section_Footer_PreserveText
*/
public function addPreserveText($text, $styleFont = null, $styleParagraph = null)
{
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
}
/** /**
* First page only header * Add a Watermark Element
*/ *
public function firstPage() { * @param string $src
return $this->_type = PHPWord_Section_Header::FIRST; * @param mixed $style
} * @return PHPWord_Section_Image
*/
public function addWatermark($src, $style = null)
{
$image = new PHPWord_Section_Image($src, $style, true);
/** if (!is_null($image->getSource())) {
* Even numbered Pages only $rID = PHPWord_Media::addHeaderMediaElement($this->_headerCount, $src);
*/ $image->setRelationId($rID);
public function evenPage() {
return $this->_type = PHPWord_Section_Header::EVEN; $this->_elementCollection[] = $image;
} return $image;
} else {
trigger_error('Src does not exist or invalid image type.', E_USER_ERROR);
}
}
/**
* Get Header Relation ID
*/
public function getRelationId()
{
return $this->_rId;
}
/**
* Set Header Relation ID
*
* @param int $rId
*/
public function setRelationId($rId)
{
$this->_rId = $rId;
}
/**
* Get all Header Elements
*/
public function getElements()
{
return $this->_elementCollection;
}
/**
* Get Header Count
*/
public function getHeaderCount()
{
return $this->_headerCount;
}
/**
* Get Header Type
*/
public function getType()
{
return $this->_type;
}
/**
* Reset back to default
*/
public function resetType()
{
return $this->_type = PHPWord_Section_Header::AUTO;
}
/**
* First page only header
*/
public function firstPage()
{
return $this->_type = PHPWord_Section_Header::FIRST;
}
/**
* Even numbered Pages only
*/
public function evenPage()
{
return $this->_type = PHPWord_Section_Header::EVEN;
}
} }
?>

253
Classes/PHPWord/Section/Image.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,149 +20,156 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Image * Class PHPWord_Section_Image
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Image { class PHPWord_Section_Image
{
/** /**
* Image Src * Image Src
* *
* @var string * @var string
*/ */
private $_src; private $_src;
/** /**
* Image Style * Image Style
* *
* @var PHPWord_Style_Image * @var PHPWord_Style_Image
*/ */
private $_style; private $_style;
/** /**
* Image Relation ID * Image Relation ID
* *
* @var string * @var string
*/ */
private $_rId; private $_rId;
/** /**
* Is Watermark * Is Watermark
* *
* @var bool * @var bool
*/ */
private $_isWatermark; private $_isWatermark;
/** /**
* Create a new Image * Create a new Image
* *
* @param string $src * @param string $src
* @param mixed style * @param mixed style
*/ */
public function __construct($src, $style = null, $isWatermark = false) { public function __construct($src, $style = null, $isWatermark = false)
$_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff'); {
$_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff');
$inf = pathinfo($src); $inf = pathinfo($src);
$ext = strtolower($inf['extension']); $ext = strtolower($inf['extension']);
if(file_exists($src) && in_array($ext, $_supportedImageTypes)) { if (file_exists($src) && in_array($ext, $_supportedImageTypes)) {
$this->_src = $src; $this->_src = $src;
$this->_isWatermark = $isWatermark; $this->_isWatermark = $isWatermark;
$this->_style = new PHPWord_Style_Image(); $this->_style = new PHPWord_Style_Image();
if(!is_null($style) && is_array($style)) { if (!is_null($style) && is_array($style)) {
foreach($style as $key => $value) { foreach ($style as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} }
if($this->_style->getWidth() == null && $this->_style->getHeight() == null) { if (isset($style['wrappingStyle'])) {
$imgData = getimagesize($this->_src); $this->_style->setWrappingStyle($style['wrappingStyle']);
$this->_style->setWidth($imgData[0]); }
$this->_style->setHeight($imgData[1]);
}
return $this; if ($this->_style->getWidth() == null && $this->_style->getHeight() == null) {
} else { $imgData = getimagesize($this->_src);
return false; $this->_style->setWidth($imgData[0]);
} $this->_style->setHeight($imgData[1]);
} }
/** return $this;
* Get Image style } else {
* return false;
* @return PHPWord_Style_Image }
*/ }
public function getStyle() {
return $this->_style;
}
/** /**
* Get Image Relation ID * Get Image style
* *
* @return int * @return PHPWord_Style_Image
*/ */
public function getRelationId() { public function getStyle()
return $this->_rId; {
} return $this->_style;
}
/** /**
* Set Image Relation ID * Get Image Relation ID
* *
* @param int $rId * @return int
*/ */
public function setRelationId($rId) { public function getRelationId()
$this->_rId = $rId; {
} return $this->_rId;
}
/** /**
* Get Image Source * Set Image Relation ID
* *
* @return string * @param int $rId
*/ */
public function getSource() { public function setRelationId($rId)
return $this->_src; {
} $this->_rId = $rId;
}
/** /**
* Get Image Media ID * Get Image Source
* *
* @return string * @return string
*/ */
public function getMediaId() { public function getSource()
return md5($this->_src); {
} return $this->_src;
}
/** /**
* Get IsWatermark * Get Image Media ID
* *
* @return int * @return string
*/ */
public function getIsWatermark() { public function getMediaId()
return $this->_isWatermark; {
} return md5($this->_src);
}
/** /**
* Set IsWatermark * Get IsWatermark
* *
* @param bool $pValue * @return int
*/ */
public function setIsWatermark($pValue) { public function getIsWatermark()
$this->_isWatermark = $pValue; {
} return $this->_isWatermark;
}
/**
* Set IsWatermark
*
* @param bool $pValue
*/
public function setIsWatermark($pValue)
{
$this->_isWatermark = $pValue;
}
} }
?>

254
Classes/PHPWord/Section/Link.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,152 +20,154 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Link * Class PHPWord_Section_Link
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Link { class PHPWord_Section_Link
{
/** /**
* Link source * Link source
* *
* @var string * @var string
*/ */
private $_linkSrc; private $_linkSrc;
/** /**
* Link name * Link name
* *
* @var string * @var string
*/ */
private $_linkName; private $_linkName;
/** /**
* Link Relation ID * Link Relation ID
* *
* @var string * @var string
*/ */
private $_rId; private $_rId;
/** /**
* Link style * Link style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleFont; private $_styleFont;
/** /**
* Paragraph style * Paragraph style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleParagraph; private $_styleParagraph;
/** /**
* Create a new Link Element * Create a new Link Element
* *
* @var string $linkSrc * @var string $linkSrc
* @var string $linkName * @var string $linkName
* @var mixed $styleFont * @var mixed $styleFont
* @var mixed $styleParagraph * @var mixed $styleParagraph
*/ */
public function __construct($linkSrc, $linkName = null, $styleFont = null, $styleParagraph = null) { public function __construct($linkSrc, $linkName = null, $styleFont = null, $styleParagraph = null)
$this->_linkSrc = $linkSrc; {
$this->_linkName = $linkName; $this->_linkSrc = $linkSrc;
$this->_linkName = $linkName;
// Set font style // Set font style
if(is_array($styleFont)) { if (is_array($styleFont)) {
$this->_styleFont = new PHPWord_Style_Font('text'); $this->_styleFont = new PHPWord_Style_Font('text');
foreach($styleFont as $key => $value) { foreach ($styleFont as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleFont->setStyleValue($key, $value); $this->_styleFont->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleFont = $styleFont; $this->_styleFont = $styleFont;
} }
// Set paragraph style // Set paragraph style
if(is_array($styleParagraph)) { if (is_array($styleParagraph)) {
$this->_styleParagraph = new PHPWord_Style_Paragraph(); $this->_styleParagraph = new PHPWord_Style_Paragraph();
foreach($styleParagraph as $key => $value) { foreach ($styleParagraph as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleParagraph->setStyleValue($key, $value); $this->_styleParagraph->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleParagraph = $styleParagraph; $this->_styleParagraph = $styleParagraph;
} }
return $this; return $this;
} }
/** /**
* Get Link Relation ID * Get Link Relation ID
* *
* @return int * @return int
*/ */
public function getRelationId() { public function getRelationId()
return $this->_rId; {
} return $this->_rId;
}
/** /**
* Set Link Relation ID * Set Link Relation ID
* *
* @param int $rId * @param int $rId
*/ */
public function setRelationId($rId) { public function setRelationId($rId)
$this->_rId = $rId; {
} $this->_rId = $rId;
}
/** /**
* Get Link source * Get Link source
* *
* @return string * @return string
*/ */
public function getLinkSrc() { public function getLinkSrc()
return $this->_linkSrc; {
} return $this->_linkSrc;
}
/** /**
* Get Link name * Get Link name
* *
* @return string * @return string
*/ */
public function getLinkName() { public function getLinkName()
return $this->_linkName; {
} return $this->_linkName;
}
/** /**
* Get Text style * Get Text style
* *
* @return PHPWord_Style_Font * @return PHPWord_Style_Font
*/ */
public function getFontStyle() { public function getFontStyle()
return $this->_styleFont; {
} return $this->_styleFont;
}
/** /**
* Get Paragraph style * Get Paragraph style
* *
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function getParagraphStyle() { public function getParagraphStyle()
return $this->_styleParagraph; {
} return $this->_styleParagraph;
}
} }
?>

135
Classes/PHPWord/Section/ListItem.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,85 +20,84 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_ListItem * Class PHPWord_Section_ListItem
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_ListItem { class PHPWord_Section_ListItem
{
/** /**
* ListItem Style * ListItem Style
* *
* @var PHPWord_Style_ListItem * @var PHPWord_Style_ListItem
*/ */
private $_style; private $_style;
/** /**
* Textrun * Textrun
* *
* @var PHPWord_Section_Text * @var PHPWord_Section_Text
*/ */
private $_textObject; private $_textObject;
/** /**
* ListItem Depth * ListItem Depth
* *
* @var int * @var int
*/ */
private $_depth; private $_depth;
/** /**
* Create a new ListItem * Create a new ListItem
* *
* @param string $text * @param string $text
* @param int $depth * @param int $depth
* @param mixed $styleText * @param mixed $styleText
* @param mixed $styleList * @param mixed $styleList
*/ */
public function __construct($text, $depth = 0, $styleFont = null, $styleList = null, $styleParagraph = null) { public function __construct($text, $depth = 0, $styleFont = null, $styleList = null, $styleParagraph = null)
$this->_style = new PHPWord_Style_ListItem(); {
$this->_textObject = new PHPWord_Section_Text($text, $styleFont, $styleParagraph); $this->_style = new PHPWord_Style_ListItem();
$this->_depth = $depth; $this->_textObject = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_depth = $depth;
if(!is_null($styleList) && is_array($styleList)) { if (!is_null($styleList) && is_array($styleList)) {
foreach($styleList as $key => $value) { foreach ($styleList as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} }
} }
/** /**
* Get ListItem style * Get ListItem style
*/ */
public function getStyle() { public function getStyle()
return $this->_style; {
} return $this->_style;
}
/** /**
* Get ListItem TextRun * Get ListItem TextRun
*/ */
public function getTextObject() { public function getTextObject()
return $this->_textObject; {
} return $this->_textObject;
}
/** /**
* Get ListItem depth * Get ListItem depth
*/ */
public function getDepth() { public function getDepth()
return $this->_depth; {
} return $this->_depth;
}
} }
?>

363
Classes/PHPWord/Section/MemoryImage.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,212 +20,219 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_MemoryImage * Class PHPWord_Section_MemoryImage
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_MemoryImage { class PHPWord_Section_MemoryImage
{
/** /**
* Image Src * Image Src
* *
* @var string * @var string
*/ */
private $_src; private $_src;
/** /**
* Image Style * Image Style
* *
* @var PHPWord_Style_Image * @var PHPWord_Style_Image
*/ */
private $_style; private $_style;
/** /**
* Image Relation ID * Image Relation ID
* *
* @var string * @var string
*/ */
private $_rId; private $_rId;
/** /**
* Image Type * Image Type
* *
* @var string * @var string
*/ */
private $_imageType; private $_imageType;
/** /**
* Image Create function * Image Create function
* *
* @var string * @var string
*/ */
private $_imageCreateFunc; private $_imageCreateFunc;
/** /**
* Image function * Image function
* *
* @var string * @var string
*/ */
private $_imageFunc; private $_imageFunc;
/** /**
* Image function * Image function
* *
* @var string * @var string
*/ */
private $_imageExtension; private $_imageExtension;
/** /**
* Create a new Image * Create a new Image
* *
* @param string $src * @param string $src
* @param mixed style * @param mixed style
*/ */
public function __construct($src, $style = null) { public function __construct($src, $style = null)
$imgData = getimagesize($src); {
$this->_imageType = $imgData['mime']; $imgData = getimagesize($src);
$this->_imageType = $imgData['mime'];
$_supportedImageTypes = array('image/jpeg', 'image/gif', 'image/png'); $_supportedImageTypes = array('image/jpeg', 'image/gif', 'image/png');
if(in_array($this->_imageType, $_supportedImageTypes)) { if (in_array($this->_imageType, $_supportedImageTypes)) {
$this->_src = $src; $this->_src = $src;
$this->_style = new PHPWord_Style_Image(); $this->_style = new PHPWord_Style_Image();
if(!is_null($style) && is_array($style)) { if (!is_null($style) && is_array($style)) {
foreach($style as $key => $value) { foreach ($style as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} }
if($this->_style->getWidth() == null && $this->_style->getHeight() == null) { if ($this->_style->getWidth() == null && $this->_style->getHeight() == null) {
$this->_style->setWidth($imgData[0]); $this->_style->setWidth($imgData[0]);
$this->_style->setHeight($imgData[1]); $this->_style->setHeight($imgData[1]);
} }
$this->_setFunctions(); $this->_setFunctions();
return $this; return $this;
} else { } else {
return false; return false;
} }
} }
/** /**
* Set Functions * Set Functions
*/ */
private function _setFunctions() { private function _setFunctions()
switch($this->_imageType) { {
case 'image/png': switch ($this->_imageType) {
$this->_imageCreateFunc = 'imagecreatefrompng'; case 'image/png':
$this->_imageFunc = 'imagepng'; $this->_imageCreateFunc = 'imagecreatefrompng';
$this->_imageExtension = 'png'; $this->_imageFunc = 'imagepng';
break; $this->_imageExtension = 'png';
case 'image/gif': break;
$this->_imageCreateFunc = 'imagecreatefromgif'; case 'image/gif':
$this->_imageFunc = 'imagegif'; $this->_imageCreateFunc = 'imagecreatefromgif';
$this->_imageExtension = 'gif'; $this->_imageFunc = 'imagegif';
break; $this->_imageExtension = 'gif';
case 'image/jpeg': case 'image/jpg': break;
$this->_imageCreateFunc = 'imagecreatefromjpeg'; case 'image/jpeg':
$this->_imageFunc = 'imagejpeg'; case 'image/jpg':
$this->_imageExtension = 'jpg'; $this->_imageCreateFunc = 'imagecreatefromjpeg';
break; $this->_imageFunc = 'imagejpeg';
} $this->_imageExtension = 'jpg';
} break;
}
}
/** /**
* Get Image style * Get Image style
* *
* @return PHPWord_Style_Image * @return PHPWord_Style_Image
*/ */
public function getStyle() { public function getStyle()
return $this->_style; {
} return $this->_style;
}
/** /**
* Get Image Relation ID * Get Image Relation ID
* *
* @return int * @return int
*/ */
public function getRelationId() { public function getRelationId()
return $this->_rId; {
} return $this->_rId;
}
/** /**
* Set Image Relation ID * Set Image Relation ID
* *
* @param int $rId * @param int $rId
*/ */
public function setRelationId($rId) { public function setRelationId($rId)
$this->_rId = $rId; {
} $this->_rId = $rId;
}
/** /**
* Get Image Source * Get Image Source
* *
* @return string * @return string
*/ */
public function getSource() { public function getSource()
return $this->_src; {
} return $this->_src;
}
/** /**
* Get Image Media ID * Get Image Media ID
* *
* @return string * @return string
*/ */
public function getMediaId() { public function getMediaId()
return md5($this->_src); {
} return md5($this->_src);
}
/** /**
* Get Image Type * Get Image Type
* *
* @return string * @return string
*/ */
public function getImageType() { public function getImageType()
return $this->_imageType; {
} return $this->_imageType;
}
/** /**
* Get Image Create Function * Get Image Create Function
* *
* @return string * @return string
*/ */
public function getImageCreateFunction() { public function getImageCreateFunction()
return $this->_imageCreateFunc; {
} return $this->_imageCreateFunc;
}
/** /**
* Get Image Function * Get Image Function
* *
* @return string * @return string
*/ */
public function getImageFunction() { public function getImageFunction()
return $this->_imageFunc; {
} return $this->_imageFunc;
}
/** /**
* Get Image Extension * Get Image Extension
* *
* @return string * @return string
*/ */
public function getImageExtension() { public function getImageExtension()
return $this->_imageExtension; {
} return $this->_imageExtension;
}
} }
?>

264
Classes/PHPWord/Section/Object.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,156 +20,160 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Object * Class PHPWord_Section_Object
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Object { class PHPWord_Section_Object
{
/** /**
* Ole-Object Src * Ole-Object Src
* *
* @var string * @var string
*/ */
private $_src; private $_src;
/** /**
* Image Style * Image Style
* *
* @var PHPWord_Style_Image * @var PHPWord_Style_Image
*/ */
private $_style; private $_style;
/** /**
* Object Relation ID * Object Relation ID
* *
* @var int * @var int
*/ */
private $_rId; private $_rId;
/** /**
* Image Relation ID * Image Relation ID
* *
* @var int * @var int
*/ */
private $_rIdImg; private $_rIdImg;
/** /**
* Object ID * Object ID
* *
* @var int * @var int
*/ */
private $_objId; private $_objId;
/** /**
* Create a new Ole-Object Element * Create a new Ole-Object Element
* *
* @param string $src * @param string $src
* @param mixed $style * @param mixed $style
*/ */
public function __construct($src, $style = null) { public function __construct($src, $style = null)
$_supportedObjectTypes = array('xls', 'doc', 'ppt'); {
$inf = pathinfo($src); $_supportedObjectTypes = array('xls', 'doc', 'ppt');
$inf = pathinfo($src);
if(file_exists($src) && in_array($inf['extension'], $_supportedObjectTypes)) { if (file_exists($src) && in_array($inf['extension'], $_supportedObjectTypes)) {
$this->_src = $src; $this->_src = $src;
$this->_style = new PHPWord_Style_Image(); $this->_style = new PHPWord_Style_Image();
if(!is_null($style) && is_array($style)) { if (!is_null($style) && is_array($style)) {
foreach($style as $key => $value) { foreach ($style as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} }
return $this; return $this;
} else { } else {
return false; return false;
} }
} }
/** /**
* Get Image style * Get Image style
* *
* @return PHPWord_Style_Image * @return PHPWord_Style_Image
*/ */
public function getStyle() { public function getStyle()
return $this->_style; {
} return $this->_style;
}
/** /**
* Get Source * Get Source
* *
* @return string * @return string
*/ */
public function getSource() { public function getSource()
return $this->_src; {
} return $this->_src;
}
/** /**
* Get Object Relation ID * Get Object Relation ID
* *
* @return int * @return int
*/ */
public function getRelationId() { public function getRelationId()
return $this->_rId; {
} return $this->_rId;
}
/** /**
* Set Object Relation ID * Set Object Relation ID
* *
* @param int $rId * @param int $rId
*/ */
public function setRelationId($rId) { public function setRelationId($rId)
$this->_rId = $rId; {
} $this->_rId = $rId;
}
/** /**
* Get Image Relation ID * Get Image Relation ID
* *
* @return int * @return int
*/ */
public function getImageRelationId() { public function getImageRelationId()
return $this->_rIdImg; {
} return $this->_rIdImg;
}
/** /**
* Set Image Relation ID * Set Image Relation ID
* *
* @param int $rId * @param int $rId
*/ */
public function setImageRelationId($rId) { public function setImageRelationId($rId)
$this->_rIdImg = $rId; {
} $this->_rIdImg = $rId;
}
/** /**
* Get Object ID * Get Object ID
* *
* @return int * @return int
*/ */
public function getObjectId() { public function getObjectId()
return $this->_objId; {
} return $this->_objId;
}
/** /**
* Set Object ID * Set Object ID
* *
* @param int $objId * @param int $objId
*/ */
public function setObjectId($objId) { public function setObjectId($objId)
$this->_objId = $objId; {
} $this->_objId = $objId;
}
} }
?>

30
Classes/PHPWord/Section/PageBreak.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,26 +20,22 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_PageBreak * Class PHPWord_Section_PageBreak
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_PageBreak { class PHPWord_Section_PageBreak
{
/** /**
* Create a new PageBreak Element * Create a new PageBreak Element
*/ */
public function __construct() { public function __construct()
// nothing {
} // nothing
}
} }
?>

898
Classes/PHPWord/Section/Settings.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,496 +20,526 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Settings * Class PHPWord_Section_Settings
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Settings { class PHPWord_Section_Settings
{
/** /**
* Default Page Size Width * Default Page Size Width
* *
* @var int * @var int
*/ */
private $_defaultPageSizeW = 11906; private $_defaultPageSizeW = 11906;
/** /**
* Default Page Size Height * Default Page Size Height
* *
* @var int * @var int
*/ */
private $_defaultPageSizeH = 16838; private $_defaultPageSizeH = 16838;
/** /**
* Page Orientation * Page Orientation
* *
* @var string * @var string
*/ */
private $_orientation; private $_orientation;
/** /**
* Page Margin Top * Page Margin Top
* *
* @var int * @var int
*/ */
private $_marginTop; private $_marginTop;
/** /**
* Page Margin Left * Page Margin Left
* *
* @var int * @var int
*/ */
private $_marginLeft; private $_marginLeft;
/** /**
* Page Margin Right * Page Margin Right
* *
* @var int * @var int
*/ */
private $_marginRight; private $_marginRight;
/** /**
* Page Margin Bottom * Page Margin Bottom
* *
* @var int * @var int
*/ */
private $_marginBottom; private $_marginBottom;
/** /**
* Page Size Width * Page Size Width
* *
* @var int * @var int
*/ */
private $_pageSizeW; private $_pageSizeW;
/** /**
* Page Size Height * Page Size Height
* *
* @var int * @var int
*/ */
private $_pageSizeH; private $_pageSizeH;
/** /**
* Page Border Top Size * Page Border Top Size
* *
* @var int * @var int
*/ */
private $_borderTopSize; private $_borderTopSize;
/** /**
* Page Border Top Color * Page Border Top Color
* *
* @var int * @var int
*/ */
private $_borderTopColor; private $_borderTopColor;
/** /**
* Page Border Left Size * Page Border Left Size
* *
* @var int * @var int
*/ */
private $_borderLeftSize; private $_borderLeftSize;
/** /**
* Page Border Left Color * Page Border Left Color
* *
* @var int * @var int
*/ */
private $_borderLeftColor; private $_borderLeftColor;
/** /**
* Page Border Right Size * Page Border Right Size
* *
* @var int * @var int
*/ */
private $_borderRightSize; private $_borderRightSize;
/** /**
* Page Border Right Color * Page Border Right Color
* *
* @var int * @var int
*/ */
private $_borderRightColor; private $_borderRightColor;
/** /**
* Page Border Bottom Size * Page Border Bottom Size
* *
* @var int * @var int
*/ */
private $_borderBottomSize; private $_borderBottomSize;
/** /**
* Page Border Bottom Color * Page Border Bottom Color
* *
* @var int * @var int
*/ */
private $_borderBottomColor; private $_borderBottomColor;
/** /**
* Create new Section Settings * Create new Section Settings
*/ */
public function __construct() { public function __construct()
$this->_orientation = null; {
$this->_marginTop = 1418; $this->_orientation = null;
$this->_marginLeft = 1418; $this->_marginTop = 1418;
$this->_marginRight = 1418; $this->_marginLeft = 1418;
$this->_marginBottom = 1134; $this->_marginRight = 1418;
$this->_pageSizeW = $this->_defaultPageSizeW; $this->_marginBottom = 1134;
$this->_pageSizeH = $this->_defaultPageSizeH; $this->_pageSizeW = $this->_defaultPageSizeW;
$this->_borderTopSize = null; $this->_pageSizeH = $this->_defaultPageSizeH;
$this->_borderTopColor = null; $this->_borderTopSize = null;
$this->_borderLeftSize = null; $this->_borderTopColor = null;
$this->_borderLeftColor = null; $this->_borderLeftSize = null;
$this->_borderRightSize = null; $this->_borderLeftColor = null;
$this->_borderRightColor = null; $this->_borderRightSize = null;
$this->_borderBottomSize = null; $this->_borderRightColor = null;
$this->_borderBottomColor = null; $this->_borderBottomSize = null;
} $this->_borderBottomColor = null;
}
/** /**
* Set Setting Value * Set Setting Value
* *
* @param string $key * @param string $key
* @param string $value * @param string $value
*/ */
public function setSettingValue($key, $value) { public function setSettingValue($key, $value)
if($key == '_orientation' && $value == 'landscape') { {
$this->setLandscape(); if ($key == '_orientation' && $value == 'landscape') {
} elseif($key == '_orientation' && is_null($value)) { $this->setLandscape();
$this->setPortrait(); } elseif ($key == '_orientation' && is_null($value)) {
} elseif($key == '_borderSize') { $this->setPortrait();
$this->setBorderSize($value); } elseif ($key == '_borderSize') {
} elseif($key == '_borderColor') { $this->setBorderSize($value);
$this->setBorderColor($value); } elseif ($key == '_borderColor') {
} else { $this->setBorderColor($value);
$this->$key = $value; } else {
} $this->$key = $value;
} }
}
/** /**
* Get Margin Top * Get Margin Top
* *
* @return int * @return int
*/ */
public function getMarginTop() { public function getMarginTop()
return $this->_marginTop; {
} return $this->_marginTop;
}
/** /**
* Set Margin Top * Set Margin Top
* *
* @param int $pValue * @param int $pValue
*/ */
public function setMarginTop($pValue = '') { public function setMarginTop($pValue = '')
$this->_marginTop = $pValue; {
return $this; $this->_marginTop = $pValue;
} return $this;
}
/** /**
* Get Margin Left * Get Margin Left
* *
* @return int * @return int
*/ */
public function getMarginLeft() { public function getMarginLeft()
return $this->_marginLeft; {
} return $this->_marginLeft;
}
/** /**
* Set Margin Left * Set Margin Left
* *
* @param int $pValue * @param int $pValue
*/ */
public function setMarginLeft($pValue = '') { public function setMarginLeft($pValue = '')
$this->_marginLeft = $pValue; {
return $this; $this->_marginLeft = $pValue;
} return $this;
}
/** /**
* Get Margin Right * Get Margin Right
* *
* @return int * @return int
*/ */
public function getMarginRight() { public function getMarginRight()
return $this->_marginRight; {
} return $this->_marginRight;
}
/** /**
* Set Margin Right * Set Margin Right
* *
* @param int $pValue * @param int $pValue
*/ */
public function setMarginRight($pValue = '') { public function setMarginRight($pValue = '')
$this->_marginRight = $pValue; {
return $this; $this->_marginRight = $pValue;
} return $this;
}
/** /**
* Get Margin Bottom * Get Margin Bottom
* *
* @return int * @return int
*/ */
public function getMarginBottom() { public function getMarginBottom()
return $this->_marginBottom; {
} return $this->_marginBottom;
}
/** /**
* Set Margin Bottom * Set Margin Bottom
* *
* @param int $pValue * @param int $pValue
*/ */
public function setMarginBottom($pValue = '') { public function setMarginBottom($pValue = '')
$this->_marginBottom = $pValue; {
return $this; $this->_marginBottom = $pValue;
} return $this;
}
/** /**
* Set Landscape Orientation * Set Landscape Orientation
*/ */
public function setLandscape() { public function setLandscape()
$this->_orientation = 'landscape'; {
$this->_pageSizeW = $this->_defaultPageSizeH; $this->_orientation = 'landscape';
$this->_pageSizeH = $this->_defaultPageSizeW; $this->_pageSizeW = $this->_defaultPageSizeH;
} $this->_pageSizeH = $this->_defaultPageSizeW;
}
/** /**
* Set Portrait Orientation * Set Portrait Orientation
*/ */
public function setPortrait() { public function setPortrait()
$this->_orientation = null; {
$this->_pageSizeW = $this->_defaultPageSizeW; $this->_orientation = null;
$this->_pageSizeH = $this->_defaultPageSizeH; $this->_pageSizeW = $this->_defaultPageSizeW;
} $this->_pageSizeH = $this->_defaultPageSizeH;
}
/** /**
* Get Page Size Width * Get Page Size Width
* *
* @return int * @return int
*/ */
public function getPageSizeW() { public function getPageSizeW()
return $this->_pageSizeW; {
} return $this->_pageSizeW;
}
/** /**
* Get Page Size Height * Get Page Size Height
* *
* @return int * @return int
*/ */
public function getPageSizeH() { public function getPageSizeH()
return $this->_pageSizeH; {
} return $this->_pageSizeH;
}
/** /**
* Get Page Orientation * Get Page Orientation
* *
* @return string * @return string
*/ */
public function getOrientation() { public function getOrientation()
return $this->_orientation; {
} return $this->_orientation;
}
/** /**
* Set Border Size * Set Border Size
* *
* @param int $pValue * @param int $pValue
*/ */
public function setBorderSize($pValue = null) { public function setBorderSize($pValue = null)
$this->_borderTopSize = $pValue; {
$this->_borderLeftSize = $pValue; $this->_borderTopSize = $pValue;
$this->_borderRightSize = $pValue; $this->_borderLeftSize = $pValue;
$this->_borderBottomSize = $pValue; $this->_borderRightSize = $pValue;
} $this->_borderBottomSize = $pValue;
}
/** /**
* Get Border Size * Get Border Size
* *
* @return array * @return array
*/ */
public function getBorderSize() { public function getBorderSize()
$t = $this->getBorderTopSize(); {
$l = $this->getBorderLeftSize(); $t = $this->getBorderTopSize();
$r = $this->getBorderRightSize(); $l = $this->getBorderLeftSize();
$b = $this->getBorderBottomSize(); $r = $this->getBorderRightSize();
$b = $this->getBorderBottomSize();
return array($t, $l, $r, $b); return array($t, $l, $r, $b);
} }
/** /**
* Set Border Color * Set Border Color
* *
* @param string $pValue * @param string $pValue
*/ */
public function setBorderColor($pValue = null) { public function setBorderColor($pValue = null)
$this->_borderTopColor = $pValue; {
$this->_borderLeftColor = $pValue; $this->_borderTopColor = $pValue;
$this->_borderRightColor = $pValue; $this->_borderLeftColor = $pValue;
$this->_borderBottomColor = $pValue; $this->_borderRightColor = $pValue;
} $this->_borderBottomColor = $pValue;
}
/** /**
* Get Border Color * Get Border Color
* *
* @return array * @return array
*/ */
public function getBorderColor() { public function getBorderColor()
$t = $this->getBorderTopColor(); {
$l = $this->getBorderLeftColor(); $t = $this->getBorderTopColor();
$r = $this->getBorderRightColor(); $l = $this->getBorderLeftColor();
$b = $this->getBorderBottomColor(); $r = $this->getBorderRightColor();
$b = $this->getBorderBottomColor();
return array($t, $l, $r, $b); return array($t, $l, $r, $b);
} }
/** /**
* Set Border Top Size * Set Border Top Size
* *
* @param int $pValue * @param int $pValue
*/ */
public function setBorderTopSize($pValue = null) { public function setBorderTopSize($pValue = null)
$this->_borderTopSize = $pValue; {
} $this->_borderTopSize = $pValue;
}
/** /**
* Get Border Top Size * Get Border Top Size
* *
* @return int * @return int
*/ */
public function getBorderTopSize() { public function getBorderTopSize()
return $this->_borderTopSize; {
} return $this->_borderTopSize;
}
/** /**
* Set Border Top Color * Set Border Top Color
* *
* @param string $pValue * @param string $pValue
*/ */
public function setBorderTopColor($pValue = null) { public function setBorderTopColor($pValue = null)
$this->_borderTopColor = $pValue; {
} $this->_borderTopColor = $pValue;
}
/** /**
* Get Border Top Color * Get Border Top Color
* *
* @return string * @return string
*/ */
public function getBorderTopColor() { public function getBorderTopColor()
return $this->_borderTopColor; {
} return $this->_borderTopColor;
}
/** /**
* Set Border Left Size * Set Border Left Size
* *
* @param int $pValue * @param int $pValue
*/ */
public function setBorderLeftSize($pValue = null) { public function setBorderLeftSize($pValue = null)
$this->_borderLeftSize = $pValue; {
} $this->_borderLeftSize = $pValue;
}
/** /**
* Get Border Left Size * Get Border Left Size
* *
* @return int * @return int
*/ */
public function getBorderLeftSize() { public function getBorderLeftSize()
return $this->_borderLeftSize; {
} return $this->_borderLeftSize;
}
/** /**
* Set Border Left Color * Set Border Left Color
* *
* @param string $pValue * @param string $pValue
*/ */
public function setBorderLeftColor($pValue = null) { public function setBorderLeftColor($pValue = null)
$this->_borderLeftColor = $pValue; {
} $this->_borderLeftColor = $pValue;
}
/** /**
* Get Border Left Color * Get Border Left Color
* *
* @return string * @return string
*/ */
public function getBorderLeftColor() { public function getBorderLeftColor()
return $this->_borderLeftColor; {
} return $this->_borderLeftColor;
}
/** /**
* Set Border Right Size * Set Border Right Size
* *
* @param int $pValue * @param int $pValue
*/ */
public function setBorderRightSize($pValue = null) { public function setBorderRightSize($pValue = null)
$this->_borderRightSize = $pValue; {
} $this->_borderRightSize = $pValue;
}
/** /**
* Get Border Right Size * Get Border Right Size
* *
* @return int * @return int
*/ */
public function getBorderRightSize() { public function getBorderRightSize()
return $this->_borderRightSize; {
} return $this->_borderRightSize;
}
/** /**
* Set Border Right Color * Set Border Right Color
* *
* @param string $pValue * @param string $pValue
*/ */
public function setBorderRightColor($pValue = null) { public function setBorderRightColor($pValue = null)
$this->_borderRightColor = $pValue; {
} $this->_borderRightColor = $pValue;
}
/** /**
* Get Border Right Color * Get Border Right Color
* *
* @return string * @return string
*/ */
public function getBorderRightColor() { public function getBorderRightColor()
return $this->_borderRightColor; {
} return $this->_borderRightColor;
}
/** /**
* Set Border Bottom Size * Set Border Bottom Size
* *
* @param int $pValue * @param int $pValue
*/ */
public function setBorderBottomSize($pValue = null) { public function setBorderBottomSize($pValue = null)
$this->_borderBottomSize = $pValue; {
} $this->_borderBottomSize = $pValue;
}
/** /**
* Get Border Bottom Size * Get Border Bottom Size
* *
* @return int * @return int
*/ */
public function getBorderBottomSize() { public function getBorderBottomSize()
return $this->_borderBottomSize; {
} return $this->_borderBottomSize;
}
/** /**
* Set Border Bottom Color * Set Border Bottom Color
* *
* @param string $pValue * @param string $pValue
*/ */
public function setBorderBottomColor($pValue = null) { public function setBorderBottomColor($pValue = null)
$this->_borderBottomColor = $pValue; {
} $this->_borderBottomColor = $pValue;
}
/** /**
* Get Border Bottom Color * Get Border Bottom Color
* *
* @return string * @return string
*/ */
public function getBorderBottomColor() { public function getBorderBottomColor()
return $this->_borderBottomColor; {
} return $this->_borderBottomColor;
}
} }
?>

223
Classes/PHPWord/Section/Table.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,133 +20,134 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Table * Class PHPWord_Section_Table
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Table { class PHPWord_Section_Table
{
/** /**
* Table style * Table style
* *
* @var PHPWord_Style_Table * @var PHPWord_Style_Table
*/ */
private $_style; private $_style;
/** /**
* Table rows * Table rows
* *
* @var array * @var array
*/ */
private $_rows = array(); private $_rows = array();
/** /**
* Row heights * Row heights
* *
* @var array * @var array
*/ */
private $_rowHeights = array(); private $_rowHeights = array();
/** /**
* Table holder * Table holder
* *
* @var string * @var string
*/ */
private $_insideOf = null; private $_insideOf = null;
/** /**
* Table holder count * Table holder count
* *
* @var array * @var array
*/ */
private $_pCount; private $_pCount;
/** /**
* Create a new table * Create a new table
* *
* @param string $insideOf * @param string $insideOf
* @param int $pCount * @param int $pCount
* @param mixed $style * @param mixed $style
*/ */
public function __construct($insideOf, $pCount, $style = null) { public function __construct($insideOf, $pCount, $style = null)
$this->_insideOf = $insideOf; {
$this->_pCount = $pCount; $this->_insideOf = $insideOf;
$this->_pCount = $pCount;
if(!is_null($style)) { if (!is_null($style)) {
if(is_array($style)) { if (is_array($style)) {
$this->_style = new PHPWord_Style_Table(); $this->_style = new PHPWord_Style_Table();
foreach($style as $key => $value) { foreach ($style as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} else { } else {
$this->_style = $style; $this->_style = $style;
} }
} }
} }
/** /**
* Add a row * Add a row
* *
* @param int $height * @param int $height
*/ */
public function addRow($height = null) { public function addRow($height = null)
$this->_rows[] = array(); {
$this->_rowHeights[] = $height; $this->_rows[] = array();
} $this->_rowHeights[] = $height;
}
/** /**
* Add a cell * Add a cell
* *
* @param int $width * @param int $width
* @param mixed $style * @param mixed $style
* @return PHPWord_Section_Table_Cell * @return PHPWord_Section_Table_Cell
*/ */
public function addCell($width, $style = null) { public function addCell($width, $style = null)
$cell = new PHPWord_Section_Table_Cell($this->_insideOf, $this->_pCount, $width, $style); {
$i = count($this->_rows) - 1; $cell = new PHPWord_Section_Table_Cell($this->_insideOf, $this->_pCount, $width, $style);
$this->_rows[$i][] = $cell; $i = count($this->_rows) - 1;
return $cell; $this->_rows[$i][] = $cell;
} return $cell;
}
/** /**
* Get all rows * Get all rows
* *
* @return array * @return array
*/ */
public function getRows() { public function getRows()
return $this->_rows; {
} return $this->_rows;
}
/** /**
* Get all row heights * Get all row heights
* *
* @return array * @return array
*/ */
public function getRowHeights() { public function getRowHeights()
return $this->_rowHeights; {
} return $this->_rowHeights;
}
/** /**
* Get table style * Get table style
* *
* @return PHPWord_Style_Table * @return PHPWord_Style_Table
*/ */
public function getStyle() { public function getStyle()
return $this->_style; {
} return $this->_style;
}
} }
?>

556
Classes/PHPWord/Section/Table/Cell.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,310 +20,318 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Table_Cell * PHPWord_Section_Table_Cell
*
* @category PHPWord
* @package PHPWord_Section_Table
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Table_Cell { class PHPWord_Section_Table_Cell
{
/** /**
* Cell Width * Cell Width
* *
* @var int * @var int
*/ */
private $_width = null; private $_width = null;
/** /**
* Cell Style * Cell Style
* *
* @var PHPWord_Style_Cell * @var PHPWord_Style_Cell
*/ */
private $_style; private $_style;
/** /**
* Cell Element Collection * Cell Element Collection
* *
* @var array * @var array
*/ */
private $_elementCollection = array(); private $_elementCollection = array();
/** /**
* Table holder * Table holder
* *
* @var string * @var string
*/ */
private $_insideOf; private $_insideOf;
/** /**
* Section/Header/Footer count * Section/Header/Footer count
* *
* @var int * @var int
*/ */
private $_pCount; private $_pCount;
/** /**
* Create a new Table Cell * Create a new Table Cell
* *
* @param string $insideOf * @param string $insideOf
* @param int $pCount * @param int $pCount
* @param int $width * @param int $width
* @param mixed $style * @param mixed $style
*/ */
public function __construct($insideOf, $pCount, $width = null, $style = null) { public function __construct($insideOf, $pCount, $width = null, $style = null)
$this->_insideOf = $insideOf; {
$this->_pCount = $pCount; $this->_insideOf = $insideOf;
$this->_width = $width; $this->_pCount = $pCount;
$this->_width = $width;
if(!is_null($style)) { if (!is_null($style)) {
if(is_array($style)) { if (is_array($style)) {
$this->_style = new PHPWord_Style_Cell(); $this->_style = new PHPWord_Style_Cell();
foreach($style as $key => $value) { foreach ($style as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_style->setStyleValue($key, $value); $this->_style->setStyleValue($key, $value);
} }
} else { } else {
$this->_style = $style; $this->_style = $style;
} }
}
}
/**
* Add a Text Element
*
* @param string $text
* @param mixed $style
* @return PHPWord_Section_Text
*/
public function addText($text, $styleFont = null, $styleParagraph = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
}
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
/**
* Add a Link Element
*
* @param string $linkSrc
* @param string $linkName
* @param mixed $style
* @return PHPWord_Section_Link
*/
public function addLink($linkSrc, $linkName = null, $style = null) {
if($this->_insideOf == 'section') {
if(!PHPWord_Shared_String::IsUTF8($linkSrc)){
$linkSrc = utf8_encode($linkSrc);
}
if(!is_null($linkName)) {
if(!PHPWord_Shared_String::IsUTF8($linkName)){
$linkName = utf8_encode($linkName);
} }
}
$link = new PHPWord_Section_Link($linkSrc, $linkName, $style);
$rID = PHPWord_Media::addSectionLinkElement($linkSrc);
$link->setRelationId($rID);
$this->_elementCollection[] = $link;
return $link;
} else {
trigger_error('Unsupported Link header / footer reference');
return false;
}
}
/**
* Add a TextBreak Element
*
* @param int $count
*/
public function addTextBreak() {
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
/**
* Add a ListItem Element
*
* @param string $text
* @param int $depth
* @param mixed $styleText
* @param mixed $styleList
* @return PHPWord_Section_ListItem
*/
public function addListItem($text, $depth = 0, $styleText = null, $styleList = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$listItem = new PHPWord_Section_ListItem($text, $depth, $styleText, $styleList);
$this->_elementCollection[] = $listItem;
return $listItem;
}
/** /**
* Add a Image Element * Add a Text Element
* *
* @param string $src * @param string $text
* @param mixed $style * @param mixed $style
* @return PHPWord_Section_Image * @return PHPWord_Section_Text
*/ */
public function addImage($src, $style = null) { public function addText($text, $styleFont = null, $styleParagraph = null)
$image = new PHPWord_Section_Image($src, $style); {
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$text = new PHPWord_Section_Text($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $text;
return $text;
}
if(!is_null($image->getSource())) { /**
if($this->_insideOf == 'section') { * Add a Link Element
$rID = PHPWord_Media::addSectionMediaElement($src, 'image'); *
} elseif($this->_insideOf == 'header') { * @param string $linkSrc
$rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $src); * @param string $linkName
} elseif($this->_insideOf == 'footer') { * @param mixed $style
$rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $src); * @return PHPWord_Section_Link
} */
$image->setRelationId($rID); public function addLink($linkSrc, $linkName = null, $style = null)
{
if ($this->_insideOf == 'section') {
if (!PHPWord_Shared_String::IsUTF8($linkSrc)) {
$linkSrc = utf8_encode($linkSrc);
}
if (!is_null($linkName)) {
if (!PHPWord_Shared_String::IsUTF8($linkName)) {
$linkName = utf8_encode($linkName);
}
}
$this->_elementCollection[] = $image; $link = new PHPWord_Section_Link($linkSrc, $linkName, $style);
return $image; $rID = PHPWord_Media::addSectionLinkElement($linkSrc);
} else { $link->setRelationId($rID);
trigger_error('Source does not exist or unsupported image type.');
}
}
/** $this->_elementCollection[] = $link;
* Add a by PHP created Image Element return $link;
* } else {
* @param string $link trigger_error('Unsupported Link header / footer reference');
* @param mixed $style return false;
* @return PHPWord_Section_MemoryImage }
*/ }
public function addMemoryImage($link, $style = null) {
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if(!is_null($memoryImage->getSource())) {
if($this->_insideOf == 'section') {
$rID = PHPWord_Media::addSectionMediaElement($link, 'image', $memoryImage);
} elseif($this->_insideOf == 'header') {
$rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $link, $memoryImage);
} elseif($this->_insideOf == 'footer') {
$rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $link, $memoryImage);
}
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $memoryImage; /**
return $memoryImage; * Add a TextBreak Element
} else { *
trigger_error('Unsupported image type.'); * @param int $count
} */
} public function addTextBreak()
{
$this->_elementCollection[] = new PHPWord_Section_TextBreak();
}
/** /**
* Add a OLE-Object Element * Add a ListItem Element
* *
* @param string $src * @param string $text
* @param mixed $style * @param int $depth
* @return PHPWord_Section_Object * @param mixed $styleText
*/ * @param mixed $styleList
public function addObject($src, $style = null) { * @return PHPWord_Section_ListItem
$object = new PHPWord_Section_Object($src, $style); */
public function addListItem($text, $depth = 0, $styleText = null, $styleList = null)
{
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$listItem = new PHPWord_Section_ListItem($text, $depth, $styleText, $styleList);
$this->_elementCollection[] = $listItem;
return $listItem;
}
if(!is_null($object->getSource())) { /**
$inf = pathinfo($src); * Add a Image Element
$ext = $inf['extension']; *
if(strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') { * @param string $src
$ext = substr($ext, 0, -1); * @param mixed $style
} * @return PHPWord_Section_Image
*/
public function addImage($src, $style = null)
{
$image = new PHPWord_Section_Image($src, $style);
$iconSrc = PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/'; if (!is_null($image->getSource())) {
if(!file_exists($iconSrc.'_'.$ext.'.png')) { if ($this->_insideOf == 'section') {
$iconSrc = $iconSrc.'_default.png'; $rID = PHPWord_Media::addSectionMediaElement($src, 'image');
} else { } elseif ($this->_insideOf == 'header') {
$iconSrc .= '_'.$ext.'.png'; $rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $src);
} } elseif ($this->_insideOf == 'footer') {
$rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $src);
}
$image->setRelationId($rID);
$rIDimg = PHPWord_Media::addSectionMediaElement($iconSrc, 'image'); $this->_elementCollection[] = $image;
$data = PHPWord_Media::addSectionMediaElement($src, 'oleObject'); return $image;
$rID = $data[0]; } else {
$objectId = $data[1]; trigger_error('Source does not exist or unsupported image type.');
}
}
$object->setRelationId($rID); /**
$object->setObjectId($objectId); * Add a by PHP created Image Element
$object->setImageRelationId($rIDimg); *
* @param string $link
* @param mixed $style
* @return PHPWord_Section_MemoryImage
*/
public function addMemoryImage($link, $style = null)
{
$memoryImage = new PHPWord_Section_MemoryImage($link, $style);
if (!is_null($memoryImage->getSource())) {
if ($this->_insideOf == 'section') {
$rID = PHPWord_Media::addSectionMediaElement($link, 'image', $memoryImage);
} elseif ($this->_insideOf == 'header') {
$rID = PHPWord_Media::addHeaderMediaElement($this->_pCount, $link, $memoryImage);
} elseif ($this->_insideOf == 'footer') {
$rID = PHPWord_Media::addFooterMediaElement($this->_pCount, $link, $memoryImage);
}
$memoryImage->setRelationId($rID);
$this->_elementCollection[] = $object; $this->_elementCollection[] = $memoryImage;
return $object; return $memoryImage;
} else { } else {
trigger_error('Source does not exist or unsupported object type.'); trigger_error('Unsupported image type.');
} }
} }
/** /**
* Add a PreserveText Element * Add a OLE-Object Element
* *
* @param string $text * @param string $src
* @param mixed $styleFont * @param mixed $style
* @param mixed $styleParagraph * @return PHPWord_Section_Object
* @return PHPWord_Section_Footer_PreserveText */
*/ public function addObject($src, $style = null)
public function addPreserveText($text, $styleFont = null, $styleParagraph = null) { {
if($this->_insideOf == 'footer' || $this->_insideOf == 'header') { $object = new PHPWord_Section_Object($src, $style);
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
}
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
} else {
trigger_error('addPreserveText only supported in footer/header.');
}
}
/** if (!is_null($object->getSource())) {
* Create a new TextRun $inf = pathinfo($src);
* $ext = $inf['extension'];
* @return PHPWord_Section_TextRun if (strlen($ext) == 4 && strtolower(substr($ext, -1)) == 'x') {
*/ $ext = substr($ext, 0, -1);
public function createTextRun($styleParagraph = null) { }
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/** $iconSrc = PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/';
* Get all Elements if (!file_exists($iconSrc . '_' . $ext . '.png')) {
* $iconSrc = $iconSrc . '_default.png';
* @return array } else {
*/ $iconSrc .= '_' . $ext . '.png';
public function getElements() { }
return $this->_elementCollection;
}
/** $rIDimg = PHPWord_Media::addSectionMediaElement($iconSrc, 'image');
* Get Cell Style $data = PHPWord_Media::addSectionMediaElement($src, 'oleObject');
* $rID = $data[0];
* @return PHPWord_Style_Cell $objectId = $data[1];
*/
public function getStyle() {
return $this->_style;
}
/** $object->setRelationId($rID);
* Get Cell width $object->setObjectId($objectId);
* $object->setImageRelationId($rIDimg);
* @return int
*/ $this->_elementCollection[] = $object;
public function getWidth() { return $object;
return $this->_width; } else {
} trigger_error('Source does not exist or unsupported object type.');
}
}
/**
* Add a PreserveText Element
*
* @param string $text
* @param mixed $styleFont
* @param mixed $styleParagraph
* @return PHPWord_Section_Footer_PreserveText
*/
public function addPreserveText($text, $styleFont = null, $styleParagraph = null)
{
if ($this->_insideOf == 'footer' || $this->_insideOf == 'header') {
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$ptext = new PHPWord_Section_Footer_PreserveText($text, $styleFont, $styleParagraph);
$this->_elementCollection[] = $ptext;
return $ptext;
} else {
trigger_error('addPreserveText only supported in footer/header.');
}
}
/**
* Create a new TextRun
*
* @return PHPWord_Section_TextRun
*/
public function createTextRun($styleParagraph = null)
{
$textRun = new PHPWord_Section_TextRun($styleParagraph);
$this->_elementCollection[] = $textRun;
return $textRun;
}
/**
* Get all Elements
*
* @return array
*/
public function getElements()
{
return $this->_elementCollection;
}
/**
* Get Cell Style
*
* @return PHPWord_Style_Cell
*/
public function getStyle()
{
return $this->_style;
}
/**
* Get Cell width
*
* @return int
*/
public function getWidth()
{
return $this->_width;
}
} }
?>

207
Classes/PHPWord/Section/Text.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,126 +20,127 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Text * Class PHPWord_Section_Text
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Text { class PHPWord_Section_Text
{
/** /**
* Text content * Text content
* *
* @var string * @var string
*/ */
private $_text; private $_text;
/** /**
* Text style * Text style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleFont; private $_styleFont;
/** /**
* Paragraph style * Paragraph style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleParagraph; private $_styleParagraph;
/** /**
* Create a new Text Element * Create a new Text Element
* *
* @var string $text * @var string $text
* @var mixed $style * @var mixed $style
*/ */
public function __construct($text = null, $styleFont = null, $styleParagraph = null) { public function __construct($text = null, $styleFont = null, $styleParagraph = null)
// Set font style {
$this->setFontStyle($styleFont); // Set font style
$this->setFontStyle($styleFont);
// Set paragraph style // Set paragraph style
$this->setParagraphStyle($styleParagraph); $this->setParagraphStyle($styleParagraph);
$this->_text = $text; $this->_text = $text;
return $this; return $this;
} }
/** /**
* Get Text style * Get Text style
* *
* @return PHPWord_Style_Font * @return PHPWord_Style_Font
*/ */
public function getFontStyle() { public function getFontStyle()
return $this->_styleFont; {
} return $this->_styleFont;
}
/** /**
* Set Text style * Set Text style
* *
* @return PHPWord_Style_Font * @return PHPWord_Style_Font
*/ */
public function setFontStyle($styleFont) { public function setFontStyle($styleFont)
if(is_array($styleFont)) { {
$this->_styleFont = new PHPWord_Style_Font('text'); if (is_array($styleFont)) {
$this->_styleFont = new PHPWord_Style_Font('text');
foreach($styleFont as $key => $value) { foreach ($styleFont as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleFont->setStyleValue($key, $value); $this->_styleFont->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleFont = $styleFont; $this->_styleFont = $styleFont;
} }
} }
/** /**
* Get Paragraph style * Get Paragraph style
* *
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function getParagraphStyle() { public function getParagraphStyle()
return $this->_styleParagraph; {
} return $this->_styleParagraph;
}
/** /**
* Set Paragraph style * Set Paragraph style
* *
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setParagraphStyle($styleParagraph) { public function setParagraphStyle($styleParagraph)
if(is_array($styleParagraph)) { {
$this->_styleParagraph = new PHPWord_Style_Paragraph(); if (is_array($styleParagraph)) {
$this->_styleParagraph = new PHPWord_Style_Paragraph();
foreach($styleParagraph as $key => $value) { foreach ($styleParagraph as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleParagraph->setStyleValue($key, $value); $this->_styleParagraph->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleParagraph = $styleParagraph; $this->_styleParagraph = $styleParagraph;
} }
} }
/** /**
* Get Text content * Get Text content
* *
* @return string * @return string
*/ */
public function getText() { public function getText()
return $this->_text; {
} return $this->_text;
}
} }
?>

30
Classes/PHPWord/Section/TextBreak.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,26 +20,22 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_TextBreak * Class PHPWord_Section_TextBreak
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_TextBreak { class PHPWord_Section_TextBreak
{
/** /**
* Create a new TextBreak Element * Create a new TextBreak Element
*/ */
public function __construct() { public function __construct()
// nothing {
} // nothing
}
} }
?>

182
Classes/PHPWord/Section/TextRun.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,112 +20,112 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_TextRun * PHPWord_Section_TextRun
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_TextRun { class PHPWord_Section_TextRun
{
/** /**
* Paragraph style * Paragraph style
* *
* @var PHPWord_Style_Font * @var PHPWord_Style_Font
*/ */
private $_styleParagraph; private $_styleParagraph;
/** /**
* Text collection * Text collection
* *
* @var array * @var array
*/ */
private $_elementCollection; private $_elementCollection;
/** /**
* Create a new TextRun Element * Create a new TextRun Element
*/ */
public function __construct($styleParagraph = null) { public function __construct($styleParagraph = null)
$this->_elementCollection = array(); {
$this->_elementCollection = array();
// Set paragraph style // Set paragraph style
if(is_array($styleParagraph)) { if (is_array($styleParagraph)) {
$this->_styleParagraph = new PHPWord_Style_Paragraph(); $this->_styleParagraph = new PHPWord_Style_Paragraph();
foreach($styleParagraph as $key => $value) { foreach ($styleParagraph as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$this->_styleParagraph->setStyleValue($key, $value); $this->_styleParagraph->setStyleValue($key, $value);
} }
} else { } else {
$this->_styleParagraph = $styleParagraph; $this->_styleParagraph = $styleParagraph;
} }
}
/**
* Add a Text Element
*
* @var string $text
* @var mixed $styleFont
* @return PHPWord_Section_Text
*/
public function addText($text = null, $styleFont = null) {
if(!PHPWord_Shared_String::IsUTF8($text)){
$text = utf8_encode($text);
} }
$text = new PHPWord_Section_Text($text, $styleFont);
$this->_elementCollection[] = $text;
return $text;
}
/**
* Add a Link Element
*
* @param string $linkSrc
* @param string $linkName
* @param mixed $styleFont
* @return PHPWord_Section_Link
*/
public function addLink($linkSrc, $linkName = null, $styleFont = null) {
$linkSrc = utf8_encode($linkSrc);
if(!is_null($linkName)) {
$linkName = utf8_encode($linkName);
}
$link = new PHPWord_Section_Link($linkSrc, $linkName, $styleFont); /**
$rID = PHPWord_Media::addSectionLinkElement($linkSrc); * Add a Text Element
$link->setRelationId($rID); *
* @var string $text
* @var mixed $styleFont
* @return PHPWord_Section_Text
*/
public function addText($text = null, $styleFont = null)
{
if (!PHPWord_Shared_String::IsUTF8($text)) {
$text = utf8_encode($text);
}
$text = new PHPWord_Section_Text($text, $styleFont);
$this->_elementCollection[] = $text;
return $text;
}
$this->_elementCollection[] = $link; /**
return $link; * Add a Link Element
} *
* @param string $linkSrc
* @param string $linkName
* @param mixed $styleFont
* @return PHPWord_Section_Link
*/
public function addLink($linkSrc, $linkName = null, $styleFont = null)
{
$linkSrc = utf8_encode($linkSrc);
if (!is_null($linkName)) {
$linkName = utf8_encode($linkName);
}
/** $link = new PHPWord_Section_Link($linkSrc, $linkName, $styleFont);
* Get TextRun content $rID = PHPWord_Media::addSectionLinkElement($linkSrc);
* $link->setRelationId($rID);
* @return string
*/
public function getElements() {
return $this->_elementCollection;
}
/** $this->_elementCollection[] = $link;
* Get Paragraph style return $link;
* }
* @return PHPWord_Style_Paragraph
*/ /**
public function getParagraphStyle() { * Get TextRun content
return $this->_styleParagraph; *
} * @return string
*/
public function getElements()
{
return $this->_elementCollection;
}
/**
* Get Paragraph style
*
* @return PHPWord_Style_Paragraph
*/
public function getParagraphStyle()
{
return $this->_styleParagraph;
}
} }
?>

208
Classes/PHPWord/Section/Title.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,126 +20,128 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Section_Title * Class PHPWord_Section_Title
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Section_Title { class PHPWord_Section_Title
{
/** /**
* Title Text content * Title Text content
* *
* @var string * @var string
*/ */
private $_text; private $_text;
/** /**
* Title depth * Title depth
* *
* @var int * @var int
*/ */
private $_depth; private $_depth;
/** /**
* Title anchor * Title anchor
* *
* @var int * @var int
*/ */
private $_anchor; private $_anchor;
/** /**
* Title Bookmark ID * Title Bookmark ID
* *
* @var int * @var int
*/ */
private $_bookmarkId; private $_bookmarkId;
/** /**
* Title style * Title style
* *
* @var string * @var string
*/ */
private $_style; private $_style;
/** /**
* Create a new Title Element * Create a new Title Element
* *
* @var string $text * @var string $text
* @var int $depth * @var int $depth
*/ */
public function __construct($text, $depth = 1, $style = null) { public function __construct($text, $depth = 1, $style = null)
if(!is_null($style)) { {
$this->_style = $style; if (!is_null($style)) {
} $this->_style = $style;
}
$this->_text = $text; $this->_text = $text;
$this->_depth = $depth; $this->_depth = $depth;
return $this; return $this;
} }
/** /**
* Set Anchor * Set Anchor
* *
* @var int $anchor * @var int $anchor
*/ */
public function setAnchor($anchor) { public function setAnchor($anchor)
$this->_anchor = $anchor; {
} $this->_anchor = $anchor;
}
/** /**
* Get Anchor * Get Anchor
* *
* @return int * @return int
*/ */
public function getAnchor() { public function getAnchor()
return $this->_anchor; {
} return $this->_anchor;
}
/** /**
* Set Bookmark ID * Set Bookmark ID
* *
* @var int $bookmarkId * @var int $bookmarkId
*/ */
public function setBookmarkId($bookmarkId) { public function setBookmarkId($bookmarkId)
$this->_bookmarkId = $bookmarkId; {
} $this->_bookmarkId = $bookmarkId;
}
/** /**
* Get Anchor * Get Anchor
* *
* @return int * @return int
*/ */
public function getBookmarkId() { public function getBookmarkId()
return $this->_bookmarkId; {
} return $this->_bookmarkId;
}
/** /**
* Get Title Text content * Get Title Text content
* *
* @return string * @return string
*/ */
public function getText() { public function getText()
return $this->_text; {
} return $this->_text;
}
/** /**
* Get Title style * Get Title style
* *
* @return string * @return string
*/ */
public function getStyle() { public function getStyle()
return $this->_style; {
} return $this->_style;
}
} }
?>

241
Classes/PHPWord/Shared/Drawing.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,135 +20,144 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Shared_Drawing
*/
class PHPWord_Shared_Drawing class PHPWord_Shared_Drawing
{ {
/** /**
* Convert pixels to EMU * Convert pixels to EMU
* *
* @param int $pValue Value in pixels * @param int $pValue Value in pixels
* @return int Value in EMU * @return int Value in EMU
*/ */
public static function pixelsToEMU($pValue = 0) { public static function pixelsToEMU($pValue = 0)
return round($pValue * 9525); {
} return round($pValue * 9525);
}
/** /**
* Convert EMU to pixels * Convert EMU to pixels
* *
* @param int $pValue Value in EMU * @param int $pValue Value in EMU
* @return int Value in pixels * @return int Value in pixels
*/ */
public static function EMUToPixels($pValue = 0) { public static function EMUToPixels($pValue = 0)
if ($pValue != 0) { {
return round($pValue / 9525); if ($pValue != 0) {
} else { return round($pValue / 9525);
return 0; } else {
} return 0;
} }
}
/** /**
* Convert pixels to points * Convert pixels to points
* *
* @param int $pValue Value in pixels * @param int $pValue Value in pixels
* @return int Value in points * @return int Value in points
*/ */
public static function pixelsToPoints($pValue = 0) { public static function pixelsToPoints($pValue = 0)
return $pValue * 0.67777777; {
} return $pValue * 0.67777777;
}
/** /**
* Convert points width to pixels * Convert points width to pixels
* *
* @param int $pValue Value in points * @param int $pValue Value in points
* @return int Value in pixels * @return int Value in pixels
*/ */
public static function pointsToPixels($pValue = 0) { public static function pointsToPixels($pValue = 0)
if ($pValue != 0) { {
return $pValue * 1.333333333; if ($pValue != 0) {
} else { return $pValue * 1.333333333;
return 0; } else {
} return 0;
} }
}
/** /**
* Convert degrees to angle * Convert degrees to angle
* *
* @param int $pValue Degrees * @param int $pValue Degrees
* @return int Angle * @return int Angle
*/ */
public static function degreesToAngle($pValue = 0) { public static function degreesToAngle($pValue = 0)
return (int)round($pValue * 60000); {
} return (int)round($pValue * 60000);
}
/** /**
* Convert angle to degrees * Convert angle to degrees
* *
* @param int $pValue Angle * @param int $pValue Angle
* @return int Degrees * @return int Degrees
*/ */
public static function angleToDegrees($pValue = 0) { public static function angleToDegrees($pValue = 0)
if ($pValue != 0) { {
return round($pValue / 60000); if ($pValue != 0) {
} else { return round($pValue / 60000);
return 0; } else {
} return 0;
} }
}
/** /**
* Convert pixels to centimeters * Convert pixels to centimeters
* *
* @param int $pValue Value in pixels * @param int $pValue Value in pixels
* @return int Value in centimeters * @return int Value in centimeters
*/ */
public static function pixelsToCentimeters($pValue = 0) { public static function pixelsToCentimeters($pValue = 0)
return $pValue * 0.028; {
} return $pValue * 0.028;
}
/** /**
* Convert centimeters width to pixels * Convert centimeters width to pixels
* *
* @param int $pValue Value in centimeters * @param int $pValue Value in centimeters
* @return int Value in pixels * @return int Value in pixels
*/ */
public static function centimetersToPixels($pValue = 0) { public static function centimetersToPixels($pValue = 0)
if ($pValue != 0) { {
return $pValue * 0.028; if ($pValue != 0) {
} else { return $pValue * 0.028;
return 0; } else {
} return 0;
} }
}
/** /**
* Convert HTML hexadecimal to RGB * Convert HTML hexadecimal to RGB
* *
* @param str $pValue HTML Color in hexadecimal * @param str $pValue HTML Color in hexadecimal
* @return array Value in RGB * @return array Value in RGB
*/ */
public static function htmlToRGB($pValue) { public static function htmlToRGB($pValue)
if ($pValue[0] == '#'){ {
$pValue = substr($pValue, 1); if ($pValue[0] == '#') {
} $pValue = substr($pValue, 1);
}
if (strlen($pValue) == 6){ if (strlen($pValue) == 6) {
list($color_R, $color_G, $color_B) = array($pValue[0].$pValue[1],$pValue[2].$pValue[3],$pValue[4].$pValue[5]); list($color_R, $color_G, $color_B) = array($pValue[0] . $pValue[1], $pValue[2] . $pValue[3], $pValue[4] . $pValue[5]);
} } elseif (strlen($pValue) == 3) {
elseif (strlen($pValue) == 3){ list($color_R, $color_G, $color_B) = array($pValue[0] . $pValue[0], $pValue[1] . $pValue[1], $pValue[2] . $pValue[2]);
list($color_R, $color_G, $color_B) = array($pValue[0].$pValue[0],$pValue[1].$pValue[1],$pValue[2].$pValue[2]); } else {
} return false;
else{ }
return false;
}
$color_R = hexdec($color_R); $color_R = hexdec($color_R);
$color_G = hexdec($color_G); $color_G = hexdec($color_G);
$color_B = hexdec($color_B); $color_B = hexdec($color_B);
return array($color_R, $color_G, $color_B); return array($color_R, $color_G, $color_B);
} }
} }

122
Classes/PHPWord/Shared/File.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,72 +20,76 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Shared_File
*/
class PHPWord_Shared_File class PHPWord_Shared_File
{ {
/** /**
* Verify if a file exists * Verify if a file exists
* *
* @param string $pFilename Filename * @param string $pFilename Filename
* @return bool * @return bool
*/ */
public static function file_exists($pFilename) { public static function file_exists($pFilename)
// Sick construction, but it seems that {
// file_exists returns strange values when // Sick construction, but it seems that
// doing the original file_exists on ZIP archives... // file_exists returns strange values when
if ( strtolower(substr($pFilename, 0, 3)) == 'zip' ) { // doing the original file_exists on ZIP archives...
// Open ZIP file and verify if the file exists if (strtolower(substr($pFilename, 0, 3)) == 'zip') {
$zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6); // Open ZIP file and verify if the file exists
$archiveFile = substr($pFilename, strpos($pFilename, '#') + 1); $zipFile = substr($pFilename, 6, strpos($pFilename, '#') - 6);
$archiveFile = substr($pFilename, strpos($pFilename, '#') + 1);
$zip = new ZipArchive(); $zip = new ZipArchive();
if ($zip->open($zipFile) === true) { if ($zip->open($zipFile) === true) {
$returnValue = ($zip->getFromName($archiveFile) !== false); $returnValue = ($zip->getFromName($archiveFile) !== false);
$zip->close(); $zip->close();
return $returnValue; return $returnValue;
} else { } else {
return false; return false;
} }
} else { } else {
// Regular file_exists // Regular file_exists
return file_exists($pFilename); return file_exists($pFilename);
} }
} }
/** /**
* Returns canonicalized absolute pathname, also for ZIP archives * Returns canonicalized absolute pathname, also for ZIP archives
* *
* @param string $pFilename * @param string $pFilename
* @return string * @return string
*/ */
public static function realpath($pFilename) { public static function realpath($pFilename)
// Returnvalue {
$returnValue = ''; // Returnvalue
$returnValue = '';
// Try using realpath() // Try using realpath()
$returnValue = realpath($pFilename); $returnValue = realpath($pFilename);
// Found something? // Found something?
if ($returnValue == '' || is_null($returnValue)) { if ($returnValue == '' || is_null($returnValue)) {
$pathArray = split('/' , $pFilename); $pathArray = split('/', $pFilename);
while(in_array('..', $pathArray) && $pathArray[0] != '..') { while (in_array('..', $pathArray) && $pathArray[0] != '..') {
for ($i = 0; $i < count($pathArray); ++$i) { for ($i = 0; $i < count($pathArray); ++$i) {
if ($pathArray[$i] == '..' && $i > 0) { if ($pathArray[$i] == '..' && $i > 0) {
unset($pathArray[$i]); unset($pathArray[$i]);
unset($pathArray[$i - 1]); unset($pathArray[$i - 1]);
break; break;
} }
} }
} }
$returnValue = implode('/', $pathArray); $returnValue = implode('/', $pathArray);
} }
// Return // Return
return $returnValue; return $returnValue;
} }
} }

88
Classes/PHPWord/Shared/Font.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,53 +20,61 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Shared_Font
*/
class PHPWord_Shared_Font class PHPWord_Shared_Font
{ {
/** /**
* Calculate an (approximate) pixel size, based on a font points size * Calculate an (approximate) pixel size, based on a font points size
* *
* @param int $fontSizeInPoints Font size (in points) * @param int $fontSizeInPoints Font size (in points)
* @return int Font size (in pixels) * @return int Font size (in pixels)
*/ */
public static function fontSizeToPixels($fontSizeInPoints = 12) { public static function fontSizeToPixels($fontSizeInPoints = 12)
return ((16 / 12) * $fontSizeInPoints); {
} return ((16 / 12) * $fontSizeInPoints);
}
/** /**
* Calculate an (approximate) pixel size, based on inch size * Calculate an (approximate) pixel size, based on inch size
* *
* @param int $sizeInInch Font size (in inch) * @param int $sizeInInch Font size (in inch)
* @return int Size (in pixels) * @return int Size (in pixels)
*/ */
public static function inchSizeToPixels($sizeInInch = 1) { public static function inchSizeToPixels($sizeInInch = 1)
return ($sizeInInch * 96); {
} return ($sizeInInch * 96);
}
/** /**
* Calculate an (approximate) pixel size, based on centimeter size * Calculate an (approximate) pixel size, based on centimeter size
* *
* @param int $sizeInCm Font size (in centimeters) * @param int $sizeInCm Font size (in centimeters)
* @return int Size (in pixels) * @return int Size (in pixels)
*/ */
public static function centimeterSizeToPixels($sizeInCm = 1) { public static function centimeterSizeToPixels($sizeInCm = 1)
return ($sizeInCm * 37.795275591); {
} return ($sizeInCm * 37.795275591);
}
public static function centimeterSizeToTwips($sizeInCm = 1) { public static function centimeterSizeToTwips($sizeInCm = 1)
return ($sizeInCm * 565.217); {
} return ($sizeInCm * 565.217);
}
public static function inchSizeToTwips($sizeInInch = 1) { public static function inchSizeToTwips($sizeInInch = 1)
return self::centimeterSizeToTwips($sizeInInch * 2.54); {
} return self::centimeterSizeToTwips($sizeInInch * 2.54);
}
public static function pixelSizeToTwips($sizeInPixel = 1) { public static function pixelSizeToTwips($sizeInPixel = 1)
return self::centimeterSizeToTwips($sizeInPixel / 37.795275591); {
} return self::centimeterSizeToTwips($sizeInPixel / 37.795275591);
}
} }

419
Classes/PHPWord/Shared/String.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,244 +20,251 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Shared_String
*/
class PHPWord_Shared_String class PHPWord_Shared_String
{ {
/** /**
* Control characters array * Control characters array
* *
* @var string[] * @var string[]
*/ */
private static $_controlCharacters = array(); private static $_controlCharacters = array();
/** /**
* Is mbstring extension avalable? * Is mbstring extension avalable?
* *
* @var boolean * @var boolean
*/ */
private static $_isMbstringEnabled; private static $_isMbstringEnabled;
/** /**
* Is iconv extension avalable? * Is iconv extension avalable?
* *
* @var boolean * @var boolean
*/ */
private static $_isIconvEnabled; private static $_isIconvEnabled;
/** /**
* Build control characters array * Build control characters array
*/ */
private static function _buildControlCharacters() { private static function _buildControlCharacters()
for ($i = 0; $i <= 19; ++$i) { {
if ($i != 9 && $i != 10 && $i != 13) { for ($i = 0; $i <= 19; ++$i) {
$find = '_x' . sprintf('%04s' , strtoupper(dechex($i))) . '_'; if ($i != 9 && $i != 10 && $i != 13) {
$replace = chr($i); $find = '_x' . sprintf('%04s', strtoupper(dechex($i))) . '_';
self::$_controlCharacters[$find] = $replace; $replace = chr($i);
} self::$_controlCharacters[$find] = $replace;
} }
} }
}
/** /**
* Get whether mbstring extension is available * Get whether mbstring extension is available
* *
* @return boolean * @return boolean
*/ */
public static function getIsMbstringEnabled() public static function getIsMbstringEnabled()
{ {
if (isset(self::$_isMbstringEnabled)) { if (isset(self::$_isMbstringEnabled)) {
return self::$_isMbstringEnabled; return self::$_isMbstringEnabled;
} }
self::$_isMbstringEnabled = function_exists('mb_convert_encoding') ? self::$_isMbstringEnabled = function_exists('mb_convert_encoding') ?
true : false; true : false;
return self::$_isMbstringEnabled; return self::$_isMbstringEnabled;
} }
/** /**
* Get whether iconv extension is available * Get whether iconv extension is available
* *
* @return boolean * @return boolean
*/ */
public static function getIsIconvEnabled() public static function getIsIconvEnabled()
{ {
if (isset(self::$_isIconvEnabled)) { if (isset(self::$_isIconvEnabled)) {
return self::$_isIconvEnabled; return self::$_isIconvEnabled;
} }
self::$_isIconvEnabled = function_exists('iconv') ? self::$_isIconvEnabled = function_exists('iconv') ?
true : false; true : false;
return self::$_isIconvEnabled; return self::$_isIconvEnabled;
} }
/** /**
* Convert from OpenXML escaped control character to PHP control character * Convert from OpenXML escaped control character to PHP control character
* *
* Excel 2007 team: * Excel 2007 team:
* ---------------- * ----------------
* That's correct, control characters are stored directly in the shared-strings table. * That's correct, control characters are stored directly in the shared-strings table.
* We do encode characters that cannot be represented in XML using the following escape sequence: * We do encode characters that cannot be represented in XML using the following escape sequence:
* _xHHHH_ where H represents a hexadecimal character in the character's value... * _xHHHH_ where H represents a hexadecimal character in the character's value...
* So you could end up with something like _x0008_ in a string (either in a cell value (<v>) * So you could end up with something like _x0008_ in a string (either in a cell value (<v>)
* element or in the shared string <t> element. * element or in the shared string <t> element.
* *
* @param string $value Value to unescape * @param string $value Value to unescape
* @return string * @return string
*/ */
public static function ControlCharacterOOXML2PHP($value = '') { public static function ControlCharacterOOXML2PHP($value = '')
if(empty(self::$_controlCharacters)) { {
self::_buildControlCharacters(); if (empty(self::$_controlCharacters)) {
} self::_buildControlCharacters();
}
return str_replace( array_keys(self::$_controlCharacters), array_values(self::$_controlCharacters), $value ); return str_replace(array_keys(self::$_controlCharacters), array_values(self::$_controlCharacters), $value);
} }
/** /**
* Convert from PHP control character to OpenXML escaped control character * Convert from PHP control character to OpenXML escaped control character
* *
* Excel 2007 team: * Excel 2007 team:
* ---------------- * ----------------
* That's correct, control characters are stored directly in the shared-strings table. * That's correct, control characters are stored directly in the shared-strings table.
* We do encode characters that cannot be represented in XML using the following escape sequence: * We do encode characters that cannot be represented in XML using the following escape sequence:
* _xHHHH_ where H represents a hexadecimal character in the character's value... * _xHHHH_ where H represents a hexadecimal character in the character's value...
* So you could end up with something like _x0008_ in a string (either in a cell value (<v>) * So you could end up with something like _x0008_ in a string (either in a cell value (<v>)
* element or in the shared string <t> element. * element or in the shared string <t> element.
* *
* @param string $value Value to escape * @param string $value Value to escape
* @return string * @return string
*/ */
public static function ControlCharacterPHP2OOXML($value = '') { public static function ControlCharacterPHP2OOXML($value = '')
if(empty(self::$_controlCharacters)) { {
self::_buildControlCharacters(); if (empty(self::$_controlCharacters)) {
} self::_buildControlCharacters();
}
return str_replace( array_values(self::$_controlCharacters), array_keys(self::$_controlCharacters), $value ); return str_replace(array_values(self::$_controlCharacters), array_keys(self::$_controlCharacters), $value);
} }
/** /**
* Check if a string contains UTF-8 data * Check if a string contains UTF-8 data
* *
* @param string $value * @param string $value
* @return boolean * @return boolean
*/ */
public static function IsUTF8($value = '') { public static function IsUTF8($value = '')
return $value === '' || preg_match('/^./su', $value) === 1; {
} return $value === '' || preg_match('/^./su', $value) === 1;
}
/** /**
* Formats a numeric value as a string for output in various output writers * Formats a numeric value as a string for output in various output writers
* *
* @param mixed $value * @param mixed $value
* @return string * @return string
*/ */
public static function FormatNumber($value) { public static function FormatNumber($value)
return number_format($value, 2, '.', ''); {
} return number_format($value, 2, '.', '');
}
/** /**
* Converts a UTF-8 string into BIFF8 Unicode string data (8-bit string length) * Converts a UTF-8 string into BIFF8 Unicode string data (8-bit string length)
* Writes the string using uncompressed notation, no rich text, no Asian phonetics * Writes the string using uncompressed notation, no rich text, no Asian phonetics
* If mbstring extension is not available, ASCII is assumed, and compressed notation is used * If mbstring extension is not available, ASCII is assumed, and compressed notation is used
* although this will give wrong results for non-ASCII strings * although this will give wrong results for non-ASCII strings
* see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3
* *
* @param string $value UTF-8 encoded string * @param string $value UTF-8 encoded string
* @return string * @return string
*/ */
public static function UTF8toBIFF8UnicodeShort($value) public static function UTF8toBIFF8UnicodeShort($value)
{ {
// character count // character count
$ln = self::CountCharacters($value, 'UTF-8'); $ln = self::CountCharacters($value, 'UTF-8');
// option flags // option flags
$opt = (self::getIsMbstringEnabled() || self::getIsIconvEnabled()) ? $opt = (self::getIsMbstringEnabled() || self::getIsIconvEnabled()) ?
0x0001 : 0x0000; 0x0001 : 0x0000;
// characters // characters
$chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); $chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8');
$data = pack('CC', $ln, $opt) . $chars; $data = pack('CC', $ln, $opt) . $chars;
return $data; return $data;
} }
/** /**
* Converts a UTF-8 string into BIFF8 Unicode string data (16-bit string length) * Converts a UTF-8 string into BIFF8 Unicode string data (16-bit string length)
* Writes the string using uncompressed notation, no rich text, no Asian phonetics * Writes the string using uncompressed notation, no rich text, no Asian phonetics
* If mbstring extension is not available, ASCII is assumed, and compressed notation is used * If mbstring extension is not available, ASCII is assumed, and compressed notation is used
* although this will give wrong results for non-ASCII strings * although this will give wrong results for non-ASCII strings
* see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3 * see OpenOffice.org's Documentation of the Microsoft Excel File Format, sect. 2.5.3
* *
* @param string $value UTF-8 encoded string * @param string $value UTF-8 encoded string
* @return string * @return string
*/ */
public static function UTF8toBIFF8UnicodeLong($value) public static function UTF8toBIFF8UnicodeLong($value)
{ {
// character count // character count
$ln = self::CountCharacters($value, 'UTF-8'); $ln = self::CountCharacters($value, 'UTF-8');
// option flags // option flags
$opt = (self::getIsMbstringEnabled() || self::getIsIconvEnabled()) ? $opt = (self::getIsMbstringEnabled() || self::getIsIconvEnabled()) ?
0x0001 : 0x0000; 0x0001 : 0x0000;
// characters // characters
$chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8'); $chars = self::ConvertEncoding($value, 'UTF-16LE', 'UTF-8');
$data = pack('vC', $ln, $opt) . $chars; $data = pack('vC', $ln, $opt) . $chars;
return $data; return $data;
} }
/** /**
* Convert string from one encoding to another. First try mbstring, then iconv, or no convertion * Convert string from one encoding to another. First try mbstring, then iconv, or no convertion
* *
* @param string $value * @param string $value
* @param string $to Encoding to convert to, e.g. 'UTF-8' * @param string $to Encoding to convert to, e.g. 'UTF-8'
* @param string $from Encoding to convert from, e.g. 'UTF-16LE' * @param string $from Encoding to convert from, e.g. 'UTF-16LE'
* @return string * @return string
*/ */
public static function ConvertEncoding($value, $to, $from) public static function ConvertEncoding($value, $to, $from)
{ {
if (self::getIsMbstringEnabled()) { if (self::getIsMbstringEnabled()) {
$value = mb_convert_encoding($value, $to, $from); $value = mb_convert_encoding($value, $to, $from);
return $value; return $value;
} }
if (self::getIsIconvEnabled()) { if (self::getIsIconvEnabled()) {
$value = iconv($from, $to, $value); $value = iconv($from, $to, $value);
return $value; return $value;
} }
// else, no conversion // else, no conversion
return $value; return $value;
} }
/** /**
* Get character count. First try mbstring, then iconv, finally strlen * Get character count. First try mbstring, then iconv, finally strlen
* *
* @param string $value * @param string $value
* @param string $enc Encoding * @param string $enc Encoding
* @return int Character count * @return int Character count
*/ */
public static function CountCharacters($value, $enc = 'UTF-8') public static function CountCharacters($value, $enc = 'UTF-8')
{ {
if (self::getIsMbstringEnabled()) { if (self::getIsMbstringEnabled()) {
$count = mb_strlen($value, $enc); $count = mb_strlen($value, $enc);
return $count; return $count;
} }
if (self::getIsIconvEnabled()) { if (self::getIsIconvEnabled()) {
$count = iconv_strlen($value, $enc); $count = iconv_strlen($value, $enc);
return $count; return $count;
} }
// else strlen // else strlen
$count = strlen($value); $count = strlen($value);
return $count; return $count;
} }
} }

216
Classes/PHPWord/Shared/XMLWriter.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,124 +20,134 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
if (!defined('DATE_W3C')) {
if(!defined('DATE_W3C')) { define('DATE_W3C', 'Y-m-d\TH:i:sP');
define('DATE_W3C', 'Y-m-d\TH:i:sP');
} }
/**
* Class PHPWord_Shared_XMLWriter
*
* @method bool startElement(string $name)
* @method bool writeAttribute(string $name, string $value)
* @method bool endElement()
*/
class PHPWord_Shared_XMLWriter
{
/** Temporary storage method */
const STORAGE_MEMORY = 1;
const STORAGE_DISK = 2;
class PHPWord_Shared_XMLWriter { /**
/** Temporary storage method */ * Internal XMLWriter
const STORAGE_MEMORY = 1; *
const STORAGE_DISK = 2; * @var XMLWriter
*/
private $_xmlWriter;
/** /**
* Internal XMLWriter * Temporary filename
* *
* @var XMLWriter * @var string
*/ */
private $_xmlWriter; private $_tempFileName = '';
/** /**
* Temporary filename * Create a new PHPPowerPoint_Shared_XMLWriter instance
* *
* @var string * @param int $pTemporaryStorage Temporary storage location
*/ * @param string $pTemporaryStorageFolder Temporary storage folder
private $_tempFileName = ''; */
public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = './')
{
// Create internal XMLWriter
$this->_xmlWriter = new XMLWriter();
/** // Open temporary storage
* Create a new PHPPowerPoint_Shared_XMLWriter instance if ($pTemporaryStorage == self::STORAGE_MEMORY) {
* $this->_xmlWriter->openMemory();
* @param int $pTemporaryStorage Temporary storage location } else {
* @param string $pTemporaryStorageFolder Temporary storage folder // Create temporary filename
*/ $this->_tempFileName = @tempnam($pTemporaryStorageFolder, 'xml');
public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = './') {
// Create internal XMLWriter
$this->_xmlWriter = new XMLWriter();
// Open temporary storage // Open storage
if ($pTemporaryStorage == self::STORAGE_MEMORY) { if ($this->_xmlWriter->openUri($this->_tempFileName) === false) {
$this->_xmlWriter->openMemory(); // Fallback to memory...
} else { $this->_xmlWriter->openMemory();
// Create temporary filename }
$this->_tempFileName = @tempnam($pTemporaryStorageFolder, 'xml'); }
// Open storage // Set default values
if ($this->_xmlWriter->openUri($this->_tempFileName) === false) { // proposed to be false in production version
// Fallback to memory... $this->_xmlWriter->setIndent(true);
$this->_xmlWriter->openMemory(); //$this->_xmlWriter->setIndent(false);
}
}
// Set default values // Set indent
// proposed to be false in production version // proposed to be '' in production version
$this->_xmlWriter->setIndent(true); $this->_xmlWriter->setIndentString(' ');
//$this->_xmlWriter->setIndent(false); //$this->_xmlWriter->setIndentString('');
}
// Set indent /**
// proposed to be '' in production version * Destructor
$this->_xmlWriter->setIndentString(' '); */
//$this->_xmlWriter->setIndentString(''); public function __destruct()
} {
// Desctruct XMLWriter
unset($this->_xmlWriter);
/** // Unlink temporary files
* Destructor if ($this->_tempFileName != '') {
*/ @unlink($this->_tempFileName);
public function __destruct() { }
// Desctruct XMLWriter }
unset($this->_xmlWriter);
// Unlink temporary files /**
if ($this->_tempFileName != '') { * Get written data
@unlink($this->_tempFileName); *
} * @return $data
} */
public function getData()
{
if ($this->_tempFileName == '') {
return $this->_xmlWriter->outputMemory(true);
} else {
$this->_xmlWriter->flush();
return file_get_contents($this->_tempFileName);
}
}
/** /**
* Get written data * Catch function calls (and pass them to internal XMLWriter)
* *
* @return $data * @param unknown_type $function
*/ * @param unknown_type $args
public function getData() { */
if ($this->_tempFileName == '') { public function __call($function, $args)
return $this->_xmlWriter->outputMemory(true); {
} else { try {
$this->_xmlWriter->flush(); @call_user_func_array(array($this->_xmlWriter, $function), $args);
return file_get_contents($this->_tempFileName); } catch (Exception $ex) {
} // Do nothing!
} }
}
/** /**
* Catch function calls (and pass them to internal XMLWriter) * Fallback method for writeRaw, introduced in PHP 5.2
* *
* @param unknown_type $function * @param string $text
* @param unknown_type $args * @return string
*/ */
public function __call($function, $args) { public function writeRaw($text)
try { {
@call_user_func_array(array($this->_xmlWriter, $function), $args); if (isset($this->_xmlWriter) && is_object($this->_xmlWriter) && (method_exists($this->_xmlWriter, 'writeRaw'))) {
} catch (Exception $ex) { return $this->_xmlWriter->writeRaw($text);
// Do nothing! }
}
}
/** return $this->text($text);
* Fallback method for writeRaw, introduced in PHP 5.2 }
*
* @param string $text
* @return string
*/
public function writeRaw($text)
{
if (isset($this->_xmlWriter) && is_object($this->_xmlWriter) && (method_exists($this->_xmlWriter, 'writeRaw'))) {
return $this->_xmlWriter->writeRaw($text);
}
return $this->text($text);
}
} }

268
Classes/PHPWord/Shared/ZipStreamWrapper.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,157 +20,165 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** Register new zip wrapper */ /** Register new zip wrapper */
PHPWord_Shared_ZipStreamWrapper::register(); PHPWord_Shared_ZipStreamWrapper::register();
/**
* Class PHPWord_Shared_ZipStreamWrapper
*/
class PHPWord_Shared_ZipStreamWrapper
{
/**
* Internal ZipAcrhive
*
* @var ZipAcrhive
*/
private $_archive;
class PHPWord_Shared_ZipStreamWrapper { /**
/** * Filename in ZipAcrhive
* Internal ZipAcrhive *
* * @var string
* @var ZipAcrhive */
*/ private $_fileNameInArchive = '';
private $_archive;
/** /**
* Filename in ZipAcrhive * Position in file
* *
* @var string * @var int
*/ */
private $_fileNameInArchive = ''; private $_position = 0;
/** /**
* Position in file * Data
* *
* @var int * @var mixed
*/ */
private $_position = 0; private $_data = '';
/** /**
* Data * Register wrapper
* */
* @var mixed public static function register()
*/ {
private $_data = ''; @stream_wrapper_unregister("zip");
@stream_wrapper_register("zip", __CLASS__);
}
/** /**
* Register wrapper * Open stream
*/ */
public static function register() { public function stream_open($path, $mode, $options, &$opened_path)
@stream_wrapper_unregister("zip"); {
@stream_wrapper_register("zip", __CLASS__); // Check for mode
} if ($mode{0} != 'r') {
throw new Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
}
/** // Parse URL
* Open stream $url = @parse_url($path);
*/
public function stream_open($path, $mode, $options, &$opened_path) {
// Check for mode
if ($mode{0} != 'r') {
throw new Exception('Mode ' . $mode . ' is not supported. Only read mode is supported.');
}
// Parse URL // Fix URL
$url = @parse_url($path); if (!is_array($url)) {
$url['host'] = substr($path, strlen('zip://'));
$url['path'] = '';
}
if (strpos($url['host'], '#') !== false) {
if (!isset($url['fragment'])) {
$url['fragment'] = substr($url['host'], strpos($url['host'], '#') + 1) . $url['path'];
$url['host'] = substr($url['host'], 0, strpos($url['host'], '#'));
unset($url['path']);
}
} else {
$url['host'] = $url['host'] . $url['path'];
unset($url['path']);
}
// Fix URL // Open archive
if (!is_array($url)) { $this->_archive = new ZipArchive();
$url['host'] = substr($path, strlen('zip://')); $this->_archive->open($url['host']);
$url['path'] = '';
}
if (strpos($url['host'], '#') !== false) {
if (!isset($url['fragment'])) {
$url['fragment'] = substr($url['host'], strpos($url['host'], '#') + 1) . $url['path'];
$url['host'] = substr($url['host'], 0, strpos($url['host'], '#'));
unset($url['path']);
}
} else {
$url['host'] = $url['host'] . $url['path'];
unset($url['path']);
}
// Open archive $this->_fileNameInArchive = $url['fragment'];
$this->_archive = new ZipArchive(); $this->_position = 0;
$this->_archive->open($url['host']); $this->_data = $this->_archive->getFromName($this->_fileNameInArchive);
$this->_fileNameInArchive = $url['fragment']; return true;
$this->_position = 0; }
$this->_data = $this->_archive->getFromName( $this->_fileNameInArchive );
return true; /**
} * Stat stream
*/
public function stream_stat()
{
return $this->_archive->statName($this->_fileNameInArchive);
}
/** /**
* Stat stream * Read stream
*/ */
public function stream_stat() { function stream_read($count)
return $this->_archive->statName( $this->_fileNameInArchive ); {
} $ret = substr($this->_data, $this->_position, $count);
$this->_position += strlen($ret);
return $ret;
}
/** /**
* Read stream * Tell stream
*/ */
function stream_read($count) { public function stream_tell()
$ret = substr($this->_data, $this->_position, $count); {
$this->_position += strlen($ret); return $this->_position;
return $ret; }
}
/** /**
* Tell stream * EOF stream
*/ */
public function stream_tell() { public function stream_eof()
return $this->_position; {
} return $this->_position >= strlen($this->_data);
}
/** /**
* EOF stream * Seek stream
*/ */
public function stream_eof() { public function stream_seek($offset, $whence)
return $this->_position >= strlen($this->_data); {
} switch ($whence) {
case SEEK_SET:
if ($offset < strlen($this->_data) && $offset >= 0) {
$this->_position = $offset;
return true;
} else {
return false;
}
break;
/** case SEEK_CUR:
* Seek stream if ($offset >= 0) {
*/ $this->_position += $offset;
public function stream_seek($offset, $whence) { return true;
switch ($whence) { } else {
case SEEK_SET: return false;
if ($offset < strlen($this->_data) && $offset >= 0) { }
$this->_position = $offset; break;
return true;
} else {
return false;
}
break;
case SEEK_CUR: case SEEK_END:
if ($offset >= 0) { if (strlen($this->_data) + $offset >= 0) {
$this->_position += $offset; $this->_position = strlen($this->_data) + $offset;
return true; return true;
} else { } else {
return false; return false;
} }
break; break;
case SEEK_END: default:
if (strlen($this->_data) + $offset >= 0) { return false;
$this->_position = strlen($this->_data) + $offset; }
return true; }
} else {
return false;
}
break;
default:
return false;
}
}
} }
?>

253
Classes/PHPWord/Style.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,146 +20,149 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style * Class PHPWord_Style
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style { class PHPWord_Style
{
/** /**
* Style Elements * Style Elements
* *
* @var array * @var array
*/ */
private static $_styleElements = array(); private static $_styleElements = array();
/** /**
* Add a paragraph style * Add a paragraph style
* *
* @param string $styleName * @param string $styleName
* @param array $styles * @param array $styles
*/ */
public static function addParagraphStyle($styleName, $styles) { public static function addParagraphStyle($styleName, $styles)
if(!array_key_exists($styleName, self::$_styleElements)) { {
$style = new PHPWord_Style_Paragraph(); if (!array_key_exists($styleName, self::$_styleElements)) {
foreach($styles as $key => $value) { $style = new PHPWord_Style_Paragraph();
if(substr($key, 0, 1) != '_') { foreach ($styles as $key => $value) {
$key = '_'.$key; if (substr($key, 0, 1) != '_') {
} $key = '_' . $key;
$style->setStyleValue($key, $value); }
} $style->setStyleValue($key, $value);
}
self::$_styleElements[$styleName] = $style; self::$_styleElements[$styleName] = $style;
} }
} }
/** /**
* Add a font style * Add a font style
* *
* @param string $styleName * @param string $styleName
* @param array $styleFont * @param array $styleFont
* @param array $styleParagraph * @param array $styleParagraph
*/ */
public static function addFontStyle($styleName, $styleFont, $styleParagraph = null) { public static function addFontStyle($styleName, $styleFont, $styleParagraph = null)
if(!array_key_exists($styleName, self::$_styleElements)) { {
$font = new PHPWord_Style_Font('text', $styleParagraph); if (!array_key_exists($styleName, self::$_styleElements)) {
foreach($styleFont as $key => $value) { $font = new PHPWord_Style_Font('text', $styleParagraph);
if(substr($key, 0, 1) != '_') { foreach ($styleFont as $key => $value) {
$key = '_'.$key; if (substr($key, 0, 1) != '_') {
} $key = '_' . $key;
$font->setStyleValue($key, $value); }
} $font->setStyleValue($key, $value);
self::$_styleElements[$styleName] = $font; }
} self::$_styleElements[$styleName] = $font;
} }
}
/** /**
* Add a link style * Add a link style
* *
* @param string $styleName * @param string $styleName
* @param array $styles * @param array $styles
*/ */
public static function addLinkStyle($styleName, $styles) { public static function addLinkStyle($styleName, $styles)
if(!array_key_exists($styleName, self::$_styleElements)) { {
$style = new PHPWord_Style_Font('link'); if (!array_key_exists($styleName, self::$_styleElements)) {
foreach($styles as $key => $value) { $style = new PHPWord_Style_Font('link');
if(substr($key, 0, 1) != '_') { foreach ($styles as $key => $value) {
$key = '_'.$key; if (substr($key, 0, 1) != '_') {
} $key = '_' . $key;
$style->setStyleValue($key, $value); }
} $style->setStyleValue($key, $value);
}
self::$_styleElements[$styleName] = $style; self::$_styleElements[$styleName] = $style;
} }
} }
/** /**
* Add a table style * Add a table style
* *
* @param string $styleName * @param string $styleName
* @param array $styles * @param array $styles
*/ */
public static function addTableStyle($styleName, $styleTable, $styleFirstRow = null, $styleLastRow = null) { public static function addTableStyle($styleName, $styleTable, $styleFirstRow = null, $styleLastRow = null)
if(!array_key_exists($styleName, self::$_styleElements)) { {
$style = new PHPWord_Style_TableFull($styleTable, $styleFirstRow, $styleLastRow); if (!array_key_exists($styleName, self::$_styleElements)) {
$style = new PHPWord_Style_TableFull($styleTable, $styleFirstRow, $styleLastRow);
self::$_styleElements[$styleName] = $style; self::$_styleElements[$styleName] = $style;
} }
} }
/** /**
* Add a title style * Add a title style
* *
* @param string $styleName * @param string $styleName
* @param array $styleFont * @param array $styleFont
* @param array $styleParagraph * @param array $styleParagraph
*/ */
public static function addTitleStyle($titleCount, $styleFont, $styleParagraph = null) { public static function addTitleStyle($titleCount, $styleFont, $styleParagraph = null)
$styleName = 'Heading_'.$titleCount; {
if(!array_key_exists($styleName, self::$_styleElements)) { $styleName = 'Heading_' . $titleCount;
$font = new PHPWord_Style_Font('title', $styleParagraph); if (!array_key_exists($styleName, self::$_styleElements)) {
foreach($styleFont as $key => $value) { $font = new PHPWord_Style_Font('title', $styleParagraph);
if(substr($key, 0, 1) != '_') { foreach ($styleFont as $key => $value) {
$key = '_'.$key; if (substr($key, 0, 1) != '_') {
} $key = '_' . $key;
$font->setStyleValue($key, $value); }
} $font->setStyleValue($key, $value);
}
self::$_styleElements[$styleName] = $font; self::$_styleElements[$styleName] = $font;
} }
} }
/** /**
* Get all styles * Get all styles
* *
* @return PHPWord_Style_Font[] * @return PHPWord_Style_Font[]
*/ */
public static function getStyles() { public static function getStyles()
return self::$_styleElements; {
} return self::$_styleElements;
}
/** /**
* Get style * Get style
* *
* @param string * @param string
* @return PHPWord_Style * @return PHPWord_Style
*/ */
public static function getStyle($styleName) { public static function getStyle($styleName)
if(array_key_exists($styleName, self::$_styleElements)){ {
return self::$_styleElements[$styleName]; if (array_key_exists($styleName, self::$_styleElements)) {
} else { return self::$_styleElements[$styleName];
return null; } else {
} return null;
} }
}
} }
?>

505
Classes/PHPWord/Style/Cell.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,299 +20,328 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Cell * PHPWord_Style_Cell
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_Cell { class PHPWord_Style_Cell
{
const TEXT_DIR_BTLR = 'btLr'; const TEXT_DIR_BTLR = 'btLr';
const TEXT_DIR_TBRL = 'tbRl'; const TEXT_DIR_TBRL = 'tbRl';
/** /**
* Vertical align * Vertical align
* *
* @var string * @var string
*/ */
private $_valign; private $_valign;
/** /**
* Text Direction * Text Direction
* *
* @var string * @var string
*/ */
private $_textDirection; private $_textDirection;
/** /**
* Background-Color * Background-Color
* *
* @var string * @var string
*/ */
private $_bgColor; private $_bgColor;
/** /**
* Border Top Size * Border Top Size
* *
* @var int * @var int
*/ */
private $_borderTopSize; private $_borderTopSize;
/** /**
* Border Top Color * Border Top Color
* *
* @var string * @var string
*/ */
private $_borderTopColor; private $_borderTopColor;
/** /**
* Border Left Size * Border Left Size
* *
* @var int * @var int
*/ */
private $_borderLeftSize; private $_borderLeftSize;
/** /**
* Border Left Color * Border Left Color
* *
* @var string * @var string
*/ */
private $_borderLeftColor; private $_borderLeftColor;
/** /**
* Border Right Size * Border Right Size
* *
* @var int * @var int
*/ */
private $_borderRightSize; private $_borderRightSize;
/** /**
* Border Right Color * Border Right Color
* *
* @var string * @var string
*/ */
private $_borderRightColor; private $_borderRightColor;
/** /**
* Border Bottom Size * Border Bottom Size
* *
* @var int * @var int
*/ */
private $_borderBottomSize; private $_borderBottomSize;
/** /**
* Border Bottom Color * Border Bottom Color
* *
* @var string * @var string
*/ */
private $_borderBottomColor; private $_borderBottomColor;
/** /**
* Border Default Color * Border Default Color
* *
* @var string * @var string
*/ */
private $_defaultBorderColor; private $_defaultBorderColor;
/** /**
* colspan * colspan
* *
* @var integer * @var integer
*/ */
private $_gridSpan = NULL; private $_gridSpan = NULL;
/** /**
* rowspan * rowspan
* *
* @var integer * @var integer
*/ */
private $_vMerge = NULL; private $_vMerge = NULL;
/** /**
* Create a new Cell Style * Create a new Cell Style
*/ */
public function __construct() { public function __construct()
$this->_valign = null; {
$this->_textDirection = null; $this->_valign = null;
$this->_bgColor = null; $this->_textDirection = null;
$this->_borderTopSize = null; $this->_bgColor = null;
$this->_borderTopColor = null; $this->_borderTopSize = null;
$this->_borderLeftSize = null; $this->_borderTopColor = null;
$this->_borderLeftColor = null; $this->_borderLeftSize = null;
$this->_borderRightSize = null; $this->_borderLeftColor = null;
$this->_borderRightColor = null; $this->_borderRightSize = null;
$this->_borderBottomSize = null; $this->_borderRightColor = null;
$this->_borderBottomColor = null; $this->_borderBottomSize = null;
$this->_defaultBorderColor = '000000'; $this->_borderBottomColor = null;
} $this->_defaultBorderColor = '000000';
}
/** /**
* Set style value * Set style value
* *
* @var string $key * @var string $key
* @var mixed $value * @var mixed $value
*/ */
public function setStyleValue($key, $value) { public function setStyleValue($key, $value)
if($key == '_borderSize') { {
$this->setBorderSize($value); if ($key == '_borderSize') {
} elseif($key == '_borderColor') { $this->setBorderSize($value);
$this->setBorderColor($value); } elseif ($key == '_borderColor') {
} else { $this->setBorderColor($value);
$this->$key = $value; } else {
} $this->$key = $value;
} }
}
public function getVAlign() { public function getVAlign()
return $this->_valign; {
} return $this->_valign;
}
public function setVAlign($pValue = null) { public function setVAlign($pValue = null)
$this->_valign = $pValue; {
} $this->_valign = $pValue;
}
public function getTextDirection() { public function getTextDirection()
return $this->_textDirection; {
} return $this->_textDirection;
}
public function setTextDirection($pValue = null) { public function setTextDirection($pValue = null)
$this->_textDirection = $pValue; {
} $this->_textDirection = $pValue;
}
public function getBgColor() { public function getBgColor()
return $this->_bgColor; {
} return $this->_bgColor;
}
public function setBgColor($pValue = null) { public function setBgColor($pValue = null)
$this->_bgColor = $pValue; {
} $this->_bgColor = $pValue;
}
public function setHeight($pValue = null) { public function setHeight($pValue = null)
$this->_height = $pValue; {
} $this->_height = $pValue;
}
public function setBorderSize($pValue = null) { public function setBorderSize($pValue = null)
$this->_borderTopSize = $pValue; {
$this->_borderLeftSize = $pValue; $this->_borderTopSize = $pValue;
$this->_borderRightSize = $pValue; $this->_borderLeftSize = $pValue;
$this->_borderBottomSize = $pValue; $this->_borderRightSize = $pValue;
} $this->_borderBottomSize = $pValue;
}
public function getBorderSize() { public function getBorderSize()
$t = $this->getBorderTopSize(); {
$l = $this->getBorderLeftSize(); $t = $this->getBorderTopSize();
$r = $this->getBorderRightSize(); $l = $this->getBorderLeftSize();
$b = $this->getBorderBottomSize(); $r = $this->getBorderRightSize();
$b = $this->getBorderBottomSize();
return array($t, $l, $r, $b); return array($t, $l, $r, $b);
} }
public function setBorderColor($pValue = null) { public function setBorderColor($pValue = null)
$this->_borderTopColor = $pValue; {
$this->_borderLeftColor = $pValue; $this->_borderTopColor = $pValue;
$this->_borderRightColor = $pValue; $this->_borderLeftColor = $pValue;
$this->_borderBottomColor = $pValue; $this->_borderRightColor = $pValue;
} $this->_borderBottomColor = $pValue;
}
public function getBorderColor() { public function getBorderColor()
$t = $this->getBorderTopColor(); {
$l = $this->getBorderLeftColor(); $t = $this->getBorderTopColor();
$r = $this->getBorderRightColor(); $l = $this->getBorderLeftColor();
$b = $this->getBorderBottomColor(); $r = $this->getBorderRightColor();
$b = $this->getBorderBottomColor();
return array($t, $l, $r, $b); return array($t, $l, $r, $b);
} }
public function setBorderTopSize($pValue = null) { public function setBorderTopSize($pValue = null)
$this->_borderTopSize = $pValue; {
} $this->_borderTopSize = $pValue;
}
public function getBorderTopSize() { public function getBorderTopSize()
return $this->_borderTopSize; {
} return $this->_borderTopSize;
}
public function setBorderTopColor($pValue = null) { public function setBorderTopColor($pValue = null)
$this->_borderTopColor = $pValue; {
} $this->_borderTopColor = $pValue;
}
public function getBorderTopColor() { public function getBorderTopColor()
return $this->_borderTopColor; {
} return $this->_borderTopColor;
}
public function setBorderLeftSize($pValue = null) { public function setBorderLeftSize($pValue = null)
$this->_borderLeftSize = $pValue; {
} $this->_borderLeftSize = $pValue;
}
public function getBorderLeftSize() { public function getBorderLeftSize()
return $this->_borderLeftSize; {
} return $this->_borderLeftSize;
}
public function setBorderLeftColor($pValue = null) { public function setBorderLeftColor($pValue = null)
$this->_borderLeftColor = $pValue; {
} $this->_borderLeftColor = $pValue;
}
public function getBorderLeftColor() { public function getBorderLeftColor()
return $this->_borderLeftColor; {
} return $this->_borderLeftColor;
}
public function setBorderRightSize($pValue = null) { public function setBorderRightSize($pValue = null)
$this->_borderRightSize = $pValue; {
} $this->_borderRightSize = $pValue;
}
public function getBorderRightSize() { public function getBorderRightSize()
return $this->_borderRightSize; {
} return $this->_borderRightSize;
}
public function setBorderRightColor($pValue = null) { public function setBorderRightColor($pValue = null)
$this->_borderRightColor = $pValue; {
} $this->_borderRightColor = $pValue;
}
public function getBorderRightColor() { public function getBorderRightColor()
return $this->_borderRightColor; {
} return $this->_borderRightColor;
}
public function setBorderBottomSize($pValue = null) { public function setBorderBottomSize($pValue = null)
$this->_borderBottomSize = $pValue; {
} $this->_borderBottomSize = $pValue;
}
public function getBorderBottomSize() { public function getBorderBottomSize()
return $this->_borderBottomSize; {
} return $this->_borderBottomSize;
}
public function setBorderBottomColor($pValue = null) { public function setBorderBottomColor($pValue = null)
$this->_borderBottomColor = $pValue; {
} $this->_borderBottomColor = $pValue;
}
public function getBorderBottomColor() { public function getBorderBottomColor()
return $this->_borderBottomColor; {
} return $this->_borderBottomColor;
}
public function getDefaultBorderColor() { public function getDefaultBorderColor()
return $this->_defaultBorderColor; {
} return $this->_defaultBorderColor;
}
public function setGridSpan($pValue = null) { public function setGridSpan($pValue = null)
$this->_gridSpan = $pValue; {
} $this->_gridSpan = $pValue;
}
public function getGridSpan() { public function getGridSpan()
return $this->_gridSpan; {
} return $this->_gridSpan;
}
public function setVMerge($pValue = null) { public function setVMerge($pValue = null)
$this->_vMerge = $pValue; {
} $this->_vMerge = $pValue;
}
public function getVMerge() { public function getVMerge()
return $this->_vMerge; {
} return $this->_vMerge;
}
} }
?>

427
Classes/PHPWord/Style/Font.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,242 +20,261 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Font * Class PHPWord_Style_Font
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_Font { class PHPWord_Style_Font
{
const UNDERLINE_NONE = 'none'; const UNDERLINE_NONE = 'none';
const UNDERLINE_DASH = 'dash'; const UNDERLINE_DASH = 'dash';
const UNDERLINE_DASHHEAVY = 'dashHeavy'; const UNDERLINE_DASHHEAVY = 'dashHeavy';
const UNDERLINE_DASHLONG = 'dashLong'; const UNDERLINE_DASHLONG = 'dashLong';
const UNDERLINE_DASHLONGHEAVY = 'dashLongHeavy'; const UNDERLINE_DASHLONGHEAVY = 'dashLongHeavy';
const UNDERLINE_DOUBLE = 'dbl'; const UNDERLINE_DOUBLE = 'dbl';
const UNDERLINE_DOTHASH = 'dotDash'; const UNDERLINE_DOTHASH = 'dotDash';
const UNDERLINE_DOTHASHHEAVY = 'dotDashHeavy'; const UNDERLINE_DOTHASHHEAVY = 'dotDashHeavy';
const UNDERLINE_DOTDOTDASH = 'dotDotDash'; const UNDERLINE_DOTDOTDASH = 'dotDotDash';
const UNDERLINE_DOTDOTDASHHEAVY = 'dotDotDashHeavy'; const UNDERLINE_DOTDOTDASHHEAVY = 'dotDotDashHeavy';
const UNDERLINE_DOTTED = 'dotted'; const UNDERLINE_DOTTED = 'dotted';
const UNDERLINE_DOTTEDHEAVY = 'dottedHeavy'; const UNDERLINE_DOTTEDHEAVY = 'dottedHeavy';
const UNDERLINE_HEAVY = 'heavy'; const UNDERLINE_HEAVY = 'heavy';
const UNDERLINE_SINGLE = 'single'; const UNDERLINE_SINGLE = 'single';
const UNDERLINE_WAVY = 'wavy'; const UNDERLINE_WAVY = 'wavy';
const UNDERLINE_WAVYDOUBLE = 'wavyDbl'; const UNDERLINE_WAVYDOUBLE = 'wavyDbl';
const UNDERLINE_WAVYHEAVY = 'wavyHeavy'; const UNDERLINE_WAVYHEAVY = 'wavyHeavy';
const UNDERLINE_WORDS = 'words'; const UNDERLINE_WORDS = 'words';
const FGCOLOR_YELLOW = 'yellow'; const FGCOLOR_YELLOW = 'yellow';
const FGCOLOR_LIGHTGREEN = 'green'; const FGCOLOR_LIGHTGREEN = 'green';
const FGCOLOR_CYAN = 'cyan'; const FGCOLOR_CYAN = 'cyan';
const FGCOLOR_MAGENTA = 'magenta'; const FGCOLOR_MAGENTA = 'magenta';
const FGCOLOR_BLUE = 'blue'; const FGCOLOR_BLUE = 'blue';
const FGCOLOR_RED = 'red'; const FGCOLOR_RED = 'red';
const FGCOLOR_DARKBLUE = 'darkBlue'; const FGCOLOR_DARKBLUE = 'darkBlue';
const FGCOLOR_DARKCYAN = 'darkCyan'; const FGCOLOR_DARKCYAN = 'darkCyan';
const FGCOLOR_DARKGREEN = 'darkGreen'; const FGCOLOR_DARKGREEN = 'darkGreen';
const FGCOLOR_DARKMAGENTA = 'darkMagenta'; const FGCOLOR_DARKMAGENTA = 'darkMagenta';
const FGCOLOR_DARKRED = 'darkRed'; const FGCOLOR_DARKRED = 'darkRed';
const FGCOLOR_DARKYELLOW = 'darkYellow'; const FGCOLOR_DARKYELLOW = 'darkYellow';
const FGCOLOR_DARKGRAY = 'darkGray'; const FGCOLOR_DARKGRAY = 'darkGray';
const FGCOLOR_LIGHTGRAY = 'lightGray'; const FGCOLOR_LIGHTGRAY = 'lightGray';
const FGCOLOR_BLACK = 'black'; const FGCOLOR_BLACK = 'black';
/** /**
* Font style type * Font style type
* *
* @var string * @var string
*/ */
private $_type; private $_type;
/** /**
* Paragraph Style * Paragraph Style
* *
* @var PHPWord_Style_Paragraph * @var PHPWord_Style_Paragraph
*/ */
private $_paragraphStyle; private $_paragraphStyle;
private $_size; private $_size;
private $_name; private $_name;
private $_bold; private $_bold;
private $_italic; private $_italic;
private $_superScript; private $_superScript;
private $_subScript; private $_subScript;
private $_underline; private $_underline;
private $_strikethrough; private $_strikethrough;
private $_color; private $_color;
private $_fgColor; private $_fgColor;
public function __construct($type = 'text', $styleParagraph = null) { public function __construct($type = 'text', $styleParagraph = null)
$this->_type = $type; {
$this->_name = 'Arial'; $this->_type = $type;
$this->_size = 20; $this->_name = 'Arial';
$this->_bold = false; $this->_size = 20;
$this->_italic = false; $this->_bold = false;
$this->_superScript = false; $this->_italic = false;
$this->_subScript = false; $this->_superScript = false;
$this->_underline = PHPWord_Style_Font::UNDERLINE_NONE; $this->_subScript = false;
$this->_strikethrough = false; $this->_underline = PHPWord_Style_Font::UNDERLINE_NONE;
$this->_color = '000000'; $this->_strikethrough = false;
$this->_fgColor = null; $this->_color = '000000';
$this->_fgColor = null;
if(!is_null($styleParagraph)) { if (!is_null($styleParagraph)) {
$paragraph = new PHPWord_Style_Paragraph(); $paragraph = new PHPWord_Style_Paragraph();
foreach($styleParagraph as $key => $value) { foreach ($styleParagraph as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
$paragraph->setStyleValue($key, $value); $paragraph->setStyleValue($key, $value);
} }
$this->_paragraphStyle = $paragraph; $this->_paragraphStyle = $paragraph;
} else { } else {
$this->_paragraphStyle = null; $this->_paragraphStyle = null;
} }
} }
public function getName() { public function getName()
return $this->_name; {
} return $this->_name;
}
public function setStyleValue($key, $value) { public function setStyleValue($key, $value)
if($key == '_size') { {
$value *= 2; if ($key == '_size') {
} $value *= 2;
$this->$key = $value; }
} $this->$key = $value;
}
public function setName($pValue = 'Arial') { public function setName($pValue = 'Arial')
if($pValue == '') { {
$pValue = 'Arial'; if ($pValue == '') {
} $pValue = 'Arial';
$this->_name = $pValue; }
return $this; $this->_name = $pValue;
} return $this;
}
public function getSize() { public function getSize()
return $this->_size; {
} return $this->_size;
}
public function setSize($pValue = 20) { public function setSize($pValue = 20)
if($pValue == '') { {
$pValue = 20; if ($pValue == '') {
} $pValue = 20;
$this->_size = ($pValue*2); }
return $this; $this->_size = ($pValue * 2);
} return $this;
}
public function getBold() { public function getBold()
return $this->_bold; {
} return $this->_bold;
}
public function setBold($pValue = false) { public function setBold($pValue = false)
if($pValue == '') { {
$pValue = false; if ($pValue == '') {
} $pValue = false;
$this->_bold = $pValue; }
return $this; $this->_bold = $pValue;
} return $this;
}
public function getItalic() { public function getItalic()
return $this->_italic; {
} return $this->_italic;
}
public function setItalic($pValue = false) { public function setItalic($pValue = false)
if($pValue == '') { {
$pValue = false; if ($pValue == '') {
} $pValue = false;
$this->_italic = $pValue; }
return $this; $this->_italic = $pValue;
} return $this;
}
public function getSuperScript() { public function getSuperScript()
return $this->_superScript; {
} return $this->_superScript;
}
public function setSuperScript($pValue = false) { public function setSuperScript($pValue = false)
if($pValue == '') { {
$pValue = false; if ($pValue == '') {
} $pValue = false;
$this->_superScript = $pValue; }
$this->_subScript = !$pValue; $this->_superScript = $pValue;
return $this; $this->_subScript = !$pValue;
} return $this;
}
public function getSubScript() { public function getSubScript()
return $this->_subScript; {
} return $this->_subScript;
}
public function setSubScript($pValue = false) { public function setSubScript($pValue = false)
if($pValue == '') { {
$pValue = false; if ($pValue == '') {
} $pValue = false;
$this->_subScript = $pValue; }
$this->_superScript = !$pValue; $this->_subScript = $pValue;
return $this; $this->_superScript = !$pValue;
} return $this;
}
public function getUnderline() { public function getUnderline()
return $this->_underline; {
} return $this->_underline;
}
public function setUnderline($pValue = PHPWord_Style_Font::UNDERLINE_NONE) { public function setUnderline($pValue = PHPWord_Style_Font::UNDERLINE_NONE)
if ($pValue == '') { {
$pValue = PHPWord_Style_Font::UNDERLINE_NONE; if ($pValue == '') {
} $pValue = PHPWord_Style_Font::UNDERLINE_NONE;
$this->_underline = $pValue; }
return $this; $this->_underline = $pValue;
} return $this;
}
public function getStrikethrough() { public function getStrikethrough()
return $this->_strikethrough; {
} return $this->_strikethrough;
}
public function setStrikethrough($pValue = false) { public function setStrikethrough($pValue = false)
if($pValue == '') { {
$pValue = false; if ($pValue == '') {
} $pValue = false;
$this->_strikethrough = $pValue; }
return $this; $this->_strikethrough = $pValue;
} return $this;
}
public function getColor() { public function getColor()
return $this->_color; {
} return $this->_color;
}
public function setColor($pValue = '000000') { public function setColor($pValue = '000000')
$this->_color = $pValue; {
return $this; $this->_color = $pValue;
} return $this;
}
public function getFgColor() { public function getFgColor()
return $this->_fgColor; {
} return $this->_fgColor;
}
public function setFgColor($pValue = null) { public function setFgColor($pValue = null)
$this->_fgColor = $pValue; {
return $this; $this->_fgColor = $pValue;
} return $this;
}
public function getStyleType() { public function getStyleType()
return $this->_type; {
} return $this->_type;
}
/** /**
* Get Paragraph style * Get Paragraph style
* *
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function getParagraphStyle() { public function getParagraphStyle()
return $this->_paragraphStyle; {
} return $this->_paragraphStyle;
}
} }
?>

222
Classes/PHPWord/Style/Image.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,111 +20,157 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Image * Class PHPWord_Style_Image
*
* @category PHPWord
* @package PHPWord_Section
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_Image { class PHPWord_Style_Image
{
const WRAPPING_STYLE_INLINE = 'inline';
const WRAPPING_STYLE_SQUARE = 'square';
const WRAPPING_STYLE_TIGHT = 'tight';
const WRAPPING_STYLE_BEHIND = 'behind';
const WRAPPING_STYLE_INFRONT = 'infront';
private $_width; private $_width;
private $_height; private $_height;
private $_align; private $_align;
private $wrappingStyle;
/** /**
* Margin Top * Margin Top
* *
* @var int * @var int
*/ */
private $_marginTop; private $_marginTop;
/** /**
* Margin Left * Margin Left
* *
* @var int * @var int
*/ */
private $_marginLeft; private $_marginLeft;
public function __construct() { public function __construct()
$this->_width = null; {
$this->_height = null; $this->_width = null;
$this->_align = null; $this->_height = null;
$this->_marginTop = null; $this->_align = null;
$this->_marginLeft = null; $this->_marginTop = null;
} $this->_marginLeft = null;
$this->setWrappingStyle(self::WRAPPING_STYLE_INLINE);
}
public function setStyleValue($key, $value) { public function setStyleValue($key, $value)
$this->$key = $value; {
} $this->$key = $value;
}
public function getWidth() { public function getWidth()
return $this->_width; {
} return $this->_width;
}
public function setWidth($pValue = null) { public function setWidth($pValue = null)
$this->_width = $pValue; {
} $this->_width = $pValue;
}
public function getHeight() { public function getHeight()
return $this->_height; {
} return $this->_height;
}
public function setHeight($pValue = null) { public function setHeight($pValue = null)
$this->_height = $pValue; {
} $this->_height = $pValue;
}
public function getAlign() { public function getAlign()
return $this->_align; {
} return $this->_align;
}
public function setAlign($pValue = null) { public function setAlign($pValue = null)
$this->_align = $pValue; {
} $this->_align = $pValue;
}
/** /**
* Get Margin Top * Get Margin Top
* *
* @return int * @return int
*/ */
public function getMarginTop() { public function getMarginTop()
return $this->_marginTop; {
} return $this->_marginTop;
}
/** /**
* Set Margin Top * Set Margin Top
* *
* @param int $pValue * @param int $pValue
*/ * @return $this
public function setMarginTop($pValue = null) { */
$this->_marginTop = $pValue; public function setMarginTop($pValue = null)
return $this; {
} $this->_marginTop = $pValue;
return $this;
}
/** /**
* Get Margin Left * Get Margin Left
* *
* @return int * @return int
*/ */
public function getMarginLeft() { public function getMarginLeft()
return $this->_marginLeft; {
} return $this->_marginLeft;
}
/** /**
* Set Margin Left * Set Margin Left
* *
* @param int $pValue * @param int $pValue
*/ * @return $this
public function setMarginLeft($pValue = null) { */
$this->_marginLeft = $pValue; public function setMarginLeft($pValue = null)
return $this; {
} $this->_marginLeft = $pValue;
return $this;
}
/**
* @param string $wrappingStyle
* @throws InvalidArgumentException
* @return $this
*/
public function setWrappingStyle($wrappingStyle)
{
switch ($wrappingStyle) {
case self::WRAPPING_STYLE_BEHIND:
case self::WRAPPING_STYLE_INFRONT:
case self::WRAPPING_STYLE_INLINE:
case self::WRAPPING_STYLE_SQUARE:
case self::WRAPPING_STYLE_TIGHT:
$this->wrappingStyle = $wrappingStyle;
break;
default:
throw new InvalidArgumentException('Wrapping style does not exists');
break;
}
return $this;
}
/**
* @return string
*/
public function getWrappingStyle()
{
return $this->wrappingStyle;
}
} }
?>

99
Classes/PHPWord/Style/ListItem.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,64 +20,63 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_ListItem * Class PHPWord_Style_ListItem
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_ListItem { class PHPWord_Style_ListItem
{
const TYPE_NUMBER = 7; const TYPE_NUMBER = 7;
const TYPE_NUMBER_NESTED = 8; const TYPE_NUMBER_NESTED = 8;
const TYPE_ALPHANUM = 9; const TYPE_ALPHANUM = 9;
const TYPE_BULLET_FILLED = 3; const TYPE_BULLET_FILLED = 3;
const TYPE_BULLET_EMPTY = 5; const TYPE_BULLET_EMPTY = 5;
const TYPE_SQUARE_FILLED = 1; const TYPE_SQUARE_FILLED = 1;
/** /**
* List Type * List Type
*/ */
private $_listType; private $_listType;
/** /**
* Create a new ListItem Style * Create a new ListItem Style
*/ */
public function __construct() { public function __construct()
$this->_listType = PHPWord_Style_ListItem::TYPE_BULLET_FILLED; {
} $this->_listType = PHPWord_Style_ListItem::TYPE_BULLET_FILLED;
}
/** /**
* Set style value * Set style value
* *
* @param string $key * @param string $key
* @param string $value * @param string $value
*/ */
public function setStyleValue($key, $value) { public function setStyleValue($key, $value)
$this->$key = $value; {
} $this->$key = $value;
}
/** /**
* Set List Type * Set List Type
* *
* @param int $pValue * @param int $pValue
*/ */
public function setListType($pValue = PHPWord_Style_ListItem::TYPE_BULLET_FILLED) { public function setListType($pValue = PHPWord_Style_ListItem::TYPE_BULLET_FILLED)
$this->_listType = $pValue; {
} $this->_listType = $pValue;
}
/** /**
* Get List Type * Get List Type
*/ */
public function getListType() { public function getListType()
return $this->_listType; {
} return $this->_listType;
}
} }
?>

360
Classes/PHPWord/Style/Paragraph.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,206 +20,214 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Paragraph * PHPWord_Style_Paragraph
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_Paragraph { class PHPWord_Style_Paragraph
{
/** /**
* Paragraph alignment * Paragraph alignment
* *
* @var string * @var string
*/ */
private $_align; private $_align;
/** /**
* Space before Paragraph * Space before Paragraph
* *
* @var int * @var int
*/ */
private $_spaceBefore; private $_spaceBefore;
/** /**
* Space after Paragraph * Space after Paragraph
* *
* @var int * @var int
*/ */
private $_spaceAfter; private $_spaceAfter;
/** /**
* Spacing between breaks * Spacing between breaks
* *
* @var int * @var int
*/ */
private $_spacing; private $_spacing;
/** /**
* Set of Custom Tab Stops * Set of Custom Tab Stops
* *
* @var array * @var array
*/ */
private $_tabs; private $_tabs;
/** /**
* Indent by how much * Indent by how much
* *
* @var int * @var int
*/ */
private $_indent; private $_indent;
/** /**
* New Paragraph Style * New Paragraph Style
*/ */
public function __construct() { public function __construct()
$this->_align = null; {
$this->_spaceBefore = null; $this->_align = null;
$this->_spaceAfter = null; $this->_spaceBefore = null;
$this->_spacing = null; $this->_spaceAfter = null;
$this->_tabs = null; $this->_spacing = null;
$this->_indent = null; $this->_tabs = null;
} $this->_indent = null;
/**
* Set Style value
*
* @param string $key
* @param mixed $value
*/
public function setStyleValue($key, $value) {
if($key == '_indent') {
$value = (int)$value * 720; // 720 twips per indent
}
if($key == '_spacing') {
$value += 240; // because line height of 1 matches 240 twips
} }
if($key === '_tabs') {
$value = new PHPWord_Style_Tabs($value); /**
* Set Style value
*
* @param string $key
* @param mixed $value
*/
public function setStyleValue($key, $value)
{
if ($key == '_indent') {
$value = (int)$value * 720; // 720 twips per indent
}
if ($key == '_spacing') {
$value += 240; // because line height of 1 matches 240 twips
}
if ($key === '_tabs') {
$value = new PHPWord_Style_Tabs($value);
}
$this->$key = $value;
} }
$this->$key = $value;
}
/** /**
* Get Paragraph Alignment * Get Paragraph Alignment
* *
* @return string * @return string
*/ */
public function getAlign() { public function getAlign()
return $this->_align; {
} return $this->_align;
}
/** /**
* Set Paragraph Alignment * Set Paragraph Alignment
* *
* @param string $pValue * @param string $pValue
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setAlign($pValue = null) { public function setAlign($pValue = null)
if(strtolower($pValue) == 'justify') { {
// justify becames both if (strtolower($pValue) == 'justify') {
$pValue = 'both'; // justify becames both
} $pValue = 'both';
$this->_align = $pValue; }
return $this; $this->_align = $pValue;
} return $this;
}
/** /**
* Get Space before Paragraph * Get Space before Paragraph
* *
* @return string * @return string
*/ */
public function getSpaceBefore() { public function getSpaceBefore()
return $this->_spaceBefore; {
} return $this->_spaceBefore;
}
/** /**
* Set Space before Paragraph * Set Space before Paragraph
* *
* @param int $pValue * @param int $pValue
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setSpaceBefore($pValue = null) { public function setSpaceBefore($pValue = null)
$this->_spaceBefore = $pValue; {
return $this; $this->_spaceBefore = $pValue;
} return $this;
}
/** /**
* Get Space after Paragraph * Get Space after Paragraph
* *
* @return string * @return string
*/ */
public function getSpaceAfter() { public function getSpaceAfter()
return $this->_spaceAfter; {
} return $this->_spaceAfter;
}
/** /**
* Set Space after Paragraph * Set Space after Paragraph
* *
* @param int $pValue * @param int $pValue
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setSpaceAfter($pValue = null) { public function setSpaceAfter($pValue = null)
$this->_spaceAfter = $pValue; {
return $this; $this->_spaceAfter = $pValue;
} return $this;
}
/** /**
* Get Spacing between breaks * Get Spacing between breaks
* *
* @return int * @return int
*/ */
public function getSpacing() { public function getSpacing()
return $this->_spacing; {
} return $this->_spacing;
}
/** /**
* Set Spacing between breaks * Set Spacing between breaks
* *
* @param int $pValue * @param int $pValue
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setSpacing($pValue = null) { public function setSpacing($pValue = null)
$this->_spacing = $pValue; {
return $this; $this->_spacing = $pValue;
} return $this;
}
/** /**
* Get indentation * Get indentation
* *
* @return int * @return int
*/ */
public function getIndent() { public function getIndent()
return $this->_indent; {
} return $this->_indent;
}
/** /**
* Set indentation * Set indentation
* *
* @param int $pValue * @param int $pValue
* @return PHPWord_Style_Paragraph * @return PHPWord_Style_Paragraph
*/ */
public function setIndent($pValue = null) { public function setIndent($pValue = null)
$this->_indent = $pValue; {
return $this; $this->_indent = $pValue;
} return $this;
}
/** /**
* Get tabs * Get tabs
* *
* @return PHPWord_Style_Tabs * @return PHPWord_Style_Tabs
*/ */
public function getTabs() { public function getTabs()
return $this->_tabs; {
} return $this->_tabs;
}
} }
?>

199
Classes/PHPWord/Style/TOC.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,119 +20,122 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_TOC * Class PHPWord_Style_TOC
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_TOC { class PHPWord_Style_TOC
{
const TABLEADER_DOT = 'dot'; const TABLEADER_DOT = 'dot';
const TABLEADER_UNDERSCORE = 'underscore'; const TABLEADER_UNDERSCORE = 'underscore';
const TABLEADER_LINE = 'hyphen'; const TABLEADER_LINE = 'hyphen';
const TABLEADER_NONE = ''; const TABLEADER_NONE = '';
/** /**
* Tab Leader * Tab Leader
* *
* @var string * @var string
*/ */
private $_tabLeader; private $_tabLeader;
/** /**
* Tab Position * Tab Position
* *
* @var int * @var int
*/ */
private $_tabPos; private $_tabPos;
/** /**
* Indent * Indent
* *
* @var int * @var int
*/ */
private $_indent; private $_indent;
/** /**
* Create a new TOC Style * Create a new TOC Style
*/ */
public function __construct() { public function __construct()
$this->_tabPos = 9062; {
$this->_tabLeader = PHPWord_Style_TOC::TABLEADER_DOT; $this->_tabPos = 9062;
$this->_indent = 200; $this->_tabLeader = PHPWord_Style_TOC::TABLEADER_DOT;
} $this->_indent = 200;
}
/** /**
* Get Tab Position * Get Tab Position
* *
* @return int * @return int
*/ */
public function getTabPos() { public function getTabPos()
return $this->_tabPos; {
} return $this->_tabPos;
}
/** /**
* Set Tab Position * Set Tab Position
* *
* @param int $pValue * @param int $pValue
*/ */
public function setTabPos($pValue) { public function setTabPos($pValue)
$this->_tabLeader = $pValue; {
} $this->_tabLeader = $pValue;
}
/** /**
* Get Tab Leader * Get Tab Leader
* *
* @return string * @return string
*/ */
public function getTabLeader() { public function getTabLeader()
return $this->_tabLeader; {
} return $this->_tabLeader;
}
/** /**
* Set Tab Leader * Set Tab Leader
* *
* @param string $pValue * @param string $pValue
*/ */
public function setTabLeader($pValue = PHPWord_Style_TOC::TABLEADER_DOT) { public function setTabLeader($pValue = PHPWord_Style_TOC::TABLEADER_DOT)
$this->_tabLeader = $pValue; {
} $this->_tabLeader = $pValue;
}
/** /**
* Get Indent * Get Indent
* *
* @return int * @return int
*/ */
public function getIndent() { public function getIndent()
return $this->_indent; {
} return $this->_indent;
}
/** /**
* Set Indent * Set Indent
* *
* @param string $pValue * @param string $pValue
*/ */
public function setIndent($pValue) { public function setIndent($pValue)
$this->_indent = $pValue; {
} $this->_indent = $pValue;
}
/** /**
* Set style value * Set style value
* *
* @param string $key * @param string $key
* @param string $value * @param string $value
*/ */
public function setStyleValue($key, $value) { public function setStyleValue($key, $value)
$this->$key = $value; {
} $this->$key = $value;
}
} }
?>

215
Classes/PHPWord/Style/Tab.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,128 +20,127 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version {something} * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Tabs * PHPWord_Style_Tabs
*
* @category PHPWord
* @package PHPWord_Style_Paragraph
* @copyright Copyright (c) 2011 PHPWord
* @link http://www.schemacentral.com/sc/ooxml/e-w_tab-1.html w:tab
*/ */
class PHPWord_Style_Tab { class PHPWord_Style_Tab
{
/** /**
* Tab Stop Type * Tab Stop Type
* *
* @var string * @var string
*/ */
private $_val; private $_val;
/** /**
* Tab Leader Character * Tab Leader Character
* *
* @var string * @var string
*/ */
private $_leader; private $_leader;
/** /**
* Tab Stop Position * Tab Stop Position
* *
* @var int * @var int
*/ */
private $_position; private $_position;
/** /**
* Tab Stop Type * Tab Stop Type
* *
* @var array * @var array
* @link http://www.schemacentral.com/sc/ooxml/a-w_val-26.html Tab Stop Type * @link http://www.schemacentral.com/sc/ooxml/a-w_val-26.html Tab Stop Type
*/ */
private static $_possibleStopTypes = array( private static $_possibleStopTypes = array(
'clear', // No Tab Stop 'clear', // No Tab Stop
'left', // Left Tab Stop 'left', // Left Tab Stop
'center', // Center Tab Stop 'center', // Center Tab Stop
'right', // Right Tab Stop 'right', // Right Tab Stop
'decimal', // Decimal Tab 'decimal', // Decimal Tab
'bar', // Bar Tab 'bar', // Bar Tab
'num' // List tab 'num' // List tab
); );
/** /**
* Tab Leader Character * Tab Leader Character
* *
* @var array * @var array
* @link http://www.schemacentral.com/sc/ooxml/a-w_leader-1.html Tab Leader Character * @link http://www.schemacentral.com/sc/ooxml/a-w_leader-1.html Tab Leader Character
*/ */
private static $_possibleLeaders = array( private static $_possibleLeaders = array(
'none', // No tab stop leader 'none', // No tab stop leader
'dot', // Dotted leader line 'dot', // Dotted leader line
'hyphen', // Dashed tab stop leader line 'hyphen', // Dashed tab stop leader line
'underscore', // Solid leader line 'underscore', // Solid leader line
'heavy', // Heavy solid leader line 'heavy', // Heavy solid leader line
'middleDot' // Middle dot leader line 'middleDot' // Middle dot leader line
); );
/** /**
* Create a new instance of PHPWord_Style_Tab. Both $val and $leader * Create a new instance of PHPWord_Style_Tab. Both $val and $leader
* must conform to the values put forth in the schema. If they do not * must conform to the values put forth in the schema. If they do not
* they will be changed to default values. * they will be changed to default values.
* *
* @param string $val Defaults to 'clear' if value is not possible. * @param string $val Defaults to 'clear' if value is not possible.
* @param int $position Must be an integer; otherwise defaults to 0. * @param int $position Must be an integer; otherwise defaults to 0.
* @param string $leader Defaults to NULL if value is not possible. * @param string $leader Defaults to NULL if value is not possible.
*/ */
public function __construct($val = NULL, $position = 0, $leader = NULL) { public function __construct($val = NULL, $position = 0, $leader = NULL)
// Default to clear if the stop type is not matched {
$this->_val = (self::isStopType($val)) ? $val : 'clear'; // Default to clear if the stop type is not matched
$this->_val = (self::isStopType($val)) ? $val : 'clear';
// Default to 0 if the position is non-numeric // Default to 0 if the position is non-numeric
$this->_position = (is_numeric($position)) ? intval($position) : 0; $this->_position = (is_numeric($position)) ? intval($position) : 0;
// Default to NULL if no tab leader // Default to NULL if no tab leader
$this->_leader = (self::isLeaderType($leader)) ? $leader : NULL; $this->_leader = (self::isLeaderType($leader)) ? $leader : NULL;
}
/**
* Creates the XML DOM for the instance of PHPWord_Style_Tab.
*
* @param PHPWord_Shared_XMLWriter $objWriter
*/
public function toXml(PHPWord_Shared_XMLWriter &$objWriter = NULL) {
if(isset($objWriter)) {
$objWriter->startElement("w:tab");
$objWriter->writeAttribute("w:val", $this->_val);
if(!is_null($this->_leader)) {
$objWriter->writeAttribute("w:leader", $this->_leader);
}
$objWriter->writeAttribute("w:pos", $this->_position);
$objWriter->endElement();
} }
}
/** /**
* Test if attribute is a valid stop type. * Creates the XML DOM for the instance of PHPWord_Style_Tab.
* *
* @param string $attribute * @param PHPWord_Shared_XMLWriter $objWriter
* @return bool True if it is; false otherwise. */
*/ public function toXml(PHPWord_Shared_XMLWriter &$objWriter = NULL)
private static function isStopType($attribute) { {
return in_array($attribute, self::$_possibleStopTypes); if (isset($objWriter)) {
} $objWriter->startElement("w:tab");
$objWriter->writeAttribute("w:val", $this->_val);
if (!is_null($this->_leader)) {
$objWriter->writeAttribute("w:leader", $this->_leader);
}
$objWriter->writeAttribute("w:pos", $this->_position);
$objWriter->endElement();
}
}
/** /**
* Test if attribute is a valid leader type. * Test if attribute is a valid stop type.
* *
* @param string $attribute * @param string $attribute
* @return bool True if it is; false otherwise. * @return bool True if it is; false otherwise.
*/ */
private static function isLeaderType($attribute) { private static function isStopType($attribute)
return in_array($attribute, self::$_possibleLeaders); {
} return in_array($attribute, self::$_possibleStopTypes);
}
/**
* Test if attribute is a valid leader type.
*
* @param string $attribute
* @return bool True if it is; false otherwise.
*/
private static function isLeaderType($attribute)
{
return in_array($attribute, self::$_possibleLeaders);
}
} }
?>

105
Classes/PHPWord/Style/Table.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,64 +20,77 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Style_Table
*/
class PHPWord_Style_Table
{
class PHPWord_Style_Table { private $_cellMarginTop;
private $_cellMarginLeft;
private $_cellMarginRight;
private $_cellMarginBottom;
private $_cellMarginTop; public function __construct()
private $_cellMarginLeft; {
private $_cellMarginRight; $this->_cellMarginTop = null;
private $_cellMarginBottom; $this->_cellMarginLeft = null;
$this->_cellMarginRight = null;
$this->_cellMarginBottom = null;
}
public function __construct() { public function setStyleValue($key, $value)
$this->_cellMarginTop = null; {
$this->_cellMarginLeft = null; $this->$key = $value;
$this->_cellMarginRight = null; }
$this->_cellMarginBottom = null;
}
public function setStyleValue($key, $value) { public function setCellMarginTop($pValue = null)
$this->$key = $value; {
} $this->_cellMarginTop = $pValue;
}
public function setCellMarginTop($pValue = null) { public function getCellMarginTop()
$this->_cellMarginTop = $pValue; {
} return $this->_cellMarginTop;
}
public function getCellMarginTop() { public function setCellMarginLeft($pValue = null)
return $this->_cellMarginTop; {
} $this->_cellMarginLeft = $pValue;
}
public function setCellMarginLeft($pValue = null) { public function getCellMarginLeft()
$this->_cellMarginLeft = $pValue; {
} return $this->_cellMarginLeft;
}
public function getCellMarginLeft() { public function setCellMarginRight($pValue = null)
return $this->_cellMarginLeft; {
} $this->_cellMarginRight = $pValue;
}
public function setCellMarginRight($pValue = null) { public function getCellMarginRight()
$this->_cellMarginRight = $pValue; {
} return $this->_cellMarginRight;
}
public function getCellMarginRight() { public function setCellMarginBottom($pValue = null)
return $this->_cellMarginRight; {
} $this->_cellMarginBottom = $pValue;
}
public function setCellMarginBottom($pValue = null) { public function getCellMarginBottom()
$this->_cellMarginBottom = $pValue; {
} return $this->_cellMarginBottom;
}
public function getCellMarginBottom() { public function getCellMargin()
return $this->_cellMarginBottom; {
} return array($this->_cellMarginTop, $this->_cellMarginLeft, $this->_cellMarginRight, $this->_cellMarginBottom);
}
public function getCellMargin() {
return array($this->_cellMarginTop, $this->_cellMarginLeft, $this->_cellMarginRight, $this->_cellMarginBottom);
}
} }
?>

869
Classes/PHPWord/Style/TableFull.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,423 +20,462 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_TableFull * Class PHPWord_Style_TableFull
*
* @category PHPWord
* @package PHPWord_Style
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_Style_TableFull { class PHPWord_Style_TableFull
{
/**
* Style for first row /**
* * Style for first row
* @var PHPWord_Style_Table *
*/ * @var PHPWord_Style_Table
private $_firstRow = null; */
private $_firstRow = null;
/**
* Cell Margin Top /**
* * Cell Margin Top
* @var int *
*/ * @var int
private $_cellMarginTop = null; */
private $_cellMarginTop = null;
/**
* Cell Margin Left /**
* * Cell Margin Left
* @var int *
*/ * @var int
private $_cellMarginLeft = null; */
private $_cellMarginLeft = null;
/**
* Cell Margin Right /**
* * Cell Margin Right
* @var int *
*/ * @var int
private $_cellMarginRight = null; */
private $_cellMarginRight = null;
/**
* Cell Margin Bottom /**
* * Cell Margin Bottom
* @var int *
*/ * @var int
private $_cellMarginBottom = null; */
private $_cellMarginBottom = null;
/**
* Background-Color /**
* * Background-Color
* @var string *
*/ * @var string
private $_bgColor; */
private $_bgColor;
/**
* Border Top Size /**
* * Border Top Size
* @var int *
*/ * @var int
private $_borderTopSize; */
private $_borderTopSize;
/**
* Border Top Color /**
* * Border Top Color
* @var string *
*/ * @var string
private $_borderTopColor; */
private $_borderTopColor;
/**
* Border Left Size /**
* * Border Left Size
* @var int *
*/ * @var int
private $_borderLeftSize; */
private $_borderLeftSize;
/**
* Border Left Color /**
* * Border Left Color
* @var string *
*/ * @var string
private $_borderLeftColor; */
private $_borderLeftColor;
/**
* Border Right Size /**
* * Border Right Size
* @var int *
*/ * @var int
private $_borderRightSize; */
private $_borderRightSize;
/**
* Border Right Color /**
* * Border Right Color
* @var string *
*/ * @var string
private $_borderRightColor; */
private $_borderRightColor;
/**
* Border Bottom Size /**
* * Border Bottom Size
* @var int *
*/ * @var int
private $_borderBottomSize; */
private $_borderBottomSize;
/**
* Border Bottom Color /**
* * Border Bottom Color
* @var string *
*/ * @var string
private $_borderBottomColor; */
private $_borderBottomColor;
/**
* Border InsideH Size /**
* * Border InsideH Size
* @var int *
*/ * @var int
private $_borderInsideHSize; */
private $_borderInsideHSize;
/**
* Border InsideH Color /**
* * Border InsideH Color
* @var string *
*/ * @var string
private $_borderInsideHColor; */
private $_borderInsideHColor;
/**
* Border InsideV Size /**
* * Border InsideV Size
* @var int *
*/ * @var int
private $_borderInsideVSize; */
private $_borderInsideVSize;
/**
* Border InsideV Color /**
* * Border InsideV Color
* @var string *
*/ * @var string
private $_borderInsideVColor; */
private $_borderInsideVColor;
/**
* Create a new TableFull Font /**
*/ * Create a new TableFull Font
public function __construct($styleTable = null, $styleFirstRow = null, $styleLastRow = null) { */
public function __construct($styleTable = null, $styleFirstRow = null, $styleLastRow = null)
if(!is_null($styleFirstRow) && is_array($styleFirstRow)) { {
$this->_firstRow = clone $this;
if (!is_null($styleFirstRow) && is_array($styleFirstRow)) {
unset($this->_firstRow->_firstRow); $this->_firstRow = clone $this;
unset($this->_firstRow->_cellMarginBottom);
unset($this->_firstRow->_cellMarginTop); unset($this->_firstRow->_firstRow);
unset($this->_firstRow->_cellMarginLeft); unset($this->_firstRow->_cellMarginBottom);
unset($this->_firstRow->_cellMarginRight); unset($this->_firstRow->_cellMarginTop);
unset($this->_firstRow->_borderInsideVColor); unset($this->_firstRow->_cellMarginLeft);
unset($this->_firstRow->_borderInsideVSize); unset($this->_firstRow->_cellMarginRight);
unset($this->_firstRow->_borderInsideHColor); unset($this->_firstRow->_borderInsideVColor);
unset($this->_firstRow->_borderInsideHSize); unset($this->_firstRow->_borderInsideVSize);
foreach($styleFirstRow as $key => $value) { unset($this->_firstRow->_borderInsideHColor);
if(substr($key, 0, 1) != '_') { unset($this->_firstRow->_borderInsideHSize);
$key = '_'.$key; foreach ($styleFirstRow as $key => $value) {
} if (substr($key, 0, 1) != '_') {
$key = '_' . $key;
$this->_firstRow->setStyleValue($key, $value); }
}
} $this->_firstRow->setStyleValue($key, $value);
}
if(!is_null($styleTable) && is_array($styleTable)) { }
foreach($styleTable as $key => $value) {
if(substr($key, 0, 1) != '_') { if (!is_null($styleTable) && is_array($styleTable)) {
$key = '_'.$key; foreach ($styleTable as $key => $value) {
} if (substr($key, 0, 1) != '_') {
$this->setStyleValue($key, $value); $key = '_' . $key;
} }
} $this->setStyleValue($key, $value);
} }
}
/** }
* Set style value
* /**
* @param string $key * Set style value
* @param mixed $value *
*/ * @param string $key
public function setStyleValue($key, $value) { * @param mixed $value
if($key == '_borderSize') { */
$this->setBorderSize($value); public function setStyleValue($key, $value)
} elseif($key == '_borderColor') { {
$this->setBorderColor($value); if ($key == '_borderSize') {
} elseif($key == '_cellMargin') { $this->setBorderSize($value);
$this->setCellMargin($value); } elseif ($key == '_borderColor') {
} else { $this->setBorderColor($value);
$this->$key = $value; } elseif ($key == '_cellMargin') {
} $this->setCellMargin($value);
} } else {
$this->$key = $value;
/** }
* Get First Row Style }
*
* @return PHPWord_Style_TableFull /**
*/ * Get First Row Style
public function getFirstRow() { *
return $this->_firstRow; * @return PHPWord_Style_TableFull
} */
public function getFirstRow()
/** {
* Get Last Row Style return $this->_firstRow;
* }
* @return PHPWord_Style_TableFull
*/ /**
public function getLastRow() { * Get Last Row Style
return $this->_lastRow; *
} * @return PHPWord_Style_TableFull
*/
public function getBgColor() { public function getLastRow()
return $this->_bgColor; {
} return $this->_lastRow;
}
public function setBgColor($pValue = null) {
$this->_bgColor = $pValue; public function getBgColor()
} {
return $this->_bgColor;
/** }
* Set TLRBVH Border Size
* public function setBgColor($pValue = null)
* @param int $pValue {
*/ $this->_bgColor = $pValue;
public function setBorderSize($pValue = null) { }
$this->_borderTopSize = $pValue;
$this->_borderLeftSize = $pValue; /**
$this->_borderRightSize = $pValue; * Set TLRBVH Border Size
$this->_borderBottomSize = $pValue; *
$this->_borderInsideHSize = $pValue; * @param int $pValue
$this->_borderInsideVSize = $pValue; */
} public function setBorderSize($pValue = null)
{
/** $this->_borderTopSize = $pValue;
* Get TLRBVH Border Size $this->_borderLeftSize = $pValue;
* $this->_borderRightSize = $pValue;
* @return array $this->_borderBottomSize = $pValue;
*/ $this->_borderInsideHSize = $pValue;
public function getBorderSize() { $this->_borderInsideVSize = $pValue;
$t = $this->getBorderTopSize(); }
$l = $this->getBorderLeftSize();
$r = $this->getBorderRightSize(); /**
$b = $this->getBorderBottomSize(); * Get TLRBVH Border Size
$h = $this->getBorderInsideHSize(); *
$v = $this->getBorderInsideVSize(); * @return array
*/
return array($t, $l, $r, $b, $h, $v); public function getBorderSize()
} {
$t = $this->getBorderTopSize();
/** $l = $this->getBorderLeftSize();
* Set TLRBVH Border Color $r = $this->getBorderRightSize();
*/ $b = $this->getBorderBottomSize();
public function setBorderColor($pValue = null) { $h = $this->getBorderInsideHSize();
$this->_borderTopColor = $pValue; $v = $this->getBorderInsideVSize();
$this->_borderLeftColor = $pValue;
$this->_borderRightColor = $pValue; return array($t, $l, $r, $b, $h, $v);
$this->_borderBottomColor = $pValue; }
$this->_borderInsideHColor = $pValue;
$this->_borderInsideVColor = $pValue; /**
} * Set TLRBVH Border Color
*/
/** public function setBorderColor($pValue = null)
* Get TLRB Border Color {
* $this->_borderTopColor = $pValue;
* @return array $this->_borderLeftColor = $pValue;
*/ $this->_borderRightColor = $pValue;
public function getBorderColor() { $this->_borderBottomColor = $pValue;
$t = $this->getBorderTopColor(); $this->_borderInsideHColor = $pValue;
$l = $this->getBorderLeftColor(); $this->_borderInsideVColor = $pValue;
$r = $this->getBorderRightColor(); }
$b = $this->getBorderBottomColor();
$h = $this->getBorderInsideHColor(); /**
$v = $this->getBorderInsideVColor(); * Get TLRB Border Color
*
return array($t, $l, $r, $b, $h, $v); * @return array
} */
public function getBorderColor()
public function setBorderTopSize($pValue = null) { {
$this->_borderTopSize = $pValue; $t = $this->getBorderTopColor();
} $l = $this->getBorderLeftColor();
$r = $this->getBorderRightColor();
public function getBorderTopSize() { $b = $this->getBorderBottomColor();
return $this->_borderTopSize; $h = $this->getBorderInsideHColor();
} $v = $this->getBorderInsideVColor();
public function setBorderTopColor($pValue = null) { return array($t, $l, $r, $b, $h, $v);
$this->_borderTopColor = $pValue; }
}
public function setBorderTopSize($pValue = null)
public function getBorderTopColor() { {
return $this->_borderTopColor; $this->_borderTopSize = $pValue;
} }
public function setBorderLeftSize($pValue = null) { public function getBorderTopSize()
$this->_borderLeftSize = $pValue; {
} return $this->_borderTopSize;
}
public function getBorderLeftSize() {
return $this->_borderLeftSize; public function setBorderTopColor($pValue = null)
} {
$this->_borderTopColor = $pValue;
public function setBorderLeftColor($pValue = null) { }
$this->_borderLeftColor = $pValue;
} public function getBorderTopColor()
{
public function getBorderLeftColor() { return $this->_borderTopColor;
return $this->_borderLeftColor; }
}
public function setBorderLeftSize($pValue = null)
public function setBorderRightSize($pValue = null) { {
$this->_borderRightSize = $pValue; $this->_borderLeftSize = $pValue;
} }
public function getBorderRightSize() { public function getBorderLeftSize()
return $this->_borderRightSize; {
} return $this->_borderLeftSize;
}
public function setBorderRightColor($pValue = null) {
$this->_borderRightColor = $pValue; public function setBorderLeftColor($pValue = null)
} {
$this->_borderLeftColor = $pValue;
public function getBorderRightColor() { }
return $this->_borderRightColor;
} public function getBorderLeftColor()
{
public function setBorderBottomSize($pValue = null) { return $this->_borderLeftColor;
$this->_borderBottomSize = $pValue; }
}
public function setBorderRightSize($pValue = null)
public function getBorderBottomSize() { {
return $this->_borderBottomSize; $this->_borderRightSize = $pValue;
} }
public function setBorderBottomColor($pValue = null) { public function getBorderRightSize()
$this->_borderBottomColor = $pValue; {
} return $this->_borderRightSize;
}
public function getBorderBottomColor() {
return $this->_borderBottomColor; public function setBorderRightColor($pValue = null)
} {
$this->_borderRightColor = $pValue;
public function setBorderInsideHColor($pValue = null) { }
$this->_borderInsideHColor = $pValue;
} public function getBorderRightColor()
{
public function getBorderInsideHColor() { return $this->_borderRightColor;
return (isset($this->_borderInsideHColor)) ? $this->_borderInsideHColor : null; }
}
public function setBorderBottomSize($pValue = null)
public function setBorderInsideVColor($pValue = null) { {
$this->_borderInsideVColor = $pValue; $this->_borderBottomSize = $pValue;
} }
public function getBorderInsideVColor() { public function getBorderBottomSize()
return (isset($this->_borderInsideVColor)) ? $this->_borderInsideVColor : null; {
} return $this->_borderBottomSize;
}
public function setBorderInsideHSize($pValue = null) {
$this->_borderInsideHSize = $pValue; public function setBorderBottomColor($pValue = null)
} {
$this->_borderBottomColor = $pValue;
public function getBorderInsideHSize() { }
return (isset($this->_borderInsideHSize)) ? $this->_borderInsideHSize : null;
} public function getBorderBottomColor()
{
public function setBorderInsideVSize($pValue = null) { return $this->_borderBottomColor;
$this->_borderInsideVSize = $pValue; }
}
public function setBorderInsideHColor($pValue = null)
public function getBorderInsideVSize() { {
return (isset($this->_borderInsideVSize)) ? $this->_borderInsideVSize : null; $this->_borderInsideHColor = $pValue;
} }
public function setCellMarginTop($pValue = null) { public function getBorderInsideHColor()
$this->_cellMarginTop = $pValue; {
} return (isset($this->_borderInsideHColor)) ? $this->_borderInsideHColor : null;
}
public function getCellMarginTop() {
return $this->_cellMarginTop; public function setBorderInsideVColor($pValue = null)
} {
$this->_borderInsideVColor = $pValue;
public function setCellMarginLeft($pValue = null) { }
$this->_cellMarginLeft = $pValue;
} public function getBorderInsideVColor()
{
public function getCellMarginLeft() { return (isset($this->_borderInsideVColor)) ? $this->_borderInsideVColor : null;
return $this->_cellMarginLeft; }
}
public function setBorderInsideHSize($pValue = null)
public function setCellMarginRight($pValue = null) { {
$this->_cellMarginRight = $pValue; $this->_borderInsideHSize = $pValue;
} }
public function getCellMarginRight() { public function getBorderInsideHSize()
return $this->_cellMarginRight; {
} return (isset($this->_borderInsideHSize)) ? $this->_borderInsideHSize : null;
}
public function setCellMarginBottom($pValue = null) {
$this->_cellMarginBottom = $pValue; public function setBorderInsideVSize($pValue = null)
} {
$this->_borderInsideVSize = $pValue;
public function getCellMarginBottom() { }
return $this->_cellMarginBottom;
} public function getBorderInsideVSize()
{
public function setCellMargin($pValue = null) { return (isset($this->_borderInsideVSize)) ? $this->_borderInsideVSize : null;
$this->_cellMarginTop = $pValue; }
$this->_cellMarginLeft = $pValue;
$this->_cellMarginRight = $pValue; public function setCellMarginTop($pValue = null)
$this->_cellMarginBottom = $pValue; {
} $this->_cellMarginTop = $pValue;
}
public function getCellMargin() {
return array($this->_cellMarginTop, $this->_cellMarginLeft, $this->_cellMarginRight, $this->_cellMarginBottom); public function getCellMarginTop()
} {
return $this->_cellMarginTop;
}
public function setCellMarginLeft($pValue = null)
{
$this->_cellMarginLeft = $pValue;
}
public function getCellMarginLeft()
{
return $this->_cellMarginLeft;
}
public function setCellMarginRight($pValue = null)
{
$this->_cellMarginRight = $pValue;
}
public function getCellMarginRight()
{
return $this->_cellMarginRight;
}
public function setCellMarginBottom($pValue = null)
{
$this->_cellMarginBottom = $pValue;
}
public function getCellMarginBottom()
{
return $this->_cellMarginBottom;
}
public function setCellMargin($pValue = null)
{
$this->_cellMarginTop = $pValue;
$this->_cellMarginLeft = $pValue;
$this->_cellMarginRight = $pValue;
$this->_cellMarginBottom = $pValue;
}
public function getCellMargin()
{
return array($this->_cellMarginTop, $this->_cellMarginLeft, $this->_cellMarginRight, $this->_cellMarginBottom);
}
} }
?>

69
Classes/PHPWord/Style/Tabs.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,48 +20,45 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version {something} * @version 0.7.0
*/ */
/** /**
* PHPWord_Style_Tabs * PHPWord_Style_Tabs
*
* @category PHPWord
* @package PHPWord_Style_Paragraph
* @copyright Copyright (c) 2011 PHPWord
* @link http://www.schemacentral.com/sc/ooxml/e-w_tabs-1.html w:tabs
*/ */
class PHPWord_Style_Tabs { class PHPWord_Style_Tabs
{
/** /**
* Tabs * Tabs
* *
* @var array * @var array
*/ */
private $_tabs; private $_tabs;
/** /**
* *
* @param array $tabs * @param array $tabs
*/ */
public function __construct(array $tabs) { public function __construct(array $tabs)
$this->_tabs = $tabs; {
} $this->_tabs = $tabs;
}
/**
* /**
* @param PHPWord_Shared_XMLWriter $objWriter *
*/ * @param PHPWord_Shared_XMLWriter $objWriter
public function toXml(PHPWord_Shared_XMLWriter &$objWriter = NULL) { */
if(isset($objWriter)) { public function toXml(PHPWord_Shared_XMLWriter &$objWriter = NULL)
$objWriter->startElement("w:tabs"); {
foreach ($this->_tabs as &$tab) { if (isset($objWriter)) {
$tab->toXml($objWriter); $objWriter->startElement("w:tabs");
} foreach ($this->_tabs as &$tab) {
$objWriter->endElement(); $tab->toXml($objWriter);
}
$objWriter->endElement();
}
} }
}
} }
?>

222
Classes/PHPWord/TOC.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,136 +20,136 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_TOC * Class PHPWord_TOC
*
* @category PHPWord
* @package PHPWord_TOC
* @copyright Copyright (c) 2011 PHPWord
*/ */
class PHPWord_TOC { class PHPWord_TOC
{
/** /**
* Title Elements * Title Elements
* *
* @var array * @var array
*/ */
private static $_titles = array(); private static $_titles = array();
/** /**
* TOC Style * TOC Style
* *
* @var array * @var array
*/ */
private static $_styleTOC; private static $_styleTOC;
/** /**
* Font Style * Font Style
* *
* @var array * @var array
*/ */
private static $_styleFont; private static $_styleFont;
/** /**
* Title Anchor * Title Anchor
* *
* @var array * @var array
*/ */
private static $_anchor = 252634154; private static $_anchor = 252634154;
/** /**
* Title Bookmark * Title Bookmark
* *
* @var array * @var array
*/ */
private static $_bookmarkId = 0; private static $_bookmarkId = 0;
/** /**
* Create a new Table-of-Contents Element * Create a new Table-of-Contents Element
* *
* @param array $styleFont * @param array $styleFont
* @param array $styleTOC * @param array $styleTOC
*/ */
public function __construct($styleFont = null, $styleTOC = null) { public function __construct($styleFont = null, $styleTOC = null)
self::$_styleTOC = new PHPWord_Style_TOC(); {
self::$_styleTOC = new PHPWord_Style_TOC();
if(!is_null($styleTOC) && is_array($styleTOC)) { if (!is_null($styleTOC) && is_array($styleTOC)) {
foreach($styleTOC as $key => $value) { foreach ($styleTOC as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
self::$_styleTOC->setStyleValue($key, $value); self::$_styleTOC->setStyleValue($key, $value);
} }
} }
if(!is_null($styleFont)) { if (!is_null($styleFont)) {
if(is_array($styleFont)) { if (is_array($styleFont)) {
self::$_styleFont = new PHPWord_Style_Font(); self::$_styleFont = new PHPWord_Style_Font();
foreach($styleFont as $key => $value) { foreach ($styleFont as $key => $value) {
if(substr($key, 0, 1) != '_') { if (substr($key, 0, 1) != '_') {
$key = '_'.$key; $key = '_' . $key;
} }
self::$_styleFont->setStyleValue($key, $value); self::$_styleFont->setStyleValue($key, $value);
} }
} else { } else {
self::$_styleFont = $styleFont; self::$_styleFont = $styleFont;
} }
} }
} }
/** /**
* Add a Title * Add a Title
* *
* @return array * @return array
*/ */
public static function addTitle($text, $depth = 0) { public static function addTitle($text, $depth = 0)
$anchor = '_Toc'.++self::$_anchor; {
$bookmarkId = self::$_bookmarkId++; $anchor = '_Toc' . ++self::$_anchor;
$bookmarkId = self::$_bookmarkId++;
$title = array(); $title = array();
$title['text'] = $text; $title['text'] = $text;
$title['depth'] = $depth; $title['depth'] = $depth;
$title['anchor'] = $anchor; $title['anchor'] = $anchor;
$title['bookmarkId'] = $bookmarkId; $title['bookmarkId'] = $bookmarkId;
self::$_titles[] = $title; self::$_titles[] = $title;
return array($anchor, $bookmarkId); return array($anchor, $bookmarkId);
} }
/** /**
* Get all titles * Get all titles
* *
* @return array * @return array
*/ */
public static function getTitles() { public static function getTitles()
return self::$_titles; {
} return self::$_titles;
}
/** /**
* Get TOC Style * Get TOC Style
* *
* @return PHPWord_Style_TOC * @return PHPWord_Style_TOC
*/ */
public static function getStyleTOC() { public static function getStyleTOC()
return self::$_styleTOC; {
} return self::$_styleTOC;
}
/** /**
* Get Font Style * Get Font Style
* *
* @return PHPWord_Style_Font * @return PHPWord_Style_Font
*/ */
public static function getStyleFont() { public static function getStyleFont()
return self::$_styleFont; {
} return self::$_styleFont;
}
} }
?>

60
Classes/PHPWord/Template.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,20 +20,16 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/** /**
* PHPWord_DocumentProperties * PHPWord_DocumentProperties
*
* @category PHPWord
* @package PHPWord
* @copyright Copyright (c) 2009 - 2011 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Template { class PHPWord_Template
{
/** /**
* ZipArchive * ZipArchive
@ -62,20 +58,21 @@ class PHPWord_Template {
* *
* @param string $strFilename * @param string $strFilename
*/ */
public function __construct($strFilename) { public function __construct($strFilename)
{
$this->_tempFileName = tempnam(sys_get_temp_dir(), ''); $this->_tempFileName = tempnam(sys_get_temp_dir(), '');
if ($this->_tempFileName !== false) { if ($this->_tempFileName !== false) {
// Copy the source File to the temp File // Copy the source File to the temp File
if(!copy($strFilename, $this->_tempFileName)){ if (!copy($strFilename, $this->_tempFileName)) {
throw new PHPWord_Exception('Could not copy the template from '.$strFilename.' to '.$this->_tempFileName.'.'); throw new PHPWord_Exception('Could not copy the template from ' . $strFilename . ' to ' . $this->_tempFileName . '.');
} }
$this->_objZip = new ZipArchive(); $this->_objZip = new ZipArchive();
$this->_objZip->open($this->_tempFileName); $this->_objZip->open($this->_tempFileName);
$this->_documentXML = $this->_objZip->getFromName('word/document.xml'); $this->_documentXML = $this->_objZip->getFromName('word/document.xml');
} else { } else {
throw new PHPWord_Exception('Could not create temporary file with unique name in the default temporary directory.'); throw new PHPWord_Exception('Could not create temporary file with unique name in the default temporary directory.');
} }
} }
@ -85,22 +82,23 @@ class PHPWord_Template {
* @param mixed $search * @param mixed $search
* @param mixed $replace * @param mixed $replace
*/ */
public function setValue($search, $replace) { public function setValue($search, $replace)
{
$pattern = '|\$\{([^\}]+)\}|U'; $pattern = '|\$\{([^\}]+)\}|U';
preg_match_all($pattern, $this->_documentXML, $matches); preg_match_all($pattern, $this->_documentXML, $matches);
foreach ($matches[0] as $value) { foreach ($matches[0] as $value) {
$valueCleaned = preg_replace('/<[^>]+>/', '', $value); $valueCleaned = preg_replace('/<[^>]+>/', '', $value);
$valueCleaned = preg_replace('/<\/[^>]+>/', '', $valueCleaned); $valueCleaned = preg_replace('/<\/[^>]+>/', '', $valueCleaned);
$this->_documentXML = str_replace($value, $valueCleaned, $this->_documentXML); $this->_documentXML = str_replace($value, $valueCleaned, $this->_documentXML);
} }
if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') { if (substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
$search = '${'.$search.'}'; $search = '${' . $search . '}';
} }
if(!is_array($replace)) { if (!is_array($replace)) {
if(!PHPWord_Shared_String::IsUTF8($replace)){ if (!PHPWord_Shared_String::IsUTF8($replace)) {
$replace = utf8_encode($replace); $replace = utf8_encode($replace);
} }
} }
@ -121,19 +119,19 @@ class PHPWord_Template {
* *
* @param string $strFilename * @param string $strFilename
*/ */
public function save($strFilename) { public function save($strFilename)
if(file_exists($strFilename)) { {
if (file_exists($strFilename)) {
unlink($strFilename); unlink($strFilename);
} }
$this->_objZip->addFromString('word/document.xml', $this->_documentXML); $this->_objZip->addFromString('word/document.xml', $this->_documentXML);
// Close zip file // Close zip file
if($this->_objZip->close() === false) { if ($this->_objZip->close() === false) {
throw new Exception('Could not close zip file.'); throw new Exception('Could not close zip file.');
} }
rename($this->_tempFileName, $strFilename); rename($this->_tempFileName, $strFilename);
} }
} }
?>

25
Classes/PHPWord/Writer/IWriter.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,20 +20,21 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Interface PHPWord_Writer_IWriter
*/
interface PHPWord_Writer_IWriter interface PHPWord_Writer_IWriter
{ {
/** /**
* Save PHPWord to file * Save PHPWord to file
* *
* @param string $pFileName * @param string $pFileName
* @throws Exception * @throws Exception
*/ */
public function save($pFilename = null); public function save($pFilename = null);
} }
?>

446
Classes/PHPWord/Writer/ODText.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,262 +19,272 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_PowerPoint2007 * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_ODText
*/
class PHPWord_Writer_ODText implements PHPWord_Writer_IWriter class PHPWord_Writer_ODText implements PHPWord_Writer_IWriter
{ {
/** /**
* Private PHPWord * Private PHPWord
* *
* @var PHPWord * @var PHPWord
*/ */
private $_document; private $_document;
/** /**
* Private writer parts * Private writer parts
* *
* @var PHPWord_Writer_ODText_WriterPart[] * @var PHPWord_Writer_ODText_WriterPart[]
*/ */
private $_writerParts; private $_writerParts;
/** /**
* Private unique PHPWord_Worksheet_BaseDrawing HashTable * Private unique PHPWord_Worksheet_BaseDrawing HashTable
* *
* @var PHPWord_HashTable * @var PHPWord_HashTable
*/ */
private $_drawingHashTable; private $_drawingHashTable;
/** /**
* Use disk caching where possible? * Use disk caching where possible?
* *
* @var boolean * @var boolean
*/ */
private $_useDiskCaching = false; private $_useDiskCaching = false;
/** /**
* Disk caching directory * Disk caching directory
* *
* @var string * @var string
*/ */
private $_diskCachingDirectory; private $_diskCachingDirectory;
/** /**
* Create a new PHPWord_Writer_ODText * Create a new PHPWord_Writer_ODText
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
*/ */
public function __construct(PHPWord $pPHPWord = null) public function __construct(PHPWord $pPHPWord = null)
{ {
// Assign PHPWord // Assign PHPWord
$this->setPHPWord($pPHPWord); $this->setPHPWord($pPHPWord);
// Set up disk caching location // Set up disk caching location
$this->_diskCachingDirectory = './'; $this->_diskCachingDirectory = './';
// Initialise writer parts // Initialise writer parts
$this->_writerParts['content'] = new PHPWord_Writer_ODText_Content(); $this->_writerParts['content'] = new PHPWord_Writer_ODText_Content();
$this->_writerParts['manifest'] = new PHPWord_Writer_ODText_Manifest(); $this->_writerParts['manifest'] = new PHPWord_Writer_ODText_Manifest();
$this->_writerParts['meta'] = new PHPWord_Writer_ODText_Meta(); $this->_writerParts['meta'] = new PHPWord_Writer_ODText_Meta();
$this->_writerParts['mimetype'] = new PHPWord_Writer_ODText_Mimetype(); $this->_writerParts['mimetype'] = new PHPWord_Writer_ODText_Mimetype();
$this->_writerParts['styles'] = new PHPWord_Writer_ODText_Styles(); $this->_writerParts['styles'] = new PHPWord_Writer_ODText_Styles();
// Assign parent IWriter // Assign parent IWriter
foreach ($this->_writerParts as $writer) { foreach ($this->_writerParts as $writer) {
$writer->setParentWriter($this); $writer->setParentWriter($this);
} }
// Set HashTable variables // Set HashTable variables
$this->_drawingHashTable = new PHPWord_HashTable(); $this->_drawingHashTable = new PHPWord_HashTable();
} }
/** /**
* Save PHPWord to file * Save PHPWord to file
* *
* @param string $pFileName * @param string $pFileName
* @throws Exception * @throws Exception
*/ */
public function save($pFilename = null) public function save($pFilename = null)
{ {
if (!is_null($this->_document)) { if (!is_null($this->_document)) {
// If $pFilename is php://output or php://stdout, make it a temporary file... // If $pFilename is php://output or php://stdout, make it a temporary file...
$originalFilename = $pFilename; $originalFilename = $pFilename;
if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
$pFilename = @tempnam('./', 'phppttmp'); $pFilename = @tempnam('./', 'phppttmp');
if ($pFilename == '') { if ($pFilename == '') {
$pFilename = $originalFilename; $pFilename = $originalFilename;
} }
} }
// Create drawing dictionary // Create drawing dictionary
// Create new ZIP file and open it for writing // Create new ZIP file and open it for writing
$objZip = new ZipArchive(); $objZip = new ZipArchive();
// Try opening the ZIP file // Try opening the ZIP file
if ($objZip->open($pFilename, ZIPARCHIVE::OVERWRITE) !== true) { if ($objZip->open($pFilename, ZIPARCHIVE::OVERWRITE) !== true) {
if ($objZip->open($pFilename, ZIPARCHIVE::CREATE) !== true) { if ($objZip->open($pFilename, ZIPARCHIVE::CREATE) !== true) {
throw new Exception("Could not open " . $pFilename . " for writing."); throw new Exception("Could not open " . $pFilename . " for writing.");
} }
} }
// Add mimetype to ZIP file // Add mimetype to ZIP file
//@todo Not in ZIPARCHIVE::CM_STORE mode //@todo Not in ZIPARCHIVE::CM_STORE mode
$objZip->addFromString('mimetype', $this->getWriterPart('mimetype')->writeMimetype($this->_document)); $objZip->addFromString('mimetype', $this->getWriterPart('mimetype')->writeMimetype($this->_document));
// Add content.xml to ZIP file // Add content.xml to ZIP file
$objZip->addFromString('content.xml', $this->getWriterPart('content')->writeContent($this->_document)); $objZip->addFromString('content.xml', $this->getWriterPart('content')->writeContent($this->_document));
// Add meta.xml to ZIP file // Add meta.xml to ZIP file
$objZip->addFromString('meta.xml', $this->getWriterPart('meta')->writeMeta($this->_document)); $objZip->addFromString('meta.xml', $this->getWriterPart('meta')->writeMeta($this->_document));
// Add styles.xml to ZIP file // Add styles.xml to ZIP file
$objZip->addFromString('styles.xml', $this->getWriterPart('styles')->writeStyles($this->_document)); $objZip->addFromString('styles.xml', $this->getWriterPart('styles')->writeStyles($this->_document));
// Add META-INF/manifest.xml // Add META-INF/manifest.xml
$objZip->addFromString('META-INF/manifest.xml', $this->getWriterPart('manifest')->writeManifest($this->_document)); $objZip->addFromString('META-INF/manifest.xml', $this->getWriterPart('manifest')->writeManifest($this->_document));
// Add media // Add media
for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) { for ($i = 0; $i < $this->getDrawingHashTable()->count(); ++$i) {
if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_Drawing) { if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_Drawing) {
$imageContents = null; $imageContents = null;
$imagePath = $this->getDrawingHashTable()->getByIndex($i)->getPath(); $imagePath = $this->getDrawingHashTable()->getByIndex($i)->getPath();
if (strpos($imagePath, 'zip://') !== false) { if (strpos($imagePath, 'zip://') !== false) {
$imagePath = substr($imagePath, 6); $imagePath = substr($imagePath, 6);
$imagePathSplitted = explode('#', $imagePath); $imagePathSplitted = explode('#', $imagePath);
$imageZip = new ZipArchive(); $imageZip = new ZipArchive();
$imageZip->open($imagePathSplitted[0]); $imageZip->open($imagePathSplitted[0]);
$imageContents = $imageZip->getFromName($imagePathSplitted[1]); $imageContents = $imageZip->getFromName($imagePathSplitted[1]);
$imageZip->close(); $imageZip->close();
unset($imageZip); unset($imageZip);
} else { } else {
$imageContents = file_get_contents($imagePath); $imageContents = file_get_contents($imagePath);
} }
$objZip->addFromString('Pictures/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); $objZip->addFromString('Pictures/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents);
} else if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_MemoryDrawing) { } else if ($this->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_MemoryDrawing) {
ob_start(); ob_start();
call_user_func( call_user_func(
$this->getDrawingHashTable()->getByIndex($i)->getRenderingFunction(), $this->getDrawingHashTable()->getByIndex($i)->getRenderingFunction(),
$this->getDrawingHashTable()->getByIndex($i)->getImageResource() $this->getDrawingHashTable()->getByIndex($i)->getImageResource()
); );
$imageContents = ob_get_contents(); $imageContents = ob_get_contents();
ob_end_clean(); ob_end_clean();
$objZip->addFromString('Pictures/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents); $objZip->addFromString('Pictures/' . str_replace(' ', '_', $this->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()), $imageContents);
} }
} }
// Close file // Close file
if ($objZip->close() === false) { if ($objZip->close() === false) {
throw new Exception("Could not close zip file $pFilename."); throw new Exception("Could not close zip file $pFilename.");
} }
// If a temporary file was used, copy it to the correct file stream // If a temporary file was used, copy it to the correct file stream
if ($originalFilename != $pFilename) { if ($originalFilename != $pFilename) {
if (copy($pFilename, $originalFilename) === false) { if (copy($pFilename, $originalFilename) === false) {
throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename."); throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename.");
} }
@unlink($pFilename); @unlink($pFilename);
} }
} else { } else {
throw new Exception("PHPWord object unassigned."); throw new Exception("PHPWord object unassigned.");
} }
} }
/** /**
* Get PHPWord object * Get PHPWord object
* *
* @return PHPWord * @return PHPWord
* @throws Exception * @throws Exception
*/ */
public function getPHPWord() { public function getPHPWord()
if (!is_null($this->_document)) { {
return $this->_document; if (!is_null($this->_document)) {
} else { return $this->_document;
throw new Exception("No PHPWord assigned."); } else {
} throw new Exception("No PHPWord assigned.");
} }
}
/** /**
* Get PHPWord object * Get PHPWord object
* *
* @param PHPWord $pPHPWord PHPWord object * @param PHPWord $pPHPWord PHPWord object
* @throws Exception * @throws Exception
* @return PHPWord_Writer_PowerPoint2007 * @return PHPWord_Writer_PowerPoint2007
*/ */
public function setPHPWord(PHPWord $pPHPWord = null) { public function setPHPWord(PHPWord $pPHPWord = null)
$this->_document = $pPHPWord; {
return $this; $this->_document = $pPHPWord;
} return $this;
}
/** /**
* Get PHPWord_Worksheet_BaseDrawing HashTable * Get PHPWord_Worksheet_BaseDrawing HashTable
* *
* @return PHPWord_HashTable * @return PHPWord_HashTable
*/ */
public function getDrawingHashTable() { public function getDrawingHashTable()
return $this->_drawingHashTable; {
} return $this->_drawingHashTable;
}
/** /**
* Get writer part * Get writer part
* *
* @param string $pPartName Writer part name * @param string $pPartName Writer part name
* @return PHPWord_Writer_ODText_WriterPart * @return PHPWord_Writer_ODText_WriterPart
*/ */
function getWriterPart($pPartName = '') { function getWriterPart($pPartName = '')
if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) { {
return $this->_writerParts[strtolower($pPartName)]; if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) {
} else { return $this->_writerParts[strtolower($pPartName)];
return null; } else {
} return null;
} }
}
/** /**
* Get use disk caching where possible? * Get use disk caching where possible?
* *
* @return boolean * @return boolean
*/ */
public function getUseDiskCaching() { public function getUseDiskCaching()
return $this->_useDiskCaching; {
} return $this->_useDiskCaching;
}
/** /**
* Set use disk caching where possible? * Set use disk caching where possible?
* *
* @param boolean $pValue * @param boolean $pValue
* @param string $pDirectory Disk caching directory * @param string $pDirectory Disk caching directory
* @throws Exception Exception when directory does not exist * @throws Exception Exception when directory does not exist
* @return PHPWord_Writer_PowerPoint2007 * @return PHPWord_Writer_PowerPoint2007
*/ */
public function setUseDiskCaching($pValue = false, $pDirectory = null) { public function setUseDiskCaching($pValue = false, $pDirectory = null)
$this->_useDiskCaching = $pValue; {
$this->_useDiskCaching = $pValue;
if (!is_null($pDirectory)) { if (!is_null($pDirectory)) {
if (is_dir($pDirectory)) { if (is_dir($pDirectory)) {
$this->_diskCachingDirectory = $pDirectory; $this->_diskCachingDirectory = $pDirectory;
} else { } else {
throw new Exception("Directory does not exist: $pDirectory"); throw new Exception("Directory does not exist: $pDirectory");
} }
} }
return $this; return $this;
} }
/** /**
* Get disk caching directory * Get disk caching directory
* *
* @return string * @return string
*/ */
public function getDiskCachingDirectory() { public function getDiskCachingDirectory()
return $this->_diskCachingDirectory; {
} return $this->_diskCachingDirectory;
}
} }

548
Classes/PHPWord/Writer/ODText/Content.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,250 +19,245 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_ODText * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_Content * Class PHPWord_Writer_ODText_Manifest
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Writer_ODText_Content extends PHPWord_Writer_ODText_WriterPart class PHPWord_Writer_ODText_Content extends PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Write content file to XML format * Write content file to XML format
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
* @return string XML Output * @return string XML Output
* @throws Exception * @throws Exception
*/ */
public function writeContent(PHPWord $pPHPWord = null) public function writeContent(PHPWord $pPHPWord = null)
{ {
// Create XML writer // Create XML writer
$objWriter = null; $objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) { if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else { } else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
} }
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8'); $objWriter->startDocument('1.0', 'UTF-8');
// office:document-content // office:document-content
$objWriter->startElement('office:document-content'); $objWriter->startElement('office:document-content');
$objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
$objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0');
$objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0');
$objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0');
$objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0');
$objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0');
$objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
$objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
$objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
$objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0');
$objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0');
$objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0');
$objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0');
$objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML');
$objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0');
$objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0');
$objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
$objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer');
$objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc');
$objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events');
$objWriter->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms'); $objWriter->writeAttribute('xmlns:xforms', 'http://www.w3.org/2002/xforms');
$objWriter->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); $objWriter->writeAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema');
$objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report');
$objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2');
$objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml');
$objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
$objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table');
$objWriter->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0'); $objWriter->writeAttribute('xmlns:field', 'urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0');
$objWriter->writeAttribute('xmlns:formx', 'urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0'); $objWriter->writeAttribute('xmlns:formx', 'urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0');
$objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/');
$objWriter->writeAttribute('office:version', '1.2'); $objWriter->writeAttribute('office:version', '1.2');
// We firstly search all fonts used // We firstly search all fonts used
$_sections = $pPHPWord->getSections(); $_sections = $pPHPWord->getSections();
$countSections = count($_sections); $countSections = count($_sections);
if($countSections > 0) { if ($countSections > 0) {
$pSection = 0; $pSection = 0;
$numPStyles = 0; $numPStyles = 0;
$numFStyles = 0; $numFStyles = 0;
foreach($_sections as $section) { foreach ($_sections as $section) {
$pSection++; $pSection++;
$_elements = $section->getElements(); $_elements = $section->getElements();
foreach($_elements as $element) { foreach ($_elements as $element) {
if($element instanceof PHPWord_Section_Text) { if ($element instanceof PHPWord_Section_Text) {
$fStyle = $element->getFontStyle(); $fStyle = $element->getFontStyle();
$pStyle = $element->getParagraphStyle(); $pStyle = $element->getParagraphStyle();
if($fStyle instanceof PHPWord_Style_Font){ if ($fStyle instanceof PHPWord_Style_Font) {
$numFStyles++; $numFStyles++;
$arrStyle = array( $arrStyle = array(
'color'=>$fStyle->getColor(), 'color' => $fStyle->getColor(),
'name' =>$fStyle->getName() 'name' => $fStyle->getName()
); );
$pPHPWord->addFontStyle('T'.$numFStyles, $arrStyle); $pPHPWord->addFontStyle('T' . $numFStyles, $arrStyle);
$element->setFontStyle('T'.$numFStyles); $element->setFontStyle('T' . $numFStyles);
} } elseif ($pStyle instanceof PHPWord_Style_Paragraph) {
elseif($pStyle instanceof PHPWord_Style_Paragraph){ $numPStyles++;
$numPStyles++;
$pPHPWord->addParagraphStyle('P'.$numPStyles, array()); $pPHPWord->addParagraphStyle('P' . $numPStyles, array());
$element->setParagraph('P'.$numPStyles); $element->setParagraph('P' . $numPStyles);
} }
} }
} }
} }
} }
// office:font-face-decls // office:font-face-decls
$objWriter->startElement('office:font-face-decls'); $objWriter->startElement('office:font-face-decls');
$arrFonts = array(); $arrFonts = array();
$styles = PHPWord_Style::getStyles(); $styles = PHPWord_Style::getStyles();
$numFonts = 0; $numFonts = 0;
if(count($styles) > 0) { if (count($styles) > 0) {
foreach($styles as $styleName => $style) { foreach ($styles as $styleName => $style) {
// PHPWord_Style_Font // PHPWord_Style_Font
if($style instanceof PHPWord_Style_Font) { if ($style instanceof PHPWord_Style_Font) {
$numFonts++; $numFonts++;
$name = $style->getName(); $name = $style->getName();
if(!in_array($name, $arrFonts)){ if (!in_array($name, $arrFonts)) {
$arrFonts[] = $name; $arrFonts[] = $name;
// style:font-face // style:font-face
$objWriter->startElement('style:font-face'); $objWriter->startElement('style:font-face');
$objWriter->writeAttribute('style:name', $name); $objWriter->writeAttribute('style:name', $name);
$objWriter->writeAttribute('svg:font-family', $name); $objWriter->writeAttribute('svg:font-family', $name);
$objWriter->endElement(); $objWriter->endElement();
} }
} }
} }
if(!in_array('Arial', $arrFonts)){ if (!in_array('Arial', $arrFonts)) {
$objWriter->startElement('style:font-face'); $objWriter->startElement('style:font-face');
$objWriter->writeAttribute('style:name', 'Arial'); $objWriter->writeAttribute('style:name', 'Arial');
$objWriter->writeAttribute('svg:font-family', 'Arial'); $objWriter->writeAttribute('svg:font-family', 'Arial');
$objWriter->endElement(); $objWriter->endElement();
} }
} }
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('office:automatic-styles'); $objWriter->startElement('office:automatic-styles');
$styles = PHPWord_Style::getStyles(); $styles = PHPWord_Style::getStyles();
$numPStyles = 0; $numPStyles = 0;
if(count($styles) > 0) { if (count($styles) > 0) {
foreach($styles as $styleName => $style) { foreach ($styles as $styleName => $style) {
if(preg_match('#^T[0-9]+$#', $styleName) != 0 if (preg_match('#^T[0-9]+$#', $styleName) != 0
|| preg_match('#^P[0-9]+$#', $styleName) != 0){ || preg_match('#^P[0-9]+$#', $styleName) != 0
// PHPWord_Style_Font ) {
if($style instanceof PHPWord_Style_Font) { // PHPWord_Style_Font
$objWriter->startElement('style:style'); if ($style instanceof PHPWord_Style_Font) {
$objWriter->writeAttribute('style:name', $styleName); $objWriter->startElement('style:style');
$objWriter->writeAttribute('style:family', 'text'); $objWriter->writeAttribute('style:name', $styleName);
// style:text-properties $objWriter->writeAttribute('style:family', 'text');
$objWriter->startElement('style:text-properties'); // style:text-properties
$objWriter->writeAttribute('fo:color', '#'.$style->getColor()); $objWriter->startElement('style:text-properties');
$objWriter->writeAttribute('style:font-name', $style->getName()); $objWriter->writeAttribute('fo:color', '#' . $style->getColor());
$objWriter->writeAttribute('style:font-name-complex', $style->getName()); $objWriter->writeAttribute('style:font-name', $style->getName());
$objWriter->endElement(); $objWriter->writeAttribute('style:font-name-complex', $style->getName());
$objWriter->endElement(); $objWriter->endElement();
} $objWriter->endElement();
if($style instanceof PHPWord_Style_Paragraph){ }
$numPStyles++; if ($style instanceof PHPWord_Style_Paragraph) {
// style:style $numPStyles++;
$objWriter->startElement('style:style'); // style:style
$objWriter->writeAttribute('style:name', $styleName); $objWriter->startElement('style:style');
$objWriter->writeAttribute('style:family', 'paragraph'); $objWriter->writeAttribute('style:name', $styleName);
$objWriter->writeAttribute('style:parent-style-name', 'Standard'); $objWriter->writeAttribute('style:family', 'paragraph');
$objWriter->writeAttribute('style:master-page-name', 'Standard'); $objWriter->writeAttribute('style:parent-style-name', 'Standard');
// style:paragraph-properties $objWriter->writeAttribute('style:master-page-name', 'Standard');
$objWriter->startElement('style:paragraph-properties'); // style:paragraph-properties
$objWriter->writeAttribute('style:page-number', 'auto'); $objWriter->startElement('style:paragraph-properties');
$objWriter->endElement(); $objWriter->writeAttribute('style:page-number', 'auto');
$objWriter->endElement(); $objWriter->endElement();
} $objWriter->endElement();
} }
} }
}
if($numPStyles == 0){ if ($numPStyles == 0) {
// style:style // style:style
$objWriter->startElement('style:style'); $objWriter->startElement('style:style');
$objWriter->writeAttribute('style:name', 'P1'); $objWriter->writeAttribute('style:name', 'P1');
$objWriter->writeAttribute('style:family', 'paragraph'); $objWriter->writeAttribute('style:family', 'paragraph');
$objWriter->writeAttribute('style:parent-style-name', 'Standard'); $objWriter->writeAttribute('style:parent-style-name', 'Standard');
$objWriter->writeAttribute('style:master-page-name', 'Standard'); $objWriter->writeAttribute('style:master-page-name', 'Standard');
// style:paragraph-properties // style:paragraph-properties
$objWriter->startElement('style:paragraph-properties'); $objWriter->startElement('style:paragraph-properties');
$objWriter->writeAttribute('style:page-number', 'auto'); $objWriter->writeAttribute('style:page-number', 'auto');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
} }
$objWriter->endElement(); $objWriter->endElement();
// office:body // office:body
$objWriter->startElement('office:body'); $objWriter->startElement('office:body');
// office:text // office:text
$objWriter->startElement('office:text'); $objWriter->startElement('office:text');
// text:sequence-decls // text:sequence-decls
$objWriter->startElement('text:sequence-decls'); $objWriter->startElement('text:sequence-decls');
// text:sequence-decl // text:sequence-decl
$objWriter->startElement('text:sequence-decl'); $objWriter->startElement('text:sequence-decl');
$objWriter->writeAttribute('text:display-outline-level', 0); $objWriter->writeAttribute('text:display-outline-level', 0);
$objWriter->writeAttribute('text:name', 'Illustration'); $objWriter->writeAttribute('text:name', 'Illustration');
$objWriter->endElement(); $objWriter->endElement();
// text:sequence-decl // text:sequence-decl
$objWriter->startElement('text:sequence-decl'); $objWriter->startElement('text:sequence-decl');
$objWriter->writeAttribute('text:display-outline-level', 0); $objWriter->writeAttribute('text:display-outline-level', 0);
$objWriter->writeAttribute('text:name', 'Table'); $objWriter->writeAttribute('text:name', 'Table');
$objWriter->endElement(); $objWriter->endElement();
// text:sequence-decl // text:sequence-decl
$objWriter->startElement('text:sequence-decl'); $objWriter->startElement('text:sequence-decl');
$objWriter->writeAttribute('text:display-outline-level', 0); $objWriter->writeAttribute('text:display-outline-level', 0);
$objWriter->writeAttribute('text:name', 'Text'); $objWriter->writeAttribute('text:name', 'Text');
$objWriter->endElement(); $objWriter->endElement();
// text:sequence-decl // text:sequence-decl
$objWriter->startElement('text:sequence-decl'); $objWriter->startElement('text:sequence-decl');
$objWriter->writeAttribute('text:display-outline-level', 0); $objWriter->writeAttribute('text:display-outline-level', 0);
$objWriter->writeAttribute('text:name', 'Drawing'); $objWriter->writeAttribute('text:name', 'Drawing');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$_sections = $pPHPWord->getSections(); $_sections = $pPHPWord->getSections();
$countSections = count($_sections); $countSections = count($_sections);
$pSection = 0; $pSection = 0;
if($countSections > 0) { if ($countSections > 0) {
foreach($_sections as $section) { foreach ($_sections as $section) {
$pSection++; $pSection++;
$_elements = $section->getElements(); $_elements = $section->getElements();
foreach($_elements as $element) { foreach ($_elements as $element) {
if($element instanceof PHPWord_Section_Text) { if ($element instanceof PHPWord_Section_Text) {
$this->_writeText($objWriter, $element); $this->_writeText($objWriter, $element);
}/* elseif($element instanceof PHPWord_Section_TextRun) { } /* elseif($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element); $this->_writeTextRun($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Link) { } elseif($element instanceof PHPWord_Section_Link) {
$this->_writeLink($objWriter, $element); $this->_writeLink($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Title) { } elseif($element instanceof PHPWord_Section_Title) {
$this->_writeTitle($objWriter, $element); $this->_writeTitle($objWriter, $element);
}*/ elseif($element instanceof PHPWord_Section_TextBreak) { }*/ elseif ($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter); $this->_writeTextBreak($objWriter);
}/* elseif($element instanceof PHPWord_Section_PageBreak) { } /* elseif($element instanceof PHPWord_Section_PageBreak) {
$this->_writePageBreak($objWriter); $this->_writePageBreak($objWriter);
} elseif($element instanceof PHPWord_Section_Table) { } elseif($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element); $this->_writeTable($objWriter, $element);
@ -276,70 +271,71 @@ class PHPWord_Writer_ODText_Content extends PHPWord_Writer_ODText_WriterPart
} elseif($element instanceof PHPWord_TOC) { } elseif($element instanceof PHPWord_TOC) {
$this->_writeTOC($objWriter); $this->_writeTOC($objWriter);
}*/ }*/
else { else {
print_r($element); print_r($element);
echo '<br />'; echo '<br />';
} }
} }
if($pSection == $countSections) { if ($pSection == $countSections) {
$this->_writeEndSection($objWriter, $section); $this->_writeEndSection($objWriter, $section);
} else { } else {
$this->_writeSection($objWriter, $section); $this->_writeSection($objWriter, $section);
} }
} }
} }
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
protected function _writeText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Text $text, $withoutP = false) { protected function _writeText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Text $text, $withoutP = false)
$styleFont = $text->getFontStyle(); {
$styleParagraph = $text->getParagraphStyle(); $styleFont = $text->getFontStyle();
$styleParagraph = $text->getParagraphStyle();
$SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false; $SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
if($SfIsObject) { if ($SfIsObject) {
// Don't never be the case, because I browse all sections for cleaning all styles not declared // Don't never be the case, because I browse all sections for cleaning all styles not declared
die('PHPWord : $SfIsObject wouldn\'t be an object'); die('PHPWord : $SfIsObject wouldn\'t be an object');
} } else {
else { // text:p
// text:p $objWriter->startElement('text:p');
$objWriter->startElement('text:p'); if (empty($styleFont)) {
if(empty($styleFont)){ if (empty($styleParagraph)) {
if(empty($styleParagraph)){ $objWriter->writeAttribute('text:style-name', 'P1');
$objWriter->writeAttribute('text:style-name', 'P1'); } else {
} $objWriter->writeAttribute('text:style-name', $text->getParagraphStyle());
else { }
$objWriter->writeAttribute('text:style-name', $text->getParagraphStyle()); $objWriter->writeRaw($text->getText());
} } else {
$objWriter->writeRaw($text->getText()); if (empty($styleParagraph)) {
} $objWriter->writeAttribute('text:style-name', 'Standard');
else { } else {
if(empty($styleParagraph)){ $objWriter->writeAttribute('text:style-name', $text->getParagraphStyle());
$objWriter->writeAttribute('text:style-name', 'Standard'); }
} // text:span
else { $objWriter->startElement('text:span');
$objWriter->writeAttribute('text:style-name', $text->getParagraphStyle()); $objWriter->writeAttribute('text:style-name', $styleFont);
} $objWriter->writeRaw($text->getText());
// text:span $objWriter->endElement();
$objWriter->startElement('text:span'); }
$objWriter->writeAttribute('text:style-name', $styleFont); $objWriter->endElement();
$objWriter->writeRaw($text->getText()); }
$objWriter->endElement(); }
}
$objWriter->endElement(); protected function _writeTextBreak(PHPWord_Shared_XMLWriter $objWriter = null)
} {
} $objWriter->startElement('text:p');
protected function _writeTextBreak(PHPWord_Shared_XMLWriter $objWriter = null) { $objWriter->writeAttribute('text:style-name', 'Standard');
$objWriter->startElement('text:p'); $objWriter->endElement();
$objWriter->writeAttribute('text:style-name', 'Standard'); }
$objWriter->endElement();
} private function _writeEndSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section)
private function _writeEndSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section) { {
} }
} }

179
Classes/PHPWord/Writer/ODText/Manifest.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,113 +19,108 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_ODText * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_Manifest * Class PHPWord_Writer_ODText_Manifest
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Writer_ODText_Manifest extends PHPWord_Writer_ODText_WriterPart class PHPWord_Writer_ODText_Manifest extends PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Write Manifest file to XML format * Write Manifest file to XML format
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
* @return string XML Output * @return string XML Output
* @throws Exception * @throws Exception
*/ */
public function writeManifest(PHPWord $pPHPWord = null) public function writeManifest(PHPWord $pPHPWord = null)
{ {
// Create XML writer // Create XML writer
$objWriter = null; $objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) { if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else { } else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
} }
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8'); $objWriter->startDocument('1.0', 'UTF-8');
// manifest:manifest // manifest:manifest
$objWriter->startElement('manifest:manifest'); $objWriter->startElement('manifest:manifest');
$objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0'); $objWriter->writeAttribute('xmlns:manifest', 'urn:oasis:names:tc:opendocument:xmlns:manifest:1.0');
$objWriter->writeAttribute('manifest:version', '1.2'); $objWriter->writeAttribute('manifest:version', '1.2');
// manifest:file-entry // manifest:file-entry
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.text'); $objWriter->writeAttribute('manifest:media-type', 'application/vnd.oasis.opendocument.text');
$objWriter->writeAttribute('manifest:version', '1.2'); $objWriter->writeAttribute('manifest:version', '1.2');
$objWriter->writeAttribute('manifest:full-path', '/'); $objWriter->writeAttribute('manifest:full-path', '/');
$objWriter->endElement(); $objWriter->endElement();
// manifest:file-entry // manifest:file-entry
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml');
$objWriter->writeAttribute('manifest:full-path', 'content.xml'); $objWriter->writeAttribute('manifest:full-path', 'content.xml');
$objWriter->endElement(); $objWriter->endElement();
// manifest:file-entry // manifest:file-entry
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml');
$objWriter->writeAttribute('manifest:full-path', 'meta.xml'); $objWriter->writeAttribute('manifest:full-path', 'meta.xml');
$objWriter->endElement(); $objWriter->endElement();
// manifest:file-entry // manifest:file-entry
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', 'text/xml'); $objWriter->writeAttribute('manifest:media-type', 'text/xml');
$objWriter->writeAttribute('manifest:full-path', 'styles.xml'); $objWriter->writeAttribute('manifest:full-path', 'styles.xml');
$objWriter->endElement(); $objWriter->endElement();
for ($i = 0; $i < $this->getParentWriter()->getDrawingHashTable()->count(); ++$i) { for ($i = 0; $i < $this->getParentWriter()->getDrawingHashTable()->count(); ++$i) {
if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_Drawing) { if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_Drawing) {
$extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension()); $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension());
$mimeType = $this->_getImageMimeType( $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath() ); $mimeType = $this->_getImageMimeType($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath());
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', $mimeType); $objWriter->writeAttribute('manifest:media-type', $mimeType);
$objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename())); $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()));
$objWriter->endElement(); $objWriter->endElement();
} else if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_MemoryDrawing) { } else if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($i) instanceof PHPWord_Shape_MemoryDrawing) {
$extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType()); $extension = strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType());
$extension = explode('/', $extension); $extension = explode('/', $extension);
$extension = $extension[1]; $extension = $extension[1];
$mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType(); $mimeType = $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType();
$objWriter->startElement('manifest:file-entry'); $objWriter->startElement('manifest:file-entry');
$objWriter->writeAttribute('manifest:media-type', $mimeType); $objWriter->writeAttribute('manifest:media-type', $mimeType);
$objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename())); $objWriter->writeAttribute('manifest:full-path', 'Pictures/' . str_replace(' ', '_', $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getIndexedFilename()));
$objWriter->endElement(); $objWriter->endElement();
} }
} }
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
/** /**
* Get image mime type * Get image mime type
* *
* @param string $pFile Filename * @param string $pFile Filename
* @return string Mime Type * @return string Mime Type
* @throws Exception * @throws Exception
*/ */
private function _getImageMimeType($pFile = '') private function _getImageMimeType($pFile = '')
{ {
if (PHPWord_Shared_File::file_exists($pFile)) { if (PHPWord_Shared_File::file_exists($pFile)) {
$image = getimagesize($pFile); $image = getimagesize($pFile);
return image_type_to_mime_type($image[2]); return image_type_to_mime_type($image[2]);
} else { } else {
throw new Exception("File $pFile does not exist"); throw new Exception("File $pFile does not exist");
} }
} }
} }

120
Classes/PHPWord/Writer/ODText/Meta.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,80 +19,76 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_ODText * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_Meta * Class PHPWord_Writer_ODText_Meta
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Writer_ODText_Meta extends PHPWord_Writer_ODText_WriterPart class PHPWord_Writer_ODText_Meta extends PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Write Meta file to XML format * Write Meta file to XML format
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
* @return string XML Output * @return string XML Output
* @throws Exception * @throws Exception
*/ */
public function writeMeta(PHPWord $pPHPWord = null) { public function writeMeta(PHPWord $pPHPWord = null)
// Create XML writer {
$objWriter = null; // Create XML writer
if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = null;
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); if ($this->getParentWriter()->getUseDiskCaching()) {
} else { $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); } else {
} $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8'); $objWriter->startDocument('1.0', 'UTF-8');
// office:document-meta // office:document-meta
$objWriter->startElement('office:document-meta'); $objWriter->startElement('office:document-meta');
$objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
$objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
$objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
$objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
$objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
$objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
$objWriter->writeAttribute('office:version', '1.2'); $objWriter->writeAttribute('office:version', '1.2');
// office:meta // office:meta
$objWriter->startElement('office:meta'); $objWriter->startElement('office:meta');
// dc:creator // dc:creator
$objWriter->writeElement('dc:creator', $pPHPWord->getProperties()->getLastModifiedBy()); $objWriter->writeElement('dc:creator', $pPHPWord->getProperties()->getLastModifiedBy());
// dc:date // dc:date
$objWriter->writeElement('dc:date', gmdate('Y-m-d\TH:i:s.000' ,$pPHPWord->getProperties()->getModified())); $objWriter->writeElement('dc:date', gmdate('Y-m-d\TH:i:s.000', $pPHPWord->getProperties()->getModified()));
// dc:description // dc:description
$objWriter->writeElement('dc:description', $pPHPWord->getProperties()->getDescription()); $objWriter->writeElement('dc:description', $pPHPWord->getProperties()->getDescription());
// dc:subject // dc:subject
$objWriter->writeElement('dc:subject', $pPHPWord->getProperties()->getSubject()); $objWriter->writeElement('dc:subject', $pPHPWord->getProperties()->getSubject());
// dc:title // dc:title
$objWriter->writeElement('dc:title', $pPHPWord->getProperties()->getTitle()); $objWriter->writeElement('dc:title', $pPHPWord->getProperties()->getTitle());
// meta:creation-date // meta:creation-date
$objWriter->writeElement('meta:creation-date', gmdate('Y-m-d\TH:i:s.000' ,$pPHPWord->getProperties()->getCreated())); $objWriter->writeElement('meta:creation-date', gmdate('Y-m-d\TH:i:s.000', $pPHPWord->getProperties()->getCreated()));
// meta:initial-creator // meta:initial-creator
$objWriter->writeElement('meta:initial-creator', $pPHPWord->getProperties()->getCreator()); $objWriter->writeElement('meta:initial-creator', $pPHPWord->getProperties()->getCreator());
// meta:keyword // meta:keyword
$objWriter->writeElement('meta:keyword', $pPHPWord->getProperties()->getKeywords()); $objWriter->writeElement('meta:keyword', $pPHPWord->getProperties()->getKeywords());
// @todo : Where these properties are written ? // @todo : Where these properties are written ?
// $pPHPWord->getProperties()->getCategory() // $pPHPWord->getProperties()->getCategory()
// $pPHPWord->getProperties()->getCompany() // $pPHPWord->getProperties()->getCompany()
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
} }

37
Classes/PHPWord/Writer/ODText/Mimetype.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,33 +19,28 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_ODText * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_Mimetype * Class PHPWord_Writer_ODText_Mimetype
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Writer_ODText_Mimetype extends PHPWord_Writer_ODText_WriterPart class PHPWord_Writer_ODText_Mimetype extends PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Write Mimetype to Text format * Write Mimetype to Text format
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
* @return string Text Output * @return string Text Output
* @throws Exception * @throws Exception
*/ */
public function writeMimetype(PHPWord $pPHPWord = null) public function writeMimetype(PHPWord $pPHPWord = null)
{ {
return 'application/vnd.oasis.opendocument.text'; return 'application/vnd.oasis.opendocument.text';
} }
} }

448
Classes/PHPWord/Writer/ODText/Styles.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,256 +19,250 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_ODText * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_Styles * Class PHPWord_Writer_ODText_Styles
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
class PHPWord_Writer_ODText_Styles extends PHPWord_Writer_ODText_WriterPart class PHPWord_Writer_ODText_Styles extends PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Write Styles file to XML format * Write Styles file to XML format
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
* @return string XML Output * @return string XML Output
* @throws Exception * @throws Exception
*/ */
public function writeStyles(PHPWord $pPHPWord = null) public function writeStyles(PHPWord $pPHPWord = null)
{ {
// Create XML writer // Create XML writer
$objWriter = null; $objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) { if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else { } else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
} }
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8'); $objWriter->startDocument('1.0', 'UTF-8');
// Styles:Styles // Styles:Styles
$objWriter->startElement('office:document-styles'); $objWriter->startElement('office:document-styles');
$objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0'); $objWriter->writeAttribute('xmlns:office', 'urn:oasis:names:tc:opendocument:xmlns:office:1.0');
$objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'); $objWriter->writeAttribute('xmlns:style', 'urn:oasis:names:tc:opendocument:xmlns:style:1.0');
$objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'); $objWriter->writeAttribute('xmlns:text', 'urn:oasis:names:tc:opendocument:xmlns:text:1.0');
$objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'); $objWriter->writeAttribute('xmlns:table', 'urn:oasis:names:tc:opendocument:xmlns:table:1.0');
$objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'); $objWriter->writeAttribute('xmlns:draw', 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0');
$objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0'); $objWriter->writeAttribute('xmlns:fo', 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0');
$objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); $objWriter->writeAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');
$objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/'); $objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
$objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0'); $objWriter->writeAttribute('xmlns:meta', 'urn:oasis:names:tc:opendocument:xmlns:meta:1.0');
$objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0'); $objWriter->writeAttribute('xmlns:number', 'urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0');
$objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0'); $objWriter->writeAttribute('xmlns:svg', 'urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0');
$objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0'); $objWriter->writeAttribute('xmlns:chart', 'urn:oasis:names:tc:opendocument:xmlns:chart:1.0');
$objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0'); $objWriter->writeAttribute('xmlns:dr3d', 'urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0');
$objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML'); $objWriter->writeAttribute('xmlns:math', 'http://www.w3.org/1998/Math/MathML');
$objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0'); $objWriter->writeAttribute('xmlns:form', 'urn:oasis:names:tc:opendocument:xmlns:form:1.0');
$objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0'); $objWriter->writeAttribute('xmlns:script', 'urn:oasis:names:tc:opendocument:xmlns:script:1.0');
$objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office'); $objWriter->writeAttribute('xmlns:ooo', 'http://openoffice.org/2004/office');
$objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer'); $objWriter->writeAttribute('xmlns:ooow', 'http://openoffice.org/2004/writer');
$objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc'); $objWriter->writeAttribute('xmlns:oooc', 'http://openoffice.org/2004/calc');
$objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events'); $objWriter->writeAttribute('xmlns:dom', 'http://www.w3.org/2001/xml-events');
$objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report'); $objWriter->writeAttribute('xmlns:rpt', 'http://openoffice.org/2005/report');
$objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2'); $objWriter->writeAttribute('xmlns:of', 'urn:oasis:names:tc:opendocument:xmlns:of:1.2');
$objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml'); $objWriter->writeAttribute('xmlns:xhtml', 'http://www.w3.org/1999/xhtml');
$objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#'); $objWriter->writeAttribute('xmlns:grddl', 'http://www.w3.org/2003/g/data-view#');
$objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table'); $objWriter->writeAttribute('xmlns:tableooo', 'http://openoffice.org/2009/table');
$objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/'); $objWriter->writeAttribute('xmlns:css3t', 'http://www.w3.org/TR/css3-text/');
$objWriter->writeAttribute('office:version', '1.2'); $objWriter->writeAttribute('office:version', '1.2');
// office:font-face-decls // office:font-face-decls
$objWriter->startElement('office:font-face-decls'); $objWriter->startElement('office:font-face-decls');
$arrFonts = array(); $arrFonts = array();
$styles = PHPWord_Style::getStyles(); $styles = PHPWord_Style::getStyles();
$numFonts = 0; $numFonts = 0;
if(count($styles) > 0) { if (count($styles) > 0) {
foreach($styles as $styleName => $style) { foreach ($styles as $styleName => $style) {
// PHPWord_Style_Font // PHPWord_Style_Font
if($style instanceof PHPWord_Style_Font) { if ($style instanceof PHPWord_Style_Font) {
$numFonts++; $numFonts++;
$name = $style->getName(); $name = $style->getName();
if(!in_array($name, $arrFonts)){ if (!in_array($name, $arrFonts)) {
$arrFonts[] = $name; $arrFonts[] = $name;
// style:font-face // style:font-face
$objWriter->startElement('style:font-face'); $objWriter->startElement('style:font-face');
$objWriter->writeAttribute('style:name', $name); $objWriter->writeAttribute('style:name', $name);
$objWriter->writeAttribute('svg:font-family', $name); $objWriter->writeAttribute('svg:font-family', $name);
$objWriter->endElement(); $objWriter->endElement();
} }
} }
} }
} }
if(!in_array('Arial', $arrFonts)){ if (!in_array('Arial', $arrFonts)) {
$objWriter->startElement('style:font-face'); $objWriter->startElement('style:font-face');
$objWriter->writeAttribute('style:name', 'Arial'); $objWriter->writeAttribute('style:name', 'Arial');
$objWriter->writeAttribute('svg:font-family', 'Arial'); $objWriter->writeAttribute('svg:font-family', 'Arial');
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
// office:styles // office:styles
$objWriter->startElement('office:styles'); $objWriter->startElement('office:styles');
// style:default-style // style:default-style
$objWriter->startElement('style:default-style'); $objWriter->startElement('style:default-style');
$objWriter->writeAttribute('style:family', 'paragraph'); $objWriter->writeAttribute('style:family', 'paragraph');
// style:paragraph-properties // style:paragraph-properties
$objWriter->startElement('style:paragraph-properties'); $objWriter->startElement('style:paragraph-properties');
$objWriter->writeAttribute('fo:hyphenation-ladder-count', 'no-limit'); $objWriter->writeAttribute('fo:hyphenation-ladder-count', 'no-limit');
$objWriter->writeAttribute('style:text-autospace', 'ideograph-alpha'); $objWriter->writeAttribute('style:text-autospace', 'ideograph-alpha');
$objWriter->writeAttribute('style:punctuation-wrap', 'hanging'); $objWriter->writeAttribute('style:punctuation-wrap', 'hanging');
$objWriter->writeAttribute('style:line-break', 'strict'); $objWriter->writeAttribute('style:line-break', 'strict');
$objWriter->writeAttribute('style:tab-stop-distance', '1.249cm'); $objWriter->writeAttribute('style:tab-stop-distance', '1.249cm');
$objWriter->writeAttribute('style:writing-mode', 'page'); $objWriter->writeAttribute('style:writing-mode', 'page');
$objWriter->endElement(); $objWriter->endElement();
// style:text-properties // style:text-properties
$objWriter->startElement('style:text-properties'); $objWriter->startElement('style:text-properties');
$objWriter->writeAttribute('style:use-window-font-color', 'true'); $objWriter->writeAttribute('style:use-window-font-color', 'true');
$objWriter->writeAttribute('style:font-name', 'Arial'); $objWriter->writeAttribute('style:font-name', 'Arial');
$objWriter->writeAttribute('fo:font-size', '10pt'); $objWriter->writeAttribute('fo:font-size', '10pt');
$objWriter->writeAttribute('fo:language', 'fr'); $objWriter->writeAttribute('fo:language', 'fr');
$objWriter->writeAttribute('fo:country', 'FR'); $objWriter->writeAttribute('fo:country', 'FR');
$objWriter->writeAttribute('style:letter-kerning', 'true'); $objWriter->writeAttribute('style:letter-kerning', 'true');
$objWriter->writeAttribute('style:font-name-asian', 'Arial2'); $objWriter->writeAttribute('style:font-name-asian', 'Arial2');
$objWriter->writeAttribute('style:font-size-asian', '10pt'); $objWriter->writeAttribute('style:font-size-asian', '10pt');
$objWriter->writeAttribute('style:language-asian', 'zh'); $objWriter->writeAttribute('style:language-asian', 'zh');
$objWriter->writeAttribute('style:country-asian', 'CN'); $objWriter->writeAttribute('style:country-asian', 'CN');
$objWriter->writeAttribute('style:font-name-complex', 'Arial2'); $objWriter->writeAttribute('style:font-name-complex', 'Arial2');
$objWriter->writeAttribute('style:font-size-complex', '10pt'); $objWriter->writeAttribute('style:font-size-complex', '10pt');
$objWriter->writeAttribute('style:language-complex', 'hi'); $objWriter->writeAttribute('style:language-complex', 'hi');
$objWriter->writeAttribute('style:country-complex', 'IN'); $objWriter->writeAttribute('style:country-complex', 'IN');
$objWriter->writeAttribute('fo:hyphenate', 'false'); $objWriter->writeAttribute('fo:hyphenate', 'false');
$objWriter->writeAttribute('fo:hyphenation-remain-char-count', '2'); $objWriter->writeAttribute('fo:hyphenation-remain-char-count', '2');
$objWriter->writeAttribute('fo:hyphenation-push-char-count', '2'); $objWriter->writeAttribute('fo:hyphenation-push-char-count', '2');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// Write Style Definitions // Write Style Definitions
$styles = PHPWord_Style::getStyles(); $styles = PHPWord_Style::getStyles();
if(count($styles) > 0) { if (count($styles) > 0) {
foreach($styles as $styleName => $style) { foreach ($styles as $styleName => $style) {
if(preg_match('#^T[0-9]+$#', $styleName) == 0 if (preg_match('#^T[0-9]+$#', $styleName) == 0
&& preg_match('#^P[0-9]+$#', $styleName) == 0){ && preg_match('#^P[0-9]+$#', $styleName) == 0
// PHPWord_Style_Font ) {
if($style instanceof PHPWord_Style_Font) { // PHPWord_Style_Font
// style:style if ($style instanceof PHPWord_Style_Font) {
$objWriter->startElement('style:style'); // style:style
$objWriter->writeAttribute('style:name', $styleName); $objWriter->startElement('style:style');
$objWriter->writeAttribute('style:family', 'text'); $objWriter->writeAttribute('style:name', $styleName);
$objWriter->writeAttribute('style:family', 'text');
// style:text-properties // style:text-properties
$objWriter->startElement('style:text-properties'); $objWriter->startElement('style:text-properties');
$objWriter->writeAttribute('fo:font-size', ($style->getSize() / 2).'pt'); $objWriter->writeAttribute('fo:font-size', ($style->getSize() / 2) . 'pt');
$objWriter->writeAttribute('style:font-size-asian', ($style->getSize() / 2).'pt'); $objWriter->writeAttribute('style:font-size-asian', ($style->getSize() / 2) . 'pt');
$objWriter->writeAttribute('style:font-size-complex', ($style->getSize() / 2).'pt'); $objWriter->writeAttribute('style:font-size-complex', ($style->getSize() / 2) . 'pt');
if($style->getItalic()) { if ($style->getItalic()) {
$objWriter->writeAttribute('fo:font-style', 'italic'); $objWriter->writeAttribute('fo:font-style', 'italic');
$objWriter->writeAttribute('style:font-style-asian', 'italic'); $objWriter->writeAttribute('style:font-style-asian', 'italic');
$objWriter->writeAttribute('style:font-style-complex', 'italic'); $objWriter->writeAttribute('style:font-style-complex', 'italic');
} }
if($style->getBold()) { if ($style->getBold()) {
$objWriter->writeAttribute('fo:font-weight', 'bold'); $objWriter->writeAttribute('fo:font-weight', 'bold');
$objWriter->writeAttribute('style:font-weight-asian', 'bold'); $objWriter->writeAttribute('style:font-weight-asian', 'bold');
} }
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} } // PHPWord_Style_Paragraph
// PHPWord_Style_Paragraph elseif ($style instanceof PHPWord_Style_Paragraph) {
elseif($style instanceof PHPWord_Style_Paragraph) { // style:style
// style:style $objWriter->startElement('style:style');
$objWriter->startElement('style:style'); $objWriter->writeAttribute('style:name', $styleName);
$objWriter->writeAttribute('style:name', $styleName); $objWriter->writeAttribute('style:family', 'paragraph');
$objWriter->writeAttribute('style:family', 'paragraph');
//style:paragraph-properties //style:paragraph-properties
$objWriter->startElement('style:paragraph-properties'); $objWriter->startElement('style:paragraph-properties');
$objWriter->writeAttribute('fo:margin-top', ((is_null($style->getSpaceBefore())) ? '0' : round(17.6 / $style->getSpaceBefore(), 2)).'cm'); $objWriter->writeAttribute('fo:margin-top', ((is_null($style->getSpaceBefore())) ? '0' : round(17.6 / $style->getSpaceBefore(), 2)) . 'cm');
$objWriter->writeAttribute('fo:margin-bottom', ((is_null($style->getSpaceAfter())) ? '0' : round(17.6 / $style->getSpaceAfter(), 2)).'cm'); $objWriter->writeAttribute('fo:margin-bottom', ((is_null($style->getSpaceAfter())) ? '0' : round(17.6 / $style->getSpaceAfter(), 2)) . 'cm');
$objWriter->writeAttribute('fo:text-align', $style->getAlign()); $objWriter->writeAttribute('fo:text-align', $style->getAlign());
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} } // PHPWord_Style_TableFull
// PHPWord_Style_TableFull elseif ($style instanceof PHPWord_Style_TableFull) {
elseif($style instanceof PHPWord_Style_TableFull) { }
} }
} }
} }
} $objWriter->endElement();
$objWriter->endElement();
// office:automatic-styles // office:automatic-styles
$objWriter->startElement('office:automatic-styles'); $objWriter->startElement('office:automatic-styles');
// style:page-layout // style:page-layout
$objWriter->startElement('style:page-layout'); $objWriter->startElement('style:page-layout');
$objWriter->writeAttribute('style:name', 'Mpm1'); $objWriter->writeAttribute('style:name', 'Mpm1');
// style:page-layout-properties // style:page-layout-properties
$objWriter->startElement('style:page-layout-properties'); $objWriter->startElement('style:page-layout-properties');
$objWriter->writeAttribute('fo:page-width', "21.001cm"); $objWriter->writeAttribute('fo:page-width', "21.001cm");
$objWriter->writeAttribute('fo:page-height','29.7cm'); $objWriter->writeAttribute('fo:page-height', '29.7cm');
$objWriter->writeAttribute('style:num-format','1'); $objWriter->writeAttribute('style:num-format', '1');
$objWriter->writeAttribute('style:print-orientation','portrait'); $objWriter->writeAttribute('style:print-orientation', 'portrait');
$objWriter->writeAttribute('fo:margin-top','2.501cm'); $objWriter->writeAttribute('fo:margin-top', '2.501cm');
$objWriter->writeAttribute('fo:margin-bottom','2cm'); $objWriter->writeAttribute('fo:margin-bottom', '2cm');
$objWriter->writeAttribute('fo:margin-left','2.501cm'); $objWriter->writeAttribute('fo:margin-left', '2.501cm');
$objWriter->writeAttribute('fo:margin-right','2.501cm'); $objWriter->writeAttribute('fo:margin-right', '2.501cm');
$objWriter->writeAttribute('style:writing-mode','lr-tb'); $objWriter->writeAttribute('style:writing-mode', 'lr-tb');
$objWriter->writeAttribute('style:layout-grid-color','#c0c0c0'); $objWriter->writeAttribute('style:layout-grid-color', '#c0c0c0');
$objWriter->writeAttribute('style:layout-grid-lines','25199'); $objWriter->writeAttribute('style:layout-grid-lines', '25199');
$objWriter->writeAttribute('style:layout-grid-base-height','0.423cm'); $objWriter->writeAttribute('style:layout-grid-base-height', '0.423cm');
$objWriter->writeAttribute('style:layout-grid-ruby-height','0cm'); $objWriter->writeAttribute('style:layout-grid-ruby-height', '0cm');
$objWriter->writeAttribute('style:layout-grid-mode','none'); $objWriter->writeAttribute('style:layout-grid-mode', 'none');
$objWriter->writeAttribute('style:layout-grid-ruby-below','false'); $objWriter->writeAttribute('style:layout-grid-ruby-below', 'false');
$objWriter->writeAttribute('style:layout-grid-print','false'); $objWriter->writeAttribute('style:layout-grid-print', 'false');
$objWriter->writeAttribute('style:layout-grid-display','false'); $objWriter->writeAttribute('style:layout-grid-display', 'false');
$objWriter->writeAttribute('style:layout-grid-base-width','0.37cm'); $objWriter->writeAttribute('style:layout-grid-base-width', '0.37cm');
$objWriter->writeAttribute('style:layout-grid-snap-to','true'); $objWriter->writeAttribute('style:layout-grid-snap-to', 'true');
$objWriter->writeAttribute('style:footnote-max-height','0cm'); $objWriter->writeAttribute('style:footnote-max-height', '0cm');
//style:footnote-sep //style:footnote-sep
$objWriter->startElement('style:footnote-sep'); $objWriter->startElement('style:footnote-sep');
$objWriter->writeAttribute('style:width', '0.018cm'); $objWriter->writeAttribute('style:width', '0.018cm');
$objWriter->writeAttribute('style:line-style','solid'); $objWriter->writeAttribute('style:line-style', 'solid');
$objWriter->writeAttribute('style:adjustment','left'); $objWriter->writeAttribute('style:adjustment', 'left');
$objWriter->writeAttribute('style:rel-width','25%'); $objWriter->writeAttribute('style:rel-width', '25%');
$objWriter->writeAttribute('style:color','#000000'); $objWriter->writeAttribute('style:color', '#000000');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// style:header-style // style:header-style
$objWriter->startElement('style:header-style'); $objWriter->startElement('style:header-style');
$objWriter->endElement(); $objWriter->endElement();
// style:footer-style // style:footer-style
$objWriter->startElement('style:footer-style'); $objWriter->startElement('style:footer-style');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// office:master-styles // office:master-styles
$objWriter->startElement('office:master-styles'); $objWriter->startElement('office:master-styles');
// style:master-page // style:master-page
$objWriter->startElement('style:master-page'); $objWriter->startElement('style:master-page');
$objWriter->writeAttribute('style:name', 'Standard'); $objWriter->writeAttribute('style:name', 'Standard');
$objWriter->writeAttribute('style:page-layout-name', 'Mpm1'); $objWriter->writeAttribute('style:page-layout-name', 'Mpm1');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
} }

73
Classes/PHPWord/Writer/ODText/WriterPart.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,50 +19,47 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_PowerPoint2007 * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/** /**
* PHPWord_Writer_ODText_WriterPart * Class PHPWord_Writer_ODText_WriterPart
*
* @category PHPWord
* @package PHPWord_Writer_ODText
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord)
*/ */
abstract class PHPWord_Writer_ODText_WriterPart abstract class PHPWord_Writer_ODText_WriterPart
{ {
/** /**
* Parent IWriter object * Parent IWriter object
* *
* @var PHPWord_Writer_IWriter * @var PHPWord_Writer_IWriter
*/ */
private $_parentWriter; private $_parentWriter;
/** /**
* Set parent IWriter object * Set parent IWriter object
* *
* @param PHPWord_Writer_IWriter $pWriter * @param PHPWord_Writer_IWriter $pWriter
* @throws Exception * @throws Exception
*/ */
public function setParentWriter(PHPWord_Writer_IWriter $pWriter = null) { public function setParentWriter(PHPWord_Writer_IWriter $pWriter = null)
$this->_parentWriter = $pWriter; {
} $this->_parentWriter = $pWriter;
}
/** /**
* Get parent IWriter object * Get parent IWriter object
* *
* @return PHPWord_Writer_IWriter * @return PHPWord_Writer_IWriter
* @throws Exception * @throws Exception
*/ */
public function getParentWriter() { public function getParentWriter()
if (!is_null($this->_parentWriter)) { {
return $this->_parentWriter; if (!is_null($this->_parentWriter)) {
} else { return $this->_parentWriter;
throw new Exception("No parent PHPWord_Writer_IWriter assigned."); } else {
} throw new Exception("No parent PHPWord_Writer_IWriter assigned.");
} }
}
} }

687
Classes/PHPWord/Writer/RTF.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2009 - 2010 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -19,292 +19,305 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPWord * @category PHPWord
* @package PHPWord_Writer_RTF * @package PHPWord
* @copyright Copyright (c) 2009 - 2010 PHPWord (http://www.codeplex.com/PHPWord) * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_RTF
*/
class PHPWord_Writer_RTF implements PHPWord_Writer_IWriter class PHPWord_Writer_RTF implements PHPWord_Writer_IWriter
{ {
/** /**
* Private PHPWord * Private PHPWord
* *
* @var PHPWord * @var PHPWord
*/ */
private $_document; private $_document;
/** /**
* Private unique PHPWord_Worksheet_BaseDrawing HashTable * Private unique PHPWord_Worksheet_BaseDrawing HashTable
* *
* @var PHPWord_HashTable * @var PHPWord_HashTable
*/ */
private $_drawingHashTable; private $_drawingHashTable;
private $_colorTable; private $_colorTable;
private $_fontTable; private $_fontTable;
private $_lastParagraphStyle; private $_lastParagraphStyle;
/** /**
* Create a new PHPWord_Writer_ODText * Create a new PHPWord_Writer_ODText
* *
* @param PHPWord $pPHPWord * @param PHPWord $pPHPWord
*/ */
public function __construct(PHPWord $pPHPWord = null) public function __construct(PHPWord $pPHPWord = null)
{ {
// Assign PHPWord // Assign PHPWord
$this->setPHPWord($pPHPWord); $this->setPHPWord($pPHPWord);
// Set HashTable variables // Set HashTable variables
$this->_drawingHashTable = new PHPWord_HashTable(); $this->_drawingHashTable = new PHPWord_HashTable();
} }
/** /**
* Save PHPWord to file * Save PHPWord to file
* *
* @param string $pFileName * @param string $pFileName
* @throws Exception * @throws Exception
*/ */
public function save($pFilename = null) public function save($pFilename = null)
{ {
if (!is_null($this->_document)) { if (!is_null($this->_document)) {
// If $pFilename is php://output or php://stdout, make it a temporary file... // If $pFilename is php://output or php://stdout, make it a temporary file...
$originalFilename = $pFilename; $originalFilename = $pFilename;
if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') { if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
$pFilename = @tempnam('./', 'phppttmp'); $pFilename = @tempnam('./', 'phppttmp');
if ($pFilename == '') { if ($pFilename == '') {
$pFilename = $originalFilename; $pFilename = $originalFilename;
} }
} }
$hFile = fopen($pFilename, 'w') or die("can't open file"); $hFile = fopen($pFilename, 'w') or die("can't open file");
fwrite($hFile, $this->_getData()); fwrite($hFile, $this->_getData());
fclose($hFile); fclose($hFile);
// If a temporary file was used, copy it to the correct file stream // If a temporary file was used, copy it to the correct file stream
if ($originalFilename != $pFilename) { if ($originalFilename != $pFilename) {
if (copy($pFilename, $originalFilename) === false) { if (copy($pFilename, $originalFilename) === false) {
throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename."); throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename.");
} }
@unlink($pFilename); @unlink($pFilename);
} }
} else { } else {
throw new Exception("PHPWord object unassigned."); throw new Exception("PHPWord object unassigned.");
} }
} }
/** /**
* Get PHPWord object * Get PHPWord object
* *
* @return PHPWord * @return PHPWord
* @throws Exception * @throws Exception
*/ */
public function getPHPWord() { public function getPHPWord()
if (!is_null($this->_document)) { {
return $this->_document; if (!is_null($this->_document)) {
} else { return $this->_document;
throw new Exception("No PHPWord assigned."); } else {
} throw new Exception("No PHPWord assigned.");
} }
}
/** /**
* Get PHPWord object * Get PHPWord object
* *
* @param PHPWord $pPHPWord PHPWord object * @param PHPWord $pPHPWord PHPWord object
* @throws Exception * @throws Exception
* @return PHPWord_Writer_PowerPoint2007 * @return PHPWord_Writer_PowerPoint2007
*/ */
public function setPHPWord(PHPWord $pPHPWord = null) { public function setPHPWord(PHPWord $pPHPWord = null)
$this->_document = $pPHPWord; {
return $this; $this->_document = $pPHPWord;
} return $this;
}
/** /**
* Get PHPWord_Worksheet_BaseDrawing HashTable * Get PHPWord_Worksheet_BaseDrawing HashTable
* *
* @return PHPWord_HashTable * @return PHPWord_HashTable
*/ */
public function getDrawingHashTable() { public function getDrawingHashTable()
return $this->_drawingHashTable; {
} return $this->_drawingHashTable;
}
private function _getData(){ private function _getData()
// PHPWord object : $this->_document {
$this->_fontTable = $this->_getDataFont(); // PHPWord object : $this->_document
$this->_colorTable = $this->_getDataColor(); $this->_fontTable = $this->_getDataFont();
$this->_colorTable = $this->_getDataColor();
$sRTFContent = '{\rtf1'; $sRTFContent = '{\rtf1';
// Set the default character set // Set the default character set
$sRTFContent .= '\ansi\ansicpg1252'; $sRTFContent .= '\ansi\ansicpg1252';
// Set the default font (the first one) // Set the default font (the first one)
$sRTFContent .= '\deff0'; $sRTFContent .= '\deff0';
// Set the default tab size (720 twips) // Set the default tab size (720 twips)
$sRTFContent .= '\deftab720'; $sRTFContent .= '\deftab720';
// Set the font tbl group // Set the font tbl group
$sRTFContent .= '{\fonttbl'; $sRTFContent .= '{\fonttbl';
foreach ($this->_fontTable as $idx => $font){ foreach ($this->_fontTable as $idx => $font) {
$sRTFContent .= '{\f'.$idx.'\fnil\fcharset0 '.$font.';}'; $sRTFContent .= '{\f' . $idx . '\fnil\fcharset0 ' . $font . ';}';
} }
$sRTFContent .= '}'.PHP_EOL; $sRTFContent .= '}' . PHP_EOL;
// Set the color tbl group // Set the color tbl group
$sRTFContent .= '{\colortbl '; $sRTFContent .= '{\colortbl ';
foreach ($this->_colorTable as $idx => $color){ foreach ($this->_colorTable as $idx => $color) {
$arrColor = PHPWord_Shared_Drawing::htmlToRGB($color); $arrColor = PHPWord_Shared_Drawing::htmlToRGB($color);
$sRTFContent .= ';\red'.$arrColor[0].'\green'.$arrColor[1].'\blue'.$arrColor[2].''; $sRTFContent .= ';\red' . $arrColor[0] . '\green' . $arrColor[1] . '\blue' . $arrColor[2] . '';
} }
$sRTFContent .= ';}'.PHP_EOL; $sRTFContent .= ';}' . PHP_EOL;
// Set the generator // Set the generator
$sRTFContent .= '{\*\generator PHPWord;}'; $sRTFContent .= '{\*\generator PHPWord;}';
// Set the view mode of the document // Set the view mode of the document
$sRTFContent .= '\viewkind4'; $sRTFContent .= '\viewkind4';
// Set the numberof bytes that follows a unicode character // Set the numberof bytes that follows a unicode character
$sRTFContent .= '\uc1'; $sRTFContent .= '\uc1';
// Resets to default paragraph properties. // Resets to default paragraph properties.
$sRTFContent .= '\pard'; $sRTFContent .= '\pard';
// No widow/orphan control // No widow/orphan control
$sRTFContent .= '\nowidctlpar'; $sRTFContent .= '\nowidctlpar';
// Applies a language to a text run (1036 : French (France)) // Applies a language to a text run (1036 : French (France))
$sRTFContent .= '\lang1036'; $sRTFContent .= '\lang1036';
// Point size (in half-points) above which to kern character pairs // Point size (in half-points) above which to kern character pairs
$sRTFContent .= '\kerning1'; $sRTFContent .= '\kerning1';
// Set the font size in half-points // Set the font size in half-points
$sRTFContent .= '\fs20'; $sRTFContent .= '\fs20';
// Body // Body
$sRTFContent .= $this->_getDataContent(); $sRTFContent .= $this->_getDataContent();
$sRTFContent .= '}'; $sRTFContent .= '}';
return $sRTFContent; return $sRTFContent;
} }
private function _getDataFont(){
$pPHPWord = $this->_document;
$arrFonts = array(); private function _getDataFont()
// Default font : Arial {
$arrFonts[] = 'Arial'; $pPHPWord = $this->_document;
// PHPWord object : $this->_document
// Browse styles $arrFonts = array();
$styles = PHPWord_Style::getStyles(); // Default font : Arial
$numPStyles = 0; $arrFonts[] = 'Arial';
if(count($styles) > 0) { // PHPWord object : $this->_document
foreach($styles as $styleName => $style) {
// PHPWord_Style_Font
if($style instanceof PHPWord_Style_Font) {
if(in_array($style->getName(), $arrFonts) == FALSE){
$arrFonts[] = $style->getName();
}
}
}
}
// Search all fonts used // Browse styles
$_sections = $pPHPWord->getSections(); $styles = PHPWord_Style::getStyles();
$countSections = count($_sections); $numPStyles = 0;
if($countSections > 0) { if (count($styles) > 0) {
$pSection = 0; foreach ($styles as $styleName => $style) {
// PHPWord_Style_Font
if ($style instanceof PHPWord_Style_Font) {
if (in_array($style->getName(), $arrFonts) == FALSE) {
$arrFonts[] = $style->getName();
}
}
}
}
foreach($_sections as $section) { // Search all fonts used
$pSection++; $_sections = $pPHPWord->getSections();
$_elements = $section->getElements(); $countSections = count($_sections);
if ($countSections > 0) {
$pSection = 0;
foreach($_elements as $element) { foreach ($_sections as $section) {
if($element instanceof PHPWord_Section_Text) { $pSection++;
$fStyle = $element->getFontStyle(); $_elements = $section->getElements();
if($fStyle instanceof PHPWord_Style_Font){ foreach ($_elements as $element) {
if(in_array($fStyle->getName(), $arrFonts) == FALSE){ if ($element instanceof PHPWord_Section_Text) {
$arrFonts[] = $fStyle->getName(); $fStyle = $element->getFontStyle();
}
}
}
}
}
}
return $arrFonts; if ($fStyle instanceof PHPWord_Style_Font) {
} if (in_array($fStyle->getName(), $arrFonts) == FALSE) {
private function _getDataColor(){ $arrFonts[] = $fStyle->getName();
$pPHPWord = $this->_document; }
}
}
}
}
}
$arrColors = array(); return $arrFonts;
// PHPWord object : $this->_document }
// Browse styles private function _getDataColor()
$styles = PHPWord_Style::getStyles(); {
$numPStyles = 0; $pPHPWord = $this->_document;
if(count($styles) > 0) {
foreach($styles as $styleName => $style) {
// PHPWord_Style_Font
if($style instanceof PHPWord_Style_Font) {
$color = $style->getColor();
$fgcolor = $style->getFgColor();
if(in_array($color, $arrColors) == FALSE && $color != '000000' && !empty($color)){
$arrColors[] = $color;
}
if(in_array($fgcolor, $arrColors) == FALSE && $fgcolor != '000000' && !empty($fgcolor)){
$arrColors[] = $fgcolor;
}
}
}
}
// Search all fonts used $arrColors = array();
$_sections = $pPHPWord->getSections(); // PHPWord object : $this->_document
$countSections = count($_sections);
if($countSections > 0) {
$pSection = 0;
foreach($_sections as $section) { // Browse styles
$pSection++; $styles = PHPWord_Style::getStyles();
$_elements = $section->getElements(); $numPStyles = 0;
if (count($styles) > 0) {
foreach ($styles as $styleName => $style) {
// PHPWord_Style_Font
if ($style instanceof PHPWord_Style_Font) {
$color = $style->getColor();
$fgcolor = $style->getFgColor();
if (in_array($color, $arrColors) == FALSE && $color != '000000' && !empty($color)) {
$arrColors[] = $color;
}
if (in_array($fgcolor, $arrColors) == FALSE && $fgcolor != '000000' && !empty($fgcolor)) {
$arrColors[] = $fgcolor;
}
}
}
}
foreach($_elements as $element) { // Search all fonts used
if($element instanceof PHPWord_Section_Text) { $_sections = $pPHPWord->getSections();
$fStyle = $element->getFontStyle(); $countSections = count($_sections);
if ($countSections > 0) {
$pSection = 0;
if($fStyle instanceof PHPWord_Style_Font){ foreach ($_sections as $section) {
if(in_array($fStyle->getColor(), $arrColors) == FALSE){ $pSection++;
$arrColors[] = $fStyle->getColor(); $_elements = $section->getElements();
}
if(in_array($fStyle->getFgColor(), $arrColors) == FALSE){
$arrColors[] = $fStyle->getFgColor();
}
}
}
}
}
}
return $arrColors; foreach ($_elements as $element) {
} if ($element instanceof PHPWord_Section_Text) {
private function _getDataContent(){ $fStyle = $element->getFontStyle();
$pPHPWord = $this->_document;
$sRTFBody = '';
$_sections = $pPHPWord->getSections(); if ($fStyle instanceof PHPWord_Style_Font) {
$countSections = count($_sections); if (in_array($fStyle->getColor(), $arrColors) == FALSE) {
$pSection = 0; $arrColors[] = $fStyle->getColor();
}
if (in_array($fStyle->getFgColor(), $arrColors) == FALSE) {
$arrColors[] = $fStyle->getFgColor();
}
}
}
}
}
}
if($countSections > 0) { return $arrColors;
foreach($_sections as $section) { }
$pSection++;
$_elements = $section->getElements(); private function _getDataContent()
foreach($_elements as $element) { {
if($element instanceof PHPWord_Section_Text) { $pPHPWord = $this->_document;
$sRTFBody .= $this->_getDataContent_writeText($element); $sRTFBody = '';
}/* elseif($element instanceof PHPWord_Section_TextRun) {
$_sections = $pPHPWord->getSections();
$countSections = count($_sections);
$pSection = 0;
if ($countSections > 0) {
foreach ($_sections as $section) {
$pSection++;
$_elements = $section->getElements();
foreach ($_elements as $element) {
if ($element instanceof PHPWord_Section_Text) {
$sRTFBody .= $this->_getDataContent_writeText($element);
} /* elseif($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element); $this->_writeTextRun($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Link) { } elseif($element instanceof PHPWord_Section_Link) {
$this->_writeLink($objWriter, $element); $this->_writeLink($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Title) { } elseif($element instanceof PHPWord_Section_Title) {
$this->_writeTitle($objWriter, $element); $this->_writeTitle($objWriter, $element);
}*/ }*/
elseif($element instanceof PHPWord_Section_TextBreak) { elseif ($element instanceof PHPWord_Section_TextBreak) {
$sRTFBody .= $this->_getDataContent_writeTextBreak(); $sRTFBody .= $this->_getDataContent_writeTextBreak();
}/* elseif($element instanceof PHPWord_Section_PageBreak) { } /* elseif($element instanceof PHPWord_Section_PageBreak) {
$this->_writePageBreak($objWriter); $this->_writePageBreak($objWriter);
} elseif($element instanceof PHPWord_Section_Table) { } elseif($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element); $this->_writeTable($objWriter, $element);
@ -318,106 +331,108 @@ class PHPWord_Writer_RTF implements PHPWord_Writer_IWriter
} elseif($element instanceof PHPWord_TOC) { } elseif($element instanceof PHPWord_TOC) {
$this->_writeTOC($objWriter); $this->_writeTOC($objWriter);
}*/ }*/
else { else {
print_r($element); print_r($element);
echo '<br />'; echo '<br />';
} }
} }
} }
} }
return $sRTFBody; return $sRTFBody;
} }
private function _getDataContent_writeText(PHPWord_Section_Text $text){
$sRTFText = '';
$styleFont = $text->getFontStyle(); private function _getDataContent_writeText(PHPWord_Section_Text $text)
$SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false; {
if(!$SfIsObject) { $sRTFText = '';
$styleFont = PHPWord_Style::getStyle($styleFont);
}
$styleParagraph = $text->getParagraphStyle(); $styleFont = $text->getFontStyle();
$SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false; $SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
if(!$SpIsObject) { if (!$SfIsObject) {
$styleParagraph = PHPWord_Style::getStyle($styleParagraph); $styleFont = PHPWord_Style::getStyle($styleFont);
} }
if($styleParagraph){ $styleParagraph = $text->getParagraphStyle();
if($this->_lastParagraphStyle != $text->getParagraphStyle()){ $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
$sRTFText .= '\pard\nowidctlpar'; if (!$SpIsObject) {
if($styleParagraph->getSpaceAfter() != null){ $styleParagraph = PHPWord_Style::getStyle($styleParagraph);
$sRTFText .= '\sa'.$styleParagraph->getSpaceAfter(); }
}
if($styleParagraph->getAlign() != null){
if($styleParagraph->getAlign() == 'center'){
$sRTFText .= '\qc';
}
}
$this->_lastParagraphStyle = $text->getParagraphStyle();
}
else {
$this->_lastParagraphStyle = '';
}
}
else {
$this->_lastParagraphStyle = '';
}
if($styleFont){ if ($styleParagraph) {
if($styleFont->getColor() != null){ if ($this->_lastParagraphStyle != $text->getParagraphStyle()) {
$idxColor = array_search($styleFont->getColor(), $this->_colorTable); $sRTFText .= '\pard\nowidctlpar';
if($idxColor !== FALSE){ if ($styleParagraph->getSpaceAfter() != null) {
$sRTFText .= '\cf'.($idxColor+1); $sRTFText .= '\sa' . $styleParagraph->getSpaceAfter();
} }
} else { if ($styleParagraph->getAlign() != null) {
$sRTFText .= '\cf0'; if ($styleParagraph->getAlign() == 'center') {
} $sRTFText .= '\qc';
if($styleFont->getName() != null){ }
$idxFont = array_search($styleFont->getName(), $this->_fontTable); }
if($idxFont !== FALSE){ $this->_lastParagraphStyle = $text->getParagraphStyle();
$sRTFText .= '\f'.$idxFont; } else {
} $this->_lastParagraphStyle = '';
} else { }
$sRTFText .= '\f0'; } else {
} $this->_lastParagraphStyle = '';
if($styleFont->getBold()){ }
$sRTFText .= '\b';
}
if($styleFont->getBold()){
$sRTFText .= '\i';
}
if($styleFont->getSize()){
$sRTFText .= '\fs'.$styleFont->getSize();
}
}
if($this->_lastParagraphStyle != '' || $styleFont){
$sRTFText .= ' ';
}
$sRTFText .= $text->getText();
if($styleFont){ if ($styleFont) {
$sRTFText .= '\cf0'; if ($styleFont->getColor() != null) {
$sRTFText .= '\f0'; $idxColor = array_search($styleFont->getColor(), $this->_colorTable);
if ($idxColor !== FALSE) {
$sRTFText .= '\cf' . ($idxColor + 1);
}
} else {
$sRTFText .= '\cf0';
}
if ($styleFont->getName() != null) {
$idxFont = array_search($styleFont->getName(), $this->_fontTable);
if ($idxFont !== FALSE) {
$sRTFText .= '\f' . $idxFont;
}
} else {
$sRTFText .= '\f0';
}
if ($styleFont->getBold()) {
$sRTFText .= '\b';
}
if ($styleFont->getBold()) {
$sRTFText .= '\i';
}
if ($styleFont->getSize()) {
$sRTFText .= '\fs' . $styleFont->getSize();
}
}
if ($this->_lastParagraphStyle != '' || $styleFont) {
$sRTFText .= ' ';
}
$sRTFText .= $text->getText();
if($styleFont->getBold()){ if ($styleFont) {
$sRTFText .= '\b0'; $sRTFText .= '\cf0';
} $sRTFText .= '\f0';
if($styleFont->getItalic()){
$sRTFText .= '\i0';
}
if($styleFont->getSize()){
$sRTFText .= '\fs20';
}
}
$sRTFText .= '\par'.PHP_EOL; if ($styleFont->getBold()) {
return $sRTFText; $sRTFText .= '\b0';
} }
private function _getDataContent_writeTextBreak(){ if ($styleFont->getItalic()) {
$this->_lastParagraphStyle = ''; $sRTFText .= '\i0';
}
if ($styleFont->getSize()) {
$sRTFText .= '\fs20';
}
}
return '\par'.PHP_EOL; $sRTFText .= '\par' . PHP_EOL;
} return $sRTFText;
}
private function _getDataContent_writeTextBreak()
{
$this->_lastParagraphStyle = '';
return '\par' . PHP_EOL;
}
} }

370
Classes/PHPWord/Writer/Word2007.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,221 +20,229 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007
*/
class PHPWord_Writer_Word2007 implements PHPWord_Writer_IWriter
{
class PHPWord_Writer_Word2007 implements PHPWord_Writer_IWriter { private $_document;
private $_writerParts;
private $_diskCachingDirectory;
private $_useDiskCaching = false;
private $_imageTypes = array();
private $_objectTypes = array();
private $_document; public function __construct(PHPWord $PHPWord = null)
private $_writerParts; {
private $_diskCachingDirectory; $this->_document = $PHPWord;
private $_useDiskCaching = false;
private $_imageTypes = array();
private $_objectTypes = array();
public function __construct(PHPWord $PHPWord = null) { $this->_diskCachingDirectory = './';
$this->_document = $PHPWord;
$this->_diskCachingDirectory = './'; $this->_writerParts['contenttypes'] = new PHPWord_Writer_Word2007_ContentTypes();
$this->_writerParts['rels'] = new PHPWord_Writer_Word2007_Rels();
$this->_writerParts['docprops'] = new PHPWord_Writer_Word2007_DocProps();
$this->_writerParts['documentrels'] = new PHPWord_Writer_Word2007_DocumentRels();
$this->_writerParts['document'] = new PHPWord_Writer_Word2007_Document();
$this->_writerParts['styles'] = new PHPWord_Writer_Word2007_Styles();
$this->_writerParts['header'] = new PHPWord_Writer_Word2007_Header();
$this->_writerParts['footer'] = new PHPWord_Writer_Word2007_Footer();
$this->_writerParts['contenttypes'] = new PHPWord_Writer_Word2007_ContentTypes(); foreach ($this->_writerParts as $writer) {
$this->_writerParts['rels'] = new PHPWord_Writer_Word2007_Rels(); $writer->setParentWriter($this);
$this->_writerParts['docprops'] = new PHPWord_Writer_Word2007_DocProps(); }
$this->_writerParts['documentrels'] = new PHPWord_Writer_Word2007_DocumentRels(); }
$this->_writerParts['document'] = new PHPWord_Writer_Word2007_Document();
$this->_writerParts['styles'] = new PHPWord_Writer_Word2007_Styles();
$this->_writerParts['header'] = new PHPWord_Writer_Word2007_Header();
$this->_writerParts['footer'] = new PHPWord_Writer_Word2007_Footer();
foreach($this->_writerParts as $writer) { public function save($pFilename = null)
$writer->setParentWriter($this); {
} if (!is_null($this->_document)) {
}
public function save($pFilename = null) { // If $pFilename is php://output or php://stdout, make it a temporary file...
if(!is_null($this->_document)) { $originalFilename = $pFilename;
if (strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
$pFilename = @tempnam('./', 'phppttmp');
if ($pFilename == '') {
$pFilename = $originalFilename;
}
}
// If $pFilename is php://output or php://stdout, make it a temporary file... // Create new ZIP file and open it for writing
$originalFilename = $pFilename; $objZip = new ZipArchive();
if(strtolower($pFilename) == 'php://output' || strtolower($pFilename) == 'php://stdout') {
$pFilename = @tempnam('./', 'phppttmp');
if($pFilename == '') {
$pFilename = $originalFilename;
}
}
// Create new ZIP file and open it for writing // Try opening the ZIP file
$objZip = new ZipArchive(); if ($objZip->open($pFilename, ZIPARCHIVE::OVERWRITE) !== true) {
if ($objZip->open($pFilename, ZIPARCHIVE::CREATE) !== true) {
// Try opening the ZIP file throw new Exception("Could not open " . $pFilename . " for writing.");
if($objZip->open($pFilename, ZIPARCHIVE::OVERWRITE) !== true) { }
if($objZip->open($pFilename, ZIPARCHIVE::CREATE) !== true) { }
throw new Exception("Could not open " . $pFilename . " for writing.");
}
}
$sectionElements = array(); $sectionElements = array();
$_secElements = PHPWord_Media::getSectionMediaElements(); $_secElements = PHPWord_Media::getSectionMediaElements();
foreach($_secElements as $element) { // loop through section media elements foreach ($_secElements as $element) { // loop through section media elements
if($element['type'] != 'hyperlink') { if ($element['type'] != 'hyperlink') {
$this->_addFileToPackage($objZip, $element); $this->_addFileToPackage($objZip, $element);
} }
$sectionElements[] = $element; $sectionElements[] = $element;
} }
$_hdrElements = PHPWord_Media::getHeaderMediaElements(); $_hdrElements = PHPWord_Media::getHeaderMediaElements();
foreach($_hdrElements as $_headerFile => $_hdrMedia) { // loop through headers foreach ($_hdrElements as $_headerFile => $_hdrMedia) { // loop through headers
if(count($_hdrMedia) > 0) { if (count($_hdrMedia) > 0) {
$objZip->addFromString('word/_rels/'.$_headerFile.'.xml.rels', $this->getWriterPart('documentrels')->writeHeaderFooterRels($_hdrMedia)); $objZip->addFromString('word/_rels/' . $_headerFile . '.xml.rels', $this->getWriterPart('documentrels')->writeHeaderFooterRels($_hdrMedia));
foreach($_hdrMedia as $element) { // loop through header media elements foreach ($_hdrMedia as $element) { // loop through header media elements
$this->_addFileToPackage($objZip, $element); $this->_addFileToPackage($objZip, $element);
} }
} }
} }
$_ftrElements = PHPWord_Media::getFooterMediaElements(); $_ftrElements = PHPWord_Media::getFooterMediaElements();
foreach($_ftrElements as $_footerFile => $_ftrMedia) { // loop through footers foreach ($_ftrElements as $_footerFile => $_ftrMedia) { // loop through footers
if(count($_ftrMedia) > 0) { if (count($_ftrMedia) > 0) {
$objZip->addFromString('word/_rels/'.$_footerFile.'.xml.rels', $this->getWriterPart('documentrels')->writeHeaderFooterRels($_ftrMedia)); $objZip->addFromString('word/_rels/' . $_footerFile . '.xml.rels', $this->getWriterPart('documentrels')->writeHeaderFooterRels($_ftrMedia));
foreach($_ftrMedia as $element) { // loop through footers media elements foreach ($_ftrMedia as $element) { // loop through footers media elements
$this->_addFileToPackage($objZip, $element); $this->_addFileToPackage($objZip, $element);
} }
} }
} }
$_cHdrs = 0;
$_cFtrs = 0;
$rID = PHPWord_Media::countSectionMediaElements() + 6;
$_sections = $this->_document->getSections();
$_cHdrs = 0; foreach ($_sections as $section) {
$_cFtrs = 0; $_headers = $section->getHeaders();
$rID = PHPWord_Media::countSectionMediaElements() + 6; foreach ($_headers as $index => &$_header) {
$_sections = $this->_document->getSections(); $_cHdrs++;
$_header->setRelationId(++$rID);
$_headerFile = 'header' . $_cHdrs . '.xml';
$sectionElements[] = array('target' => $_headerFile, 'type' => 'header', 'rID' => $rID);
$objZip->addFromString('word/' . $_headerFile, $this->getWriterPart('header')->writeHeader($_header));
}
foreach($_sections as $section) { $_footer = $section->getFooter();
$_headers = $section->getHeaders(); if (!is_null($_footer)) {
foreach ($_headers as $index => &$_header) { $_cFtrs++;
$_cHdrs++; $_footer->setRelationId(++$rID);
$_header->setRelationId(++$rID); $_footerCount = $_footer->getFooterCount();
$_headerFile = 'header'.$_cHdrs.'.xml'; $_footerFile = 'footer' . $_footerCount . '.xml';
$sectionElements[] = array('target'=>$_headerFile, 'type'=>'header', 'rID'=>$rID); $sectionElements[] = array('target' => $_footerFile, 'type' => 'footer', 'rID' => $rID);
$objZip->addFromString('word/'.$_headerFile, $this->getWriterPart('header')->writeHeader($_header)); $objZip->addFromString('word/' . $_footerFile, $this->getWriterPart('footer')->writeFooter($_footer));
} }
}
$_footer = $section->getFooter(); // build docx file
if(!is_null($_footer)) { // Write dynamic files
$_cFtrs++;
$_footer->setRelationId(++$rID);
$_footerCount = $_footer->getFooterCount();
$_footerFile = 'footer'.$_footerCount.'.xml';
$sectionElements[] = array('target'=>$_footerFile, 'type'=>'footer', 'rID'=>$rID);
$objZip->addFromString('word/'.$_footerFile, $this->getWriterPart('footer')->writeFooter($_footer));
}
}
// build docx file
// Write dynamic files
$objZip->addFromString('[Content_Types].xml', $this->getWriterPart('contenttypes')->writeContentTypes($this->_imageTypes, $this->_objectTypes, $_cHdrs, $_cFtrs)); $objZip->addFromString('[Content_Types].xml', $this->getWriterPart('contenttypes')->writeContentTypes($this->_imageTypes, $this->_objectTypes, $_cHdrs, $_cFtrs));
$objZip->addFromString('_rels/.rels', $this->getWriterPart('rels')->writeRelationships($this->_document)); $objZip->addFromString('_rels/.rels', $this->getWriterPart('rels')->writeRelationships($this->_document));
$objZip->addFromString('docProps/app.xml', $this->getWriterPart('docprops')->writeDocPropsApp($this->_document)); $objZip->addFromString('docProps/app.xml', $this->getWriterPart('docprops')->writeDocPropsApp($this->_document));
$objZip->addFromString('docProps/core.xml', $this->getWriterPart('docprops')->writeDocPropsCore($this->_document)); $objZip->addFromString('docProps/core.xml', $this->getWriterPart('docprops')->writeDocPropsCore($this->_document));
$objZip->addFromString('word/document.xml', $this->getWriterPart('document')->writeDocument($this->_document)); $objZip->addFromString('word/document.xml', $this->getWriterPart('document')->writeDocument($this->_document));
$objZip->addFromString('word/_rels/document.xml.rels', $this->getWriterPart('documentrels')->writeDocumentRels($sectionElements)); $objZip->addFromString('word/_rels/document.xml.rels', $this->getWriterPart('documentrels')->writeDocumentRels($sectionElements));
$objZip->addFromString('word/styles.xml', $this->getWriterPart('styles')->writeStyles($this->_document)); $objZip->addFromString('word/styles.xml', $this->getWriterPart('styles')->writeStyles($this->_document));
// Write static files // Write static files
$objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/numbering.xml', 'word/numbering.xml'); $objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/numbering.xml', 'word/numbering.xml');
$objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/settings.xml', 'word/settings.xml'); $objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/settings.xml', 'word/settings.xml');
$objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/theme1.xml', 'word/theme/theme1.xml'); $objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/theme1.xml', 'word/theme/theme1.xml');
$objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/webSettings.xml', 'word/webSettings.xml'); $objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/webSettings.xml', 'word/webSettings.xml');
$objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/fontTable.xml', 'word/fontTable.xml'); $objZip->addFile(PHPWORD_BASE_PATH . 'PHPWord/_staticDocParts/fontTable.xml', 'word/fontTable.xml');
// Close file // Close file
if($objZip->close() === false) { if ($objZip->close() === false) {
throw new Exception("Could not close zip file $pFilename."); throw new Exception("Could not close zip file $pFilename.");
} }
// If a temporary file was used, copy it to the correct file stream // If a temporary file was used, copy it to the correct file stream
if($originalFilename != $pFilename) { if ($originalFilename != $pFilename) {
if (copy($pFilename, $originalFilename) === false) { if (copy($pFilename, $originalFilename) === false) {
throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename."); throw new Exception("Could not copy temporary zip file $pFilename to $originalFilename.");
} }
@unlink($pFilename); @unlink($pFilename);
} }
} else { } else {
throw new Exception("PHPWord object unassigned."); throw new Exception("PHPWord object unassigned.");
} }
} }
private function _chkContentTypes($src) { private function _chkContentTypes($src)
$srcInfo = pathinfo($src); {
$extension = strtolower($srcInfo['extension']); $srcInfo = pathinfo($src);
if(substr($extension, 0, 3) == 'php') { $extension = strtolower($srcInfo['extension']);
$extension = 'php'; if (substr($extension, 0, 3) == 'php') {
} $extension = 'php';
$_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff', 'php'); }
$_supportedImageTypes = array('jpg', 'jpeg', 'gif', 'png', 'bmp', 'tif', 'tiff', 'php');
if(in_array($extension, $_supportedImageTypes)) { if (in_array($extension, $_supportedImageTypes)) {
$imagedata = getimagesize($src); $imagedata = getimagesize($src);
$imagetype = image_type_to_mime_type($imagedata[2]); $imagetype = image_type_to_mime_type($imagedata[2]);
$imageext = image_type_to_extension($imagedata[2]); $imageext = image_type_to_extension($imagedata[2]);
$imageext = str_replace('.', '', $imageext); $imageext = str_replace('.', '', $imageext);
if($imageext == 'jpeg') $imageext = 'jpg'; if ($imageext == 'jpeg') $imageext = 'jpg';
if(!in_array($imagetype, $this->_imageTypes)) { if (!in_array($imagetype, $this->_imageTypes)) {
$this->_imageTypes[$imageext] = $imagetype; $this->_imageTypes[$imageext] = $imagetype;
} }
} else { } else {
if(!in_array($extension, $this->_objectTypes)) { if (!in_array($extension, $this->_objectTypes)) {
$this->_objectTypes[] = $extension; $this->_objectTypes[] = $extension;
} }
} }
} }
public function getWriterPart($pPartName = '') { public function getWriterPart($pPartName = '')
if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) { {
return $this->_writerParts[strtolower($pPartName)]; if ($pPartName != '' && isset($this->_writerParts[strtolower($pPartName)])) {
} else { return $this->_writerParts[strtolower($pPartName)];
return null; } else {
} return null;
} }
}
public function getUseDiskCaching() { public function getUseDiskCaching()
return $this->_useDiskCaching; {
} return $this->_useDiskCaching;
}
public function setUseDiskCaching($pValue = false, $pDirectory = null) { public function setUseDiskCaching($pValue = false, $pDirectory = null)
$this->_useDiskCaching = $pValue; {
$this->_useDiskCaching = $pValue;
if (!is_null($pDirectory)) { if (!is_null($pDirectory)) {
if (is_dir($pDirectory)) { if (is_dir($pDirectory)) {
$this->_diskCachingDirectory = $pDirectory; $this->_diskCachingDirectory = $pDirectory;
} else { } else {
throw new Exception("Directory does not exist: $pDirectory"); throw new Exception("Directory does not exist: $pDirectory");
} }
} }
return $this; return $this;
} }
private function _addFileToPackage($objZip, $element) { private function _addFileToPackage($objZip, $element)
if(isset($element['isMemImage']) && $element['isMemImage']) { {
$image = call_user_func($element['createfunction'], $element['source']); if (isset($element['isMemImage']) && $element['isMemImage']) {
ob_start(); $image = call_user_func($element['createfunction'], $element['source']);
call_user_func($element['imagefunction'], $image); ob_start();
$imageContents = ob_get_contents(); call_user_func($element['imagefunction'], $image);
ob_end_clean(); $imageContents = ob_get_contents();
$objZip->addFromString('word/'.$element['target'], $imageContents); ob_end_clean();
imagedestroy($image); $objZip->addFromString('word/' . $element['target'], $imageContents);
imagedestroy($image);
$this->_chkContentTypes($element['source']); $this->_chkContentTypes($element['source']);
} else { } else {
$objZip->addFile($element['source'], 'word/'.$element['target']); $objZip->addFile($element['source'], 'word/' . $element['target']);
$this->_chkContentTypes($element['source']); $this->_chkContentTypes($element['source']);
} }
} }
} }
?>

1381
Classes/PHPWord/Writer/Word2007/Base.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

279
Classes/PHPWord/Writer/Word2007/ContentTypes.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,166 +20,173 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_ContentTypes
*/
class PHPWord_Writer_Word2007_ContentTypes extends PHPWord_Writer_Word2007_WriterPart
{
class PHPWord_Writer_Word2007_ContentTypes extends PHPWord_Writer_Word2007_WriterPart { public function writeContentTypes($_imageTypes, $_objectTypes, $_cHdrs, $_cFtrs)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeContentTypes($_imageTypes, $_objectTypes, $_cHdrs, $_cFtrs) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // Types
$objWriter->startDocument('1.0', 'UTF-8', 'yes'); $objWriter->startElement('Types');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types');
// Types // Rels
$objWriter->startElement('Types'); $this->_writeDefaultContentType(
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/content-types'); $objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml'
);
// Rels // XML
$this->_writeDefaultContentType( $this->_writeDefaultContentType(
$objWriter, 'rels', 'application/vnd.openxmlformats-package.relationships+xml' $objWriter, 'xml', 'application/xml'
); );
// XML // Add media content-types
$this->_writeDefaultContentType( foreach ($_imageTypes as $key => $value) {
$objWriter, 'xml', 'application/xml' $this->_writeDefaultContentType($objWriter, $key, $value);
); }
// Add media content-types // Add embedding content-types
foreach($_imageTypes as $key => $value) { if (count($_objectTypes) > 0) {
$this->_writeDefaultContentType($objWriter, $key, $value); $this->_writeDefaultContentType($objWriter, 'bin', 'application/vnd.openxmlformats-officedocument.oleObject');
} }
// Add embedding content-types // DocProps
if(count($_objectTypes) > 0) { $this->_writeOverrideContentType(
$this->_writeDefaultContentType($objWriter, 'bin', 'application/vnd.openxmlformats-officedocument.oleObject'); $objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml'
} );
// DocProps $this->_writeOverrideContentType(
$this->_writeOverrideContentType( $objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml'
$objWriter, '/docProps/app.xml', 'application/vnd.openxmlformats-officedocument.extended-properties+xml' );
);
$this->_writeOverrideContentType( // Document
$objWriter, '/docProps/core.xml', 'application/vnd.openxmlformats-package.core-properties+xml' $this->_writeOverrideContentType(
); $objWriter, '/word/document.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml'
);
// Document // Styles
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/document.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml' $objWriter, '/word/styles.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml'
); );
// Styles // Numbering
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/styles.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml' $objWriter, '/word/numbering.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml'
); );
// Numbering // Settings
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/numbering.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml' $objWriter, '/word/settings.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml'
); );
// Settings // Theme1
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/settings.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml' $objWriter, '/word/theme/theme1.xml', 'application/vnd.openxmlformats-officedocument.theme+xml'
); );
// Theme1 // WebSettings
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/theme/theme1.xml', 'application/vnd.openxmlformats-officedocument.theme+xml' $objWriter, '/word/webSettings.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml'
); );
// WebSettings // Font Table
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/webSettings.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml' $objWriter, '/word/fontTable.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml'
); );
// Font Table for ($i = 1; $i <= $_cHdrs; $i++) {
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/fontTable.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml' $objWriter, '/word/header' . $i . '.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml'
); );
}
for($i=1; $i<=$_cHdrs; $i++) { for ($i = 1; $i <= $_cFtrs; $i++) {
$this->_writeOverrideContentType( $this->_writeOverrideContentType(
$objWriter, '/word/header'.$i.'.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml' $objWriter, '/word/footer' . $i . '.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml'
); );
} }
for($i=1; $i<=$_cFtrs; $i++) {
$this->_writeOverrideContentType(
$objWriter, '/word/footer'.$i.'.xml', 'application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml'
);
}
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
/** /**
* Get image mime type * Get image mime type
* *
* @param string $pFile Filename * @param string $pFile Filename
* @return string Mime Type * @return string Mime Type
* @throws Exception * @throws Exception
*/ */
private function _getImageMimeType($pFile = '') { private function _getImageMimeType($pFile = '')
if(PHPWord_Shared_File::file_exists($pFile)) { {
$image = getimagesize($pFile); if (PHPWord_Shared_File::file_exists($pFile)) {
return image_type_to_mime_type($image[2]); $image = getimagesize($pFile);
} else { return image_type_to_mime_type($image[2]);
throw new Exception("File $pFile does not exist"); } else {
} throw new Exception("File $pFile does not exist");
} }
}
/** /**
* Write Default content type * Write Default content type
* *
* @param PHPWord_Shared_XMLWriter $objWriter XML Writer * @param PHPWord_Shared_XMLWriter $objWriter XML Writer
* @param string $pPartname Part name * @param string $pPartname Part name
* @param string $pContentType Content type * @param string $pContentType Content type
* @throws Exception * @throws Exception
*/ */
private function _writeDefaultContentType(PHPWord_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') { private function _writeDefaultContentType(PHPWord_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '')
if($pPartname != '' && $pContentType != '') { {
// Write content type if ($pPartname != '' && $pContentType != '') {
$objWriter->startElement('Default'); // Write content type
$objWriter->writeAttribute('Extension', $pPartname); $objWriter->startElement('Default');
$objWriter->writeAttribute('ContentType', $pContentType); $objWriter->writeAttribute('Extension', $pPartname);
$objWriter->endElement(); $objWriter->writeAttribute('ContentType', $pContentType);
} else { $objWriter->endElement();
throw new Exception("Invalid parameters passed."); } else {
} throw new Exception("Invalid parameters passed.");
} }
}
/** /**
* Write Override content type * Write Override content type
* *
* @param PHPPowerPoint_Shared_XMLWriter $objWriter XML Writer * @param PHPPowerPoint_Shared_XMLWriter $objWriter XML Writer
* @param string $pPartname Part name * @param string $pPartname Part name
* @param string $pContentType Content type * @param string $pContentType Content type
* @throws Exception * @throws Exception
*/ */
private function _writeOverrideContentType(PHPWord_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '') { private function _writeOverrideContentType(PHPWord_Shared_XMLWriter $objWriter = null, $pPartname = '', $pContentType = '')
if($pPartname != '' && $pContentType != '') { {
// Write content type if ($pPartname != '' && $pContentType != '') {
$objWriter->startElement('Override'); // Write content type
$objWriter->writeAttribute('PartName', $pPartname); $objWriter->startElement('Override');
$objWriter->writeAttribute('ContentType', $pContentType); $objWriter->writeAttribute('PartName', $pPartname);
$objWriter->endElement(); $objWriter->writeAttribute('ContentType', $pContentType);
} else { $objWriter->endElement();
throw new Exception("Invalid parameters passed."); } else {
} throw new Exception("Invalid parameters passed.");
} }
}
} }

235
Classes/PHPWord/Writer/Word2007/DocProps.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,161 +20,166 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_DocProps
*/
class PHPWord_Writer_Word2007_DocProps extends PHPWord_Writer_Word2007_WriterPart
{
class PHPWord_Writer_Word2007_DocProps extends PHPWord_Writer_Word2007_WriterPart { public function writeDocPropsApp(PHPWord $pPHPWord = null)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeDocPropsApp(PHPWord $pPHPWord = null) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // Properties
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startElement('Properties');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
// Properties // Application
$objWriter->startElement('Properties'); $objWriter->writeElement('Application', 'Microsoft Office Word');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
// Application // ScaleCrop
$objWriter->writeElement('Application', 'Microsoft Office Word'); $objWriter->writeElement('ScaleCrop', 'false');
// ScaleCrop // HeadingPairs
$objWriter->writeElement('ScaleCrop', 'false'); $objWriter->startElement('HeadingPairs');
// HeadingPairs // Vector
$objWriter->startElement('HeadingPairs'); $objWriter->startElement('vt:vector');
$objWriter->writeAttribute('size', '4');
$objWriter->writeAttribute('baseType', 'variant');
// Vector // Variant
$objWriter->startElement('vt:vector'); $objWriter->startElement('vt:variant');
$objWriter->writeAttribute('size', '4'); $objWriter->writeElement('vt:lpstr', 'Theme');
$objWriter->writeAttribute('baseType', 'variant'); $objWriter->endElement();
// Variant // Variant
$objWriter->startElement('vt:variant'); $objWriter->startElement('vt:variant');
$objWriter->writeElement('vt:lpstr', 'Theme'); $objWriter->writeElement('vt:i4', '1');
$objWriter->endElement(); $objWriter->endElement();
// Variant // Variant
$objWriter->startElement('vt:variant'); $objWriter->startElement('vt:variant');
$objWriter->writeElement('vt:i4', '1'); $objWriter->writeElement('vt:lpstr', 'Slide Titles');
$objWriter->endElement(); $objWriter->endElement();
// Variant // Variant
$objWriter->startElement('vt:variant'); $objWriter->startElement('vt:variant');
$objWriter->writeElement('vt:lpstr', 'Slide Titles'); $objWriter->writeElement('vt:i4', '1');
$objWriter->endElement(); $objWriter->endElement();
// Variant $objWriter->endElement();
$objWriter->startElement('vt:variant');
$objWriter->writeElement('vt:i4', '1');
$objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); // TitlesOfParts
$objWriter->startElement('TitlesOfParts');
// TitlesOfParts // Vector
$objWriter->startElement('TitlesOfParts'); $objWriter->startElement('vt:vector');
$objWriter->writeAttribute('size', '1');
$objWriter->writeAttribute('baseType', 'lpstr');
// Vector $objWriter->writeElement('vt:lpstr', 'Office Theme');
$objWriter->startElement('vt:vector');
$objWriter->writeAttribute('size', '1');
$objWriter->writeAttribute('baseType', 'lpstr');
$objWriter->writeElement('vt:lpstr', 'Office Theme'); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); // Company
$objWriter->writeElement('Company', $pPHPWord->getProperties()->getCompany());
// Company // LinksUpToDate
$objWriter->writeElement('Company', $pPHPWord->getProperties()->getCompany()); $objWriter->writeElement('LinksUpToDate', 'false');
// LinksUpToDate // SharedDoc
$objWriter->writeElement('LinksUpToDate', 'false'); $objWriter->writeElement('SharedDoc', 'false');
// SharedDoc // HyperlinksChanged
$objWriter->writeElement('SharedDoc', 'false'); $objWriter->writeElement('HyperlinksChanged', 'false');
// HyperlinksChanged // AppVersion
$objWriter->writeElement('HyperlinksChanged', 'false'); $objWriter->writeElement('AppVersion', '12.0000');
// AppVersion $objWriter->endElement();
$objWriter->writeElement('AppVersion', '12.0000');
$objWriter->endElement(); // Return
return $objWriter->getData();
// Return }
return $objWriter->getData();
}
public function writeDocPropsCore(PHPWord $pPHPWord = null) { public function writeDocPropsCore(PHPWord $pPHPWord = null)
// Create XML writer {
$objWriter = null; // Create XML writer
if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = null;
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); if ($this->getParentWriter()->getUseDiskCaching()) {
} else { $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); } else {
} $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startDocument('1.0', 'UTF-8', 'yes');
// cp:coreProperties // cp:coreProperties
$objWriter->startElement('cp:coreProperties'); $objWriter->startElement('cp:coreProperties');
$objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties'); $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:dc', 'http://purl.org/dc/elements/1.1/');
$objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/'); $objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');
$objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/'); $objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');
$objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); $objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
// dc:creator // dc:creator
$objWriter->writeElement('dc:creator', $pPHPWord->getProperties()->getCreator()); $objWriter->writeElement('dc:creator', $pPHPWord->getProperties()->getCreator());
// cp:lastModifiedBy // cp:lastModifiedBy
$objWriter->writeElement('cp:lastModifiedBy', $pPHPWord->getProperties()->getLastModifiedBy()); $objWriter->writeElement('cp:lastModifiedBy', $pPHPWord->getProperties()->getLastModifiedBy());
// dcterms:created // dcterms:created
$objWriter->startElement('dcterms:created'); $objWriter->startElement('dcterms:created');
$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
$objWriter->writeRaw(date(DATE_W3C, $pPHPWord->getProperties()->getCreated())); $objWriter->writeRaw(date(DATE_W3C, $pPHPWord->getProperties()->getCreated()));
$objWriter->endElement(); $objWriter->endElement();
// dcterms:modified // dcterms:modified
$objWriter->startElement('dcterms:modified'); $objWriter->startElement('dcterms:modified');
$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF'); $objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
$objWriter->writeRaw(date(DATE_W3C, $pPHPWord->getProperties()->getModified())); $objWriter->writeRaw(date(DATE_W3C, $pPHPWord->getProperties()->getModified()));
$objWriter->endElement(); $objWriter->endElement();
// dc:title // dc:title
$objWriter->writeElement('dc:title', $pPHPWord->getProperties()->getTitle()); $objWriter->writeElement('dc:title', $pPHPWord->getProperties()->getTitle());
// dc:description // dc:description
$objWriter->writeElement('dc:description', $pPHPWord->getProperties()->getDescription()); $objWriter->writeElement('dc:description', $pPHPWord->getProperties()->getDescription());
// dc:subject // dc:subject
$objWriter->writeElement('dc:subject', $pPHPWord->getProperties()->getSubject()); $objWriter->writeElement('dc:subject', $pPHPWord->getProperties()->getSubject());
// cp:keywords // cp:keywords
$objWriter->writeElement('cp:keywords', $pPHPWord->getProperties()->getKeywords()); $objWriter->writeElement('cp:keywords', $pPHPWord->getProperties()->getKeywords());
// cp:category // cp:category
$objWriter->writeElement('cp:category', $pPHPWord->getProperties()->getCategory()); $objWriter->writeElement('cp:category', $pPHPWord->getProperties()->getCategory());
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
} }

697
Classes/PHPWord/Writer/Word2007/Document.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,439 +20,450 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_Document
*/
class PHPWord_Writer_Word2007_Document extends PHPWord_Writer_Word2007_Base
{
class PHPWord_Writer_Word2007_Document extends PHPWord_Writer_Word2007_Base { public function writeDocument(PHPWord $pPHPWord = null)
{
// Create XML writer
public function writeDocument(PHPWord $pPHPWord = null) { if ($this->getParentWriter()->getUseDiskCaching()) {
// Create XML writer $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
if($this->getParentWriter()->getUseDiskCaching()) { // XML header
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); $objWriter->startDocument('1.0', 'UTF-8', 'yes');
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // w:document
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startElement('w:document');
// w:document $objWriter->writeAttribute('xmlns:ve', 'http://schemas.openxmlformats.org/markup-compatibility/2006');
$objWriter->startElement('w:document'); $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:m', 'http://schemas.openxmlformats.org/officeDocument/2006/math');
$objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
$objWriter->writeAttribute('xmlns:wp', 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing');
$objWriter->writeAttribute('xmlns:w10', 'urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wne', 'http://schemas.microsoft.com/office/word/2006/wordml');
$objWriter->writeAttribute('xmlns:ve', 'http://schemas.openxmlformats.org/markup-compatibility/2006'); $objWriter->startElement('w:body');
$objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:m', 'http://schemas.openxmlformats.org/officeDocument/2006/math');
$objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
$objWriter->writeAttribute('xmlns:wp', 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing');
$objWriter->writeAttribute('xmlns:w10', 'urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wne', 'http://schemas.microsoft.com/office/word/2006/wordml');
$objWriter->startElement('w:body'); $_sections = $pPHPWord->getSections();
$countSections = count($_sections);
$pSection = 0;
$_sections = $pPHPWord->getSections(); if ($countSections > 0) {
$countSections = count($_sections); foreach ($_sections as $section) {
$pSection = 0; $pSection++;
if($countSections > 0) { $_elements = $section->getElements();
foreach($_sections as $section) {
$pSection++;
$_elements = $section->getElements(); foreach ($_elements as $element) {
if ($element instanceof PHPWord_Section_Text) {
$this->_writeText($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Link) {
$this->_writeLink($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Title) {
$this->_writeTitle($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter);
} elseif ($element instanceof PHPWord_Section_PageBreak) {
$this->_writePageBreak($objWriter);
} elseif ($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_ListItem) {
$this->_writeListItem($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Image ||
$element instanceof PHPWord_Section_MemoryImage
) {
$this->_writeImage($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Object) {
$this->_writeObject($objWriter, $element);
} elseif ($element instanceof PHPWord_TOC) {
$this->_writeTOC($objWriter);
}
}
foreach($_elements as $element) { if ($pSection == $countSections) {
if($element instanceof PHPWord_Section_Text) { $this->_writeEndSection($objWriter, $section);
$this->_writeText($objWriter, $element); } else {
} elseif($element instanceof PHPWord_Section_TextRun) { $this->_writeSection($objWriter, $section);
$this->_writeTextRun($objWriter, $element); }
} elseif($element instanceof PHPWord_Section_Link) { }
$this->_writeLink($objWriter, $element); }
} elseif($element instanceof PHPWord_Section_Title) {
$this->_writeTitle($objWriter, $element);
} elseif($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter);
} elseif($element instanceof PHPWord_Section_PageBreak) {
$this->_writePageBreak($objWriter);
} elseif($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element);
} elseif($element instanceof PHPWord_Section_ListItem) {
$this->_writeListItem($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Image ||
$element instanceof PHPWord_Section_MemoryImage) {
$this->_writeImage($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Object) {
$this->_writeObject($objWriter, $element);
} elseif($element instanceof PHPWord_TOC) {
$this->_writeTOC($objWriter);
}
}
if($pSection == $countSections) { $objWriter->endElement(); // End w:body
$this->_writeEndSection($objWriter, $section); $objWriter->endElement(); // End w:document
} else {
$this->_writeSection($objWriter, $section);
}
}
}
$objWriter->endElement(); // End w:body // Return
$objWriter->endElement(); // End w:document return $objWriter->getData();
}
// Return private function _writeSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section)
return $objWriter->getData(); {
} $objWriter->startElement('w:p');
$objWriter->startElement('w:pPr');
$this->_writeEndSection($objWriter, $section, 3);
$objWriter->endElement();
$objWriter->endElement();
}
private function _writeSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section) { private function _writeEndSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section)
$objWriter->startElement('w:p'); {
$objWriter->startElement('w:pPr'); $_settings = $section->getSettings();
$this->_writeEndSection($objWriter, $section, 3); $_headers = $section->getHeaders();
$objWriter->endElement(); $_footer = $section->getFooter();
$objWriter->endElement(); $pgSzW = $_settings->getPageSizeW();
} $pgSzH = $_settings->getPageSizeH();
$orientation = $_settings->getOrientation();
private function _writeEndSection(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section $section) { $marginTop = $_settings->getMarginTop();
$_settings = $section->getSettings(); $marginLeft = $_settings->getMarginLeft();
$_headers = $section->getHeaders(); $marginRight = $_settings->getMarginRight();
$_footer = $section->getFooter(); $marginBottom = $_settings->getMarginBottom();
$pgSzW = $_settings->getPageSizeW();
$pgSzH = $_settings->getPageSizeH();
$orientation = $_settings->getOrientation();
$marginTop = $_settings->getMarginTop(); $borders = $_settings->getBorderSize();
$marginLeft = $_settings->getMarginLeft();
$marginRight = $_settings->getMarginRight();
$marginBottom = $_settings->getMarginBottom();
$borders = $_settings->getBorderSize(); $objWriter->startElement('w:sectPr');
$objWriter->startElement('w:sectPr'); foreach ($_headers as &$_header) {
$rId = $_header->getRelationId();
$objWriter->startElement('w:headerReference');
$objWriter->writeAttribute('w:type', $_header->getType());
$objWriter->writeAttribute('r:id', 'rId' . $rId);
$objWriter->endElement();
}
foreach ($_headers as &$_header) { if ($section->hasDifferentFirstPage()) {
$rId = $_header->getRelationId(); $objWriter->startElement('w:titlePg');
$objWriter->startElement('w:headerReference'); $objWriter->endElement();
$objWriter->writeAttribute('w:type', $_header->getType()); }
$objWriter->writeAttribute('r:id', 'rId'.$rId);
$objWriter->endElement();
}
if($section->hasDifferentFirstPage()) { if (!is_null($_footer)) {
$objWriter->startElement('w:titlePg'); $rId = $_footer->getRelationId();
$objWriter->endElement(); $objWriter->startElement('w:footerReference');
} $objWriter->writeAttribute('w:type', 'default');
$objWriter->writeAttribute('r:id', 'rId' . $rId);
$objWriter->endElement();
}
if(!is_null($_footer)) { $objWriter->startElement('w:pgSz');
$rId = $_footer->getRelationId(); $objWriter->writeAttribute('w:w', $pgSzW);
$objWriter->startElement('w:footerReference'); $objWriter->writeAttribute('w:h', $pgSzH);
$objWriter->writeAttribute('w:type', 'default');
$objWriter->writeAttribute('r:id', 'rId'.$rId);
$objWriter->endElement();
}
$objWriter->startElement('w:pgSz'); if (!is_null($orientation) && strtolower($orientation) != 'portrait') {
$objWriter->writeAttribute('w:w', $pgSzW); $objWriter->writeAttribute('w:orient', $orientation);
$objWriter->writeAttribute('w:h', $pgSzH); }
if(!is_null($orientation) && strtolower($orientation) != 'portrait') { $objWriter->endElement();
$objWriter->writeAttribute('w:orient', $orientation);
}
$objWriter->endElement(); $objWriter->startElement('w:pgMar');
$objWriter->writeAttribute('w:top', $marginTop);
$objWriter->startElement('w:pgMar'); $objWriter->writeAttribute('w:right', $marginRight);
$objWriter->writeAttribute('w:top', $marginTop); $objWriter->writeAttribute('w:bottom', $marginBottom);
$objWriter->writeAttribute('w:right', $marginRight); $objWriter->writeAttribute('w:left', $marginLeft);
$objWriter->writeAttribute('w:bottom', $marginBottom); $objWriter->writeAttribute('w:header', '720');
$objWriter->writeAttribute('w:left', $marginLeft); $objWriter->writeAttribute('w:footer', '720');
$objWriter->writeAttribute('w:header', '720'); $objWriter->writeAttribute('w:gutter', '0');
$objWriter->writeAttribute('w:footer', '720'); $objWriter->endElement();
$objWriter->writeAttribute('w:gutter', '0');
$objWriter->endElement();
if(!is_null($borders[0]) || !is_null($borders[1]) || !is_null($borders[2]) || !is_null($borders[3])) { if (!is_null($borders[0]) || !is_null($borders[1]) || !is_null($borders[2]) || !is_null($borders[3])) {
$borderColor = $_settings->getBorderColor(); $borderColor = $_settings->getBorderColor();
$objWriter->startElement('w:pgBorders'); $objWriter->startElement('w:pgBorders');
$objWriter->writeAttribute('w:offsetFrom', 'page'); $objWriter->writeAttribute('w:offsetFrom', 'page');
if(!is_null($borders[0])) { if (!is_null($borders[0])) {
$objWriter->startElement('w:top'); $objWriter->startElement('w:top');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $borders[0]); $objWriter->writeAttribute('w:sz', $borders[0]);
$objWriter->writeAttribute('w:space', '24'); $objWriter->writeAttribute('w:space', '24');
$objWriter->writeAttribute('w:color', $borderColor[0]); $objWriter->writeAttribute('w:color', $borderColor[0]);
$objWriter->endElement(); $objWriter->endElement();
} }
if(!is_null($borders[1])) { if (!is_null($borders[1])) {
$objWriter->startElement('w:left'); $objWriter->startElement('w:left');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $borders[1]); $objWriter->writeAttribute('w:sz', $borders[1]);
$objWriter->writeAttribute('w:space', '24'); $objWriter->writeAttribute('w:space', '24');
$objWriter->writeAttribute('w:color', $borderColor[1]); $objWriter->writeAttribute('w:color', $borderColor[1]);
$objWriter->endElement(); $objWriter->endElement();
} }
if(!is_null($borders[2])) { if (!is_null($borders[2])) {
$objWriter->startElement('w:right'); $objWriter->startElement('w:right');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $borders[2]); $objWriter->writeAttribute('w:sz', $borders[2]);
$objWriter->writeAttribute('w:space', '24'); $objWriter->writeAttribute('w:space', '24');
$objWriter->writeAttribute('w:color', $borderColor[2]); $objWriter->writeAttribute('w:color', $borderColor[2]);
$objWriter->endElement(); $objWriter->endElement();
} }
if(!is_null($borders[3])) { if (!is_null($borders[3])) {
$objWriter->startElement('w:bottom'); $objWriter->startElement('w:bottom');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $borders[3]); $objWriter->writeAttribute('w:sz', $borders[3]);
$objWriter->writeAttribute('w:space', '24'); $objWriter->writeAttribute('w:space', '24');
$objWriter->writeAttribute('w:color', $borderColor[3]); $objWriter->writeAttribute('w:color', $borderColor[3]);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:cols'); $objWriter->startElement('w:cols');
$objWriter->writeAttribute('w:space', '720'); $objWriter->writeAttribute('w:space', '720');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
private function _writePageBreak(PHPWord_Shared_XMLWriter $objWriter = null) { private function _writePageBreak(PHPWord_Shared_XMLWriter $objWriter = null)
$objWriter->startElement('w:p'); {
$objWriter->startElement('w:r'); $objWriter->startElement('w:p');
$objWriter->startElement('w:br'); $objWriter->startElement('w:r');
$objWriter->writeAttribute('w:type', 'page'); $objWriter->startElement('w:br');
$objWriter->endElement(); $objWriter->writeAttribute('w:type', 'page');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} $objWriter->endElement();
}
private function _writeListItem(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_ListItem $listItem) { private function _writeListItem(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_ListItem $listItem)
$textObject = $listItem->getTextObject(); {
$text = $textObject->getText(); $textObject = $listItem->getTextObject();
$text = $textObject->getText();
$styleParagraph = $textObject->getParagraphStyle(); $styleParagraph = $textObject->getParagraphStyle();
$SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false; $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
$depth = $listItem->getDepth(); $depth = $listItem->getDepth();
$listType = $listItem->getStyle()->getListType(); $listType = $listItem->getStyle()->getListType();
$objWriter->startElement('w:p'); $objWriter->startElement('w:p');
$objWriter->startElement('w:pPr'); $objWriter->startElement('w:pPr');
if($SpIsObject) { if ($SpIsObject) {
$this->_writeParagraphStyle($objWriter, $styleParagraph, true); $this->_writeParagraphStyle($objWriter, $styleParagraph, true);
} elseif(!$SpIsObject && !is_null($styleParagraph)) { } elseif (!$SpIsObject && !is_null($styleParagraph)) {
$objWriter->startElement('w:pStyle'); $objWriter->startElement('w:pStyle');
$objWriter->writeAttribute('w:val', $styleParagraph); $objWriter->writeAttribute('w:val', $styleParagraph);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:numPr'); $objWriter->startElement('w:numPr');
$objWriter->startElement('w:ilvl'); $objWriter->startElement('w:ilvl');
$objWriter->writeAttribute('w:val', $depth); $objWriter->writeAttribute('w:val', $depth);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:numId'); $objWriter->startElement('w:numId');
$objWriter->writeAttribute('w:val', $listType); $objWriter->writeAttribute('w:val', $listType);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$this->_writeText($objWriter, $textObject, true); $this->_writeText($objWriter, $textObject, true);
$objWriter->endElement(); $objWriter->endElement();
} }
protected function _writeObject(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Object $object) { protected function _writeObject(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Object $object)
$rIdObject = $object->getRelationId(); {
$rIdImage = $object->getImageRelationId(); $rIdObject = $object->getRelationId();
$shapeId = md5($rIdObject.'_'.$rIdImage); $rIdImage = $object->getImageRelationId();
$shapeId = md5($rIdObject . '_' . $rIdImage);
$objectId = $object->getObjectId(); $objectId = $object->getObjectId();
$style = $object->getStyle(); $style = $object->getStyle();
$width = $style->getWidth(); $width = $style->getWidth();
$height = $style->getHeight(); $height = $style->getHeight();
$align = $style->getAlign(); $align = $style->getAlign();
$objWriter->startElement('w:p'); $objWriter->startElement('w:p');
if(!is_null($align)) { if (!is_null($align)) {
$objWriter->startElement('w:pPr'); $objWriter->startElement('w:pPr');
$objWriter->startElement('w:jc'); $objWriter->startElement('w:jc');
$objWriter->writeAttribute('w:val', $align); $objWriter->writeAttribute('w:val', $align);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:object'); $objWriter->startElement('w:object');
$objWriter->writeAttribute('w:dxaOrig', '249'); $objWriter->writeAttribute('w:dxaOrig', '249');
$objWriter->writeAttribute('w:dyaOrig', '160'); $objWriter->writeAttribute('w:dyaOrig', '160');
$objWriter->startElement('v:shape'); $objWriter->startElement('v:shape');
$objWriter->writeAttribute('id', $shapeId); $objWriter->writeAttribute('id', $shapeId);
$objWriter->writeAttribute('type', '#_x0000_t75'); $objWriter->writeAttribute('type', '#_x0000_t75');
$objWriter->writeAttribute('style', 'width:104px;height:67px'); $objWriter->writeAttribute('style', 'width:104px;height:67px');
$objWriter->writeAttribute('o:ole', ''); $objWriter->writeAttribute('o:ole', '');
$objWriter->startElement('v:imagedata'); $objWriter->startElement('v:imagedata');
$objWriter->writeAttribute('r:id', 'rId'.$rIdImage); $objWriter->writeAttribute('r:id', 'rId' . $rIdImage);
$objWriter->writeAttribute('o:title', ''); $objWriter->writeAttribute('o:title', '');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('o:OLEObject'); $objWriter->startElement('o:OLEObject');
$objWriter->writeAttribute('Type', 'Embed'); $objWriter->writeAttribute('Type', 'Embed');
$objWriter->writeAttribute('ProgID', 'Package'); $objWriter->writeAttribute('ProgID', 'Package');
$objWriter->writeAttribute('ShapeID', $shapeId); $objWriter->writeAttribute('ShapeID', $shapeId);
$objWriter->writeAttribute('DrawAspect', 'Icon'); $objWriter->writeAttribute('DrawAspect', 'Icon');
$objWriter->writeAttribute('ObjectID', '_'.$objectId); $objWriter->writeAttribute('ObjectID', '_' . $objectId);
$objWriter->writeAttribute('r:id', 'rId'.$rIdObject); $objWriter->writeAttribute('r:id', 'rId' . $rIdObject);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); // w:r $objWriter->endElement(); // w:r
$objWriter->endElement(); // w:p $objWriter->endElement(); // w:p
} }
private function _writeTOC(PHPWord_Shared_XMLWriter $objWriter = null) { private function _writeTOC(PHPWord_Shared_XMLWriter $objWriter = null)
$titles = PHPWord_TOC::getTitles(); {
$styleFont = PHPWord_TOC::getStyleFont(); $titles = PHPWord_TOC::getTitles();
$styleFont = PHPWord_TOC::getStyleFont();
$styleTOC = PHPWord_TOC::getStyleTOC(); $styleTOC = PHPWord_TOC::getStyleTOC();
$fIndent = $styleTOC->getIndent(); $fIndent = $styleTOC->getIndent();
$tabLeader = $styleTOC->getTabLeader(); $tabLeader = $styleTOC->getTabLeader();
$tabPos = $styleTOC->getTabPos(); $tabPos = $styleTOC->getTabPos();
$isObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false; $isObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
for($i=0; $i<count($titles); $i++) { for ($i = 0; $i < count($titles); $i++) {
$title = $titles[$i]; $title = $titles[$i];
$indent = ($title['depth'] - 1) * $fIndent; $indent = ($title['depth'] - 1) * $fIndent;
$objWriter->startElement('w:p'); $objWriter->startElement('w:p');
$objWriter->startElement('w:pPr'); $objWriter->startElement('w:pPr');
if($isObject && !is_null($styleFont->getParagraphStyle())) { if ($isObject && !is_null($styleFont->getParagraphStyle())) {
$this->_writeParagraphStyle($objWriter, $styleFont->getParagraphStyle()); $this->_writeParagraphStyle($objWriter, $styleFont->getParagraphStyle());
} }
if($indent > 0) { if ($indent > 0) {
$objWriter->startElement('w:ind'); $objWriter->startElement('w:ind');
$objWriter->writeAttribute('w:left', $indent); $objWriter->writeAttribute('w:left', $indent);
$objWriter->endElement(); $objWriter->endElement();
} }
if(!empty($styleFont) && !$isObject) { if (!empty($styleFont) && !$isObject) {
$objWriter->startElement('w:pPr'); $objWriter->startElement('w:pPr');
$objWriter->startElement('w:pStyle'); $objWriter->startElement('w:pStyle');
$objWriter->writeAttribute('w:val', $styleFont); $objWriter->writeAttribute('w:val', $styleFont);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:tabs'); $objWriter->startElement('w:tabs');
$objWriter->startElement('w:tab'); $objWriter->startElement('w:tab');
$objWriter->writeAttribute('w:val', 'right'); $objWriter->writeAttribute('w:val', 'right');
if(!empty($tabLeader)) { if (!empty($tabLeader)) {
$objWriter->writeAttribute('w:leader', $tabLeader); $objWriter->writeAttribute('w:leader', $tabLeader);
} }
$objWriter->writeAttribute('w:pos', $tabPos); $objWriter->writeAttribute('w:pos', $tabPos);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); // w:pPr $objWriter->endElement(); // w:pPr
if($i == 0) { if ($i == 0) {
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:fldChar'); $objWriter->startElement('w:fldChar');
$objWriter->writeAttribute('w:fldCharType', 'begin'); $objWriter->writeAttribute('w:fldCharType', 'begin');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:instrText'); $objWriter->startElement('w:instrText');
$objWriter->writeAttribute('xml:space', 'preserve'); $objWriter->writeAttribute('xml:space', 'preserve');
$objWriter->writeRaw('TOC \o "1-9" \h \z \u'); $objWriter->writeRaw('TOC \o "1-9" \h \z \u');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:fldChar'); $objWriter->startElement('w:fldChar');
$objWriter->writeAttribute('w:fldCharType', 'separate'); $objWriter->writeAttribute('w:fldCharType', 'separate');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:hyperlink'); $objWriter->startElement('w:hyperlink');
$objWriter->writeAttribute('w:anchor', $title['anchor']); $objWriter->writeAttribute('w:anchor', $title['anchor']);
$objWriter->writeAttribute('w:history', '1'); $objWriter->writeAttribute('w:history', '1');
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
if($isObject) { if ($isObject) {
$this->_writeTextStyle($objWriter, $styleFont); $this->_writeTextStyle($objWriter, $styleFont);
} }
$objWriter->startElement('w:t'); $objWriter->startElement('w:t');
$objWriter->writeRaw($title['text']); $objWriter->writeRaw($title['text']);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->writeElement('w:tab', null); $objWriter->writeElement('w:tab', null);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:fldChar'); $objWriter->startElement('w:fldChar');
$objWriter->writeAttribute('w:fldCharType', 'begin'); $objWriter->writeAttribute('w:fldCharType', 'begin');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:instrText'); $objWriter->startElement('w:instrText');
$objWriter->writeAttribute('xml:space', 'preserve'); $objWriter->writeAttribute('xml:space', 'preserve');
$objWriter->writeRaw('PAGEREF '.$title['anchor'].' \h'); $objWriter->writeRaw('PAGEREF ' . $title['anchor'] . ' \h');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:fldChar'); $objWriter->startElement('w:fldChar');
$objWriter->writeAttribute('w:fldCharType', 'end'); $objWriter->writeAttribute('w:fldCharType', 'end');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); // w:hyperlink $objWriter->endElement(); // w:hyperlink
$objWriter->endElement(); // w:p $objWriter->endElement(); // w:p
} }
$objWriter->startElement('w:p'); $objWriter->startElement('w:p');
$objWriter->startElement('w:r'); $objWriter->startElement('w:r');
$objWriter->startElement('w:fldChar'); $objWriter->startElement('w:fldChar');
$objWriter->writeAttribute('w:fldCharType', 'end'); $objWriter->writeAttribute('w:fldCharType', 'end');
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
} }

257
Classes/PHPWord/Writer/Word2007/DocumentRels.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,158 +20,163 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_DocumentRels
*/
class PHPWord_Writer_Word2007_DocumentRels extends PHPWord_Writer_Word2007_WriterPart
{
class PHPWord_Writer_Word2007_DocumentRels extends PHPWord_Writer_Word2007_WriterPart { public function writeDocumentRels($_relsCollection)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeDocumentRels($_relsCollection) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // Relationships
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startElement('Relationships');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
// Relationships // Relationship word/document.xml
$objWriter->startElement('Relationships'); $this->_writeRelationship(
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); $objWriter,
1,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
'styles.xml'
);
// Relationship word/document.xml // Relationship word/numbering.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
1, 2,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering',
'styles.xml' 'numbering.xml'
); );
// Relationship word/numbering.xml // Relationship word/settings.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
2, 3,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',
'numbering.xml' 'settings.xml'
); );
// Relationship word/settings.xml // Relationship word/settings.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
3, 4,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
'settings.xml' 'theme/theme1.xml'
); );
// Relationship word/settings.xml // Relationship word/settings.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
4, 5,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings',
'theme/theme1.xml' 'webSettings.xml'
); );
// Relationship word/settings.xml // Relationship word/settings.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
5, 6,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable',
'webSettings.xml' 'fontTable.xml'
); );
// Relationship word/settings.xml // Relationships to Images / Embeddings / Headers / Footers
$this->_writeRelationship( foreach ($_relsCollection as $relation) {
$objWriter, $relationType = $relation['type'];
6, $relationName = $relation['target'];
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable', $relationId = $relation['rID'];
'fontTable.xml' $targetMode = ($relationType == 'hyperlink') ? 'External' : '';
);
// Relationships to Images / Embeddings / Headers / Footers $this->_writeRelationship(
foreach($_relsCollection as $relation) { $objWriter,
$relationType = $relation['type']; $relationId,
$relationName = $relation['target']; 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/' . $relationType,
$relationId = $relation['rID']; $relationName,
$targetMode = ($relationType == 'hyperlink') ? 'External' : ''; $targetMode
);
$this->_writeRelationship( }
$objWriter,
$relationId,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/'.$relationType,
$relationName,
$targetMode
);
}
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
public function writeHeaderFooterRels($_relsCollection) { public function writeHeaderFooterRels($_relsCollection)
// Create XML writer {
$objWriter = null; // Create XML writer
if ($this->getParentWriter()->getUseDiskCaching()) { $objWriter = null;
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); if ($this->getParentWriter()->getUseDiskCaching()) {
} else { $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY); } else {
} $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // XML header
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startDocument('1.0', 'UTF-8', 'yes');
// Relationships // Relationships
$objWriter->startElement('Relationships'); $objWriter->startElement('Relationships');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
// Relationships to Images / Embeddings / Headers / Footers // Relationships to Images / Embeddings / Headers / Footers
foreach($_relsCollection as $relation) { foreach ($_relsCollection as $relation) {
$relationType = $relation['type']; $relationType = $relation['type'];
$relationName = $relation['target']; $relationName = $relation['target'];
$relationId = $relation['rID']; $relationId = $relation['rID'];
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
$relationId, $relationId,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/'.$relationType, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/' . $relationType,
$relationName $relationName
); );
} }
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
private function _writeRelationship(PHPWord_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '') { private function _writeRelationship(PHPWord_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
if($pType != '' && $pTarget != '') { {
if(strpos($pId, 'rId') === false) { if ($pType != '' && $pTarget != '') {
$pId = 'rId' . $pId; if (strpos($pId, 'rId') === false) {
} $pId = 'rId' . $pId;
}
// Write relationship // Write relationship
$objWriter->startElement('Relationship'); $objWriter->startElement('Relationship');
$objWriter->writeAttribute('Id', $pId); $objWriter->writeAttribute('Id', $pId);
$objWriter->writeAttribute('Type', $pType); $objWriter->writeAttribute('Type', $pType);
$objWriter->writeAttribute('Target', $pTarget); $objWriter->writeAttribute('Target', $pTarget);
if($pTargetMode != '') { if ($pTargetMode != '') {
$objWriter->writeAttribute('TargetMode', $pTargetMode); $objWriter->writeAttribute('TargetMode', $pTargetMode);
} }
$objWriter->endElement(); $objWriter->endElement();
} else { } else {
throw new Exception("Invalid parameters passed."); throw new Exception("Invalid parameters passed.");
} }
} }
} }
?>

98
Classes/PHPWord/Writer/Word2007/Footer.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,60 +20,64 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_Footer
*/
class PHPWord_Writer_Word2007_Footer extends PHPWord_Writer_Word2007_Base
{
class PHPWord_Writer_Word2007_Footer extends PHPWord_Writer_Word2007_Base { public function writeFooter(PHPWord_Section_Footer $footer)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeFooter(PHPWord_Section_Footer $footer) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header $objWriter->startElement('w:ftr');
$objWriter->startDocument('1.0', 'UTF-8', 'yes'); $objWriter->writeAttribute('xmlns:ve', 'http://schemas.openxmlformats.org/markup-compatibility/2006');
$objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:m', 'http://schemas.openxmlformats.org/officeDocument/2006/math');
$objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
$objWriter->writeAttribute('xmlns:wp', 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing');
$objWriter->writeAttribute('xmlns:w10', 'urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wne', 'http://schemas.microsoft.com/office/word/2006/wordml');
$objWriter->startElement('w:ftr'); $_elements = $footer->getElements();
$objWriter->writeAttribute('xmlns:ve','http://schemas.openxmlformats.org/markup-compatibility/2006');
$objWriter->writeAttribute('xmlns:o','urn:schemas-microsoft-com:office:office');
$objWriter->writeAttribute('xmlns:r','http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:m','http://schemas.openxmlformats.org/officeDocument/2006/math');
$objWriter->writeAttribute('xmlns:v','urn:schemas-microsoft-com:vml');
$objWriter->writeAttribute('xmlns:wp','http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing');
$objWriter->writeAttribute('xmlns:w10','urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:w','http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wne','http://schemas.microsoft.com/office/word/2006/wordml');
$_elements = $footer->getElements(); foreach ($_elements as $element) {
if ($element instanceof PHPWord_Section_Text) {
$this->_writeText($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter);
} elseif ($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Image ||
$element instanceof PHPWord_Section_MemoryImage
) {
$this->_writeImage($objWriter, $element);
} elseif ($element instanceof PHPWord_Section_Footer_PreserveText) {
$this->_writePreserveText($objWriter, $element);
}
}
foreach($_elements as $element) { $objWriter->endElement();
if($element instanceof PHPWord_Section_Text) {
$this->_writeText($objWriter, $element);
} elseif($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element);
} elseif($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter);
} elseif($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Image ||
$element instanceof PHPWord_Section_MemoryImage) {
$this->_writeImage($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Footer_PreserveText) {
$this->_writePreserveText($objWriter, $element);
}
}
$objWriter->endElement(); // Return
return $objWriter->getData();
// Return }
return $objWriter->getData();
}
} }
?>

104
Classes/PHPWord/Writer/Word2007/Header.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,64 +20,68 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_Header
*/
class PHPWord_Writer_Word2007_Header extends PHPWord_Writer_Word2007_Base
{
class PHPWord_Writer_Word2007_Header extends PHPWord_Writer_Word2007_Base { public function writeHeader(PHPWord_Section_Header $header)
{
// Create XML writer
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeHeader(PHPWord_Section_Header $header) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header $objWriter->startElement('w:hdr');
$objWriter->startDocument('1.0', 'UTF-8', 'yes'); $objWriter->writeAttribute('xmlns:ve', 'http://schemas.openxmlformats.org/markup-compatibility/2006');
$objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
$objWriter->startElement('w:hdr'); $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:ve','http://schemas.openxmlformats.org/markup-compatibility/2006'); $objWriter->writeAttribute('xmlns:m', 'http://schemas.openxmlformats.org/officeDocument/2006/math');
$objWriter->writeAttribute('xmlns:o','urn:schemas-microsoft-com:office:office'); $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
$objWriter->writeAttribute('xmlns:r','http://schemas.openxmlformats.org/officeDocument/2006/relationships'); $objWriter->writeAttribute('xmlns:wp', 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing');
$objWriter->writeAttribute('xmlns:m','http://schemas.openxmlformats.org/officeDocument/2006/math'); $objWriter->writeAttribute('xmlns:w10', 'urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:v','urn:schemas-microsoft-com:vml'); $objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wp','http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing'); $objWriter->writeAttribute('xmlns:wne', 'http://schemas.microsoft.com/office/word/2006/wordml');
$objWriter->writeAttribute('xmlns:w10','urn:schemas-microsoft-com:office:word');
$objWriter->writeAttribute('xmlns:w','http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:wne','http://schemas.microsoft.com/office/word/2006/wordml');
$_elements = $header->getElements(); $_elements = $header->getElements();
foreach($_elements as $element) { foreach ($_elements as $element) {
if($element instanceof PHPWord_Section_Text) { if ($element instanceof PHPWord_Section_Text) {
$this->_writeText($objWriter, $element); $this->_writeText($objWriter, $element);
} elseif($element instanceof PHPWord_Section_TextRun) { } elseif ($element instanceof PHPWord_Section_TextRun) {
$this->_writeTextRun($objWriter, $element); $this->_writeTextRun($objWriter, $element);
} elseif($element instanceof PHPWord_Section_TextBreak) { } elseif ($element instanceof PHPWord_Section_TextBreak) {
$this->_writeTextBreak($objWriter); $this->_writeTextBreak($objWriter);
} elseif($element instanceof PHPWord_Section_Table) { } elseif ($element instanceof PHPWord_Section_Table) {
$this->_writeTable($objWriter, $element); $this->_writeTable($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Image || } elseif ($element instanceof PHPWord_Section_Image ||
$element instanceof PHPWord_Section_MemoryImage) { $element instanceof PHPWord_Section_MemoryImage
if(!$element->getIsWatermark()) { ) {
$this->_writeImage($objWriter, $element); if (!$element->getIsWatermark()) {
} else { $this->_writeImage($objWriter, $element);
$this->_writeWatermark($objWriter, $element); } else {
} $this->_writeWatermark($objWriter, $element);
} elseif($element instanceof PHPWord_Section_Footer_PreserveText) { }
$this->_writePreserveText($objWriter, $element); } elseif ($element instanceof PHPWord_Section_Footer_PreserveText) {
} $this->_writePreserveText($objWriter, $element);
} }
}
$objWriter->endElement(); $objWriter->endElement();
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
} }
?>

149
Classes/PHPWord/Writer/Word2007/Rels.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,91 +20,96 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_Rels
*/
class PHPWord_Writer_Word2007_Rels extends PHPWord_Writer_Word2007_WriterPart
{
class PHPWord_Writer_Word2007_Rels extends PHPWord_Writer_Word2007_WriterPart { public function writeRelationships(PHPWord $pPHPWord = null)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeRelationships(PHPWord $pPHPWord = null) { // XML header
// Create XML writer $objWriter->startDocument('1.0', 'UTF-8', 'yes');
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
// XML header // Relationships
$objWriter->startDocument('1.0','UTF-8','yes'); $objWriter->startElement('Relationships');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
// Relationships $relationId = 1;
$objWriter->startElement('Relationships');
$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships');
$relationId = 1; // Relationship word/document.xml
$this->_writeRelationship(
$objWriter,
$relationId,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
'word/document.xml'
);
// Relationship word/document.xml // Relationship docProps/core.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
$relationId, ++$relationId,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
'word/document.xml' 'docProps/core.xml'
); );
// Relationship docProps/core.xml // Relationship docProps/app.xml
$this->_writeRelationship( $this->_writeRelationship(
$objWriter, $objWriter,
++$relationId, ++$relationId,
'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
'docProps/core.xml' 'docProps/app.xml'
); );
// Relationship docProps/app.xml $objWriter->endElement();
$this->_writeRelationship(
$objWriter,
++$relationId,
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',
'docProps/app.xml'
);
$objWriter->endElement(); // Return
return $objWriter->getData();
}
// Return /**
return $objWriter->getData(); * Write Override content type
} *
* @param PHPWord_Shared_XMLWriter $objWriter XML Writer
* @param int $pId Relationship ID. rId will be prepended!
* @param string $pType Relationship type
* @param string $pTarget Relationship target
* @param string $pTargetMode Relationship target mode
* @throws Exception
*/
private function _writeRelationship(PHPWord_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '')
{
if ($pType != '' && $pTarget != '') {
if (strpos($pId, 'rId') === false) {
$pId = 'rId' . $pId;
}
/** // Write relationship
* Write Override content type $objWriter->startElement('Relationship');
* $objWriter->writeAttribute('Id', $pId);
* @param PHPWord_Shared_XMLWriter $objWriter XML Writer $objWriter->writeAttribute('Type', $pType);
* @param int $pId Relationship ID. rId will be prepended! $objWriter->writeAttribute('Target', $pTarget);
* @param string $pType Relationship type
* @param string $pTarget Relationship target
* @param string $pTargetMode Relationship target mode
* @throws Exception
*/
private function _writeRelationship(PHPWord_Shared_XMLWriter $objWriter = null, $pId = 1, $pType = '', $pTarget = '', $pTargetMode = '') {
if($pType != '' && $pTarget != '') {
if(strpos($pId, 'rId') === false) {
$pId = 'rId' . $pId;
}
// Write relationship if ($pTargetMode != '') {
$objWriter->startElement('Relationship'); $objWriter->writeAttribute('TargetMode', $pTargetMode);
$objWriter->writeAttribute('Id', $pId); }
$objWriter->writeAttribute('Type', $pType);
$objWriter->writeAttribute('Target', $pTarget);
if($pTargetMode != '') { $objWriter->endElement();
$objWriter->writeAttribute('TargetMode', $pTargetMode); } else {
} throw new Exception("Invalid parameters passed.");
}
$objWriter->endElement(); }
} else {
throw new Exception("Invalid parameters passed.");
}
}
} }

540
Classes/PHPWord/Writer/Word2007/Styles.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,327 +20,333 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Class PHPWord_Writer_Word2007_Styles
*/
class PHPWord_Writer_Word2007_Styles extends PHPWord_Writer_Word2007_Base
{
class PHPWord_Writer_Word2007_Styles extends PHPWord_Writer_Word2007_Base { private $_document;
private $_document; public function writeStyles(PHPWord $pPHPWord = null)
{
// Create XML writer
$objWriter = null;
if ($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
public function writeStyles(PHPWord $pPHPWord = null) { $this->_document = $pPHPWord;
// Create XML writer
$objWriter = null;
if($this->getParentWriter()->getUseDiskCaching()) {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
} else {
$objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
}
$this->_document = $pPHPWord; // XML header
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
// XML header $objWriter->startElement('w:styles');
$objWriter->startDocument('1.0','UTF-8','yes');
$objWriter->startElement('w:styles'); $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
$objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
$objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); // Write DocDefaults
$objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'); $this->_writeDocDefaults($objWriter);
// Write DocDefaults
$this->_writeDocDefaults($objWriter);
// Write Style Definitions // Write Style Definitions
$styles = PHPWord_Style::getStyles(); $styles = PHPWord_Style::getStyles();
if(count($styles) > 0) { if (count($styles) > 0) {
foreach($styles as $styleName => $style) { foreach ($styles as $styleName => $style) {
if($style instanceof PHPWord_Style_Font) { if ($style instanceof PHPWord_Style_Font) {
$paragraphStyle = $style->getParagraphStyle(); $paragraphStyle = $style->getParagraphStyle();
$styleType = $style->getStyleType(); $styleType = $style->getStyleType();
$type = ($styleType == 'title') ? 'paragraph' : 'character'; $type = ($styleType == 'title') ? 'paragraph' : 'character';
if(!is_null($paragraphStyle)) { if (!is_null($paragraphStyle)) {
$type = 'paragraph'; $type = 'paragraph';
} }
$objWriter->startElement('w:style'); $objWriter->startElement('w:style');
$objWriter->writeAttribute('w:type', $type); $objWriter->writeAttribute('w:type', $type);
if($styleType == 'title') { if ($styleType == 'title') {
$arrStyle = explode('_', $styleName); $arrStyle = explode('_', $styleName);
$styleId = 'Heading'.$arrStyle[1]; $styleId = 'Heading' . $arrStyle[1];
$styleName = 'heading '.$arrStyle[1]; $styleName = 'heading ' . $arrStyle[1];
$styleLink = 'Heading'.$arrStyle[1].'Char'; $styleLink = 'Heading' . $arrStyle[1] . 'Char';
$objWriter->writeAttribute('w:styleId', $styleId); $objWriter->writeAttribute('w:styleId', $styleId);
$objWriter->startElement('w:link'); $objWriter->startElement('w:link');
$objWriter->writeAttribute('w:val', $styleLink); $objWriter->writeAttribute('w:val', $styleLink);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:name'); $objWriter->startElement('w:name');
$objWriter->writeAttribute('w:val', $styleName); $objWriter->writeAttribute('w:val', $styleName);
$objWriter->endElement(); $objWriter->endElement();
if(!is_null($paragraphStyle)) { if (!is_null($paragraphStyle)) {
$this->_writeParagraphStyle($objWriter, $paragraphStyle); $this->_writeParagraphStyle($objWriter, $paragraphStyle);
} }
$this->_writeTextStyle($objWriter, $style); $this->_writeTextStyle($objWriter, $style);
$objWriter->endElement(); $objWriter->endElement();
} elseif($style instanceof PHPWord_Style_Paragraph) { } elseif ($style instanceof PHPWord_Style_Paragraph) {
$objWriter->startElement('w:style'); $objWriter->startElement('w:style');
$objWriter->writeAttribute('w:type', 'paragraph'); $objWriter->writeAttribute('w:type', 'paragraph');
$objWriter->writeAttribute('w:customStyle', '1'); $objWriter->writeAttribute('w:customStyle', '1');
$objWriter->writeAttribute('w:styleId', $styleName); $objWriter->writeAttribute('w:styleId', $styleName);
$objWriter->startElement('w:name'); $objWriter->startElement('w:name');
$objWriter->writeAttribute('w:val', $styleName); $objWriter->writeAttribute('w:val', $styleName);
$objWriter->endElement(); $objWriter->endElement();
$this->_writeParagraphStyle($objWriter, $style); $this->_writeParagraphStyle($objWriter, $style);
$objWriter->endElement(); $objWriter->endElement();
} elseif($style instanceof PHPWord_Style_TableFull) { } elseif ($style instanceof PHPWord_Style_TableFull) {
$objWriter->startElement('w:style'); $objWriter->startElement('w:style');
$objWriter->writeAttribute('w:type', 'table'); $objWriter->writeAttribute('w:type', 'table');
$objWriter->writeAttribute('w:customStyle', '1'); $objWriter->writeAttribute('w:customStyle', '1');
$objWriter->writeAttribute('w:styleId', $styleName); $objWriter->writeAttribute('w:styleId', $styleName);
$objWriter->startElement('w:name'); $objWriter->startElement('w:name');
$objWriter->writeAttribute('w:val', $styleName); $objWriter->writeAttribute('w:val', $styleName);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:uiPriority'); $objWriter->startElement('w:uiPriority');
$objWriter->writeAttribute('w:val', '99'); $objWriter->writeAttribute('w:val', '99');
$objWriter->endElement(); $objWriter->endElement();
$this->_writeFullTableStyle($objWriter, $style); $this->_writeFullTableStyle($objWriter, $style);
$objWriter->endElement(); $objWriter->endElement();
} }
} }
} }
$objWriter->endElement(); // w:styles $objWriter->endElement(); // w:styles
// Return // Return
return $objWriter->getData(); return $objWriter->getData();
} }
private function _writeFullTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_TableFull $style) { private function _writeFullTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_TableFull $style)
{
$brdSz = $style->getBorderSize(); $brdSz = $style->getBorderSize();
$brdCol = $style->getBorderColor(); $brdCol = $style->getBorderColor();
$bgColor = $style->getBgColor(); $bgColor = $style->getBgColor();
$cellMargin = $style->getCellMargin(); $cellMargin = $style->getCellMargin();
$bTop = (!is_null($brdSz[0])) ? true : false; $bTop = (!is_null($brdSz[0])) ? true : false;
$bLeft = (!is_null($brdSz[1])) ? true : false; $bLeft = (!is_null($brdSz[1])) ? true : false;
$bRight = (!is_null($brdSz[2])) ? true : false; $bRight = (!is_null($brdSz[2])) ? true : false;
$bBottom = (!is_null($brdSz[3])) ? true : false; $bBottom = (!is_null($brdSz[3])) ? true : false;
$bInsH = (!is_null($brdSz[4])) ? true : false; $bInsH = (!is_null($brdSz[4])) ? true : false;
$bInsV = (!is_null($brdSz[5])) ? true : false; $bInsV = (!is_null($brdSz[5])) ? true : false;
$borders = ($bTop || $bLeft || $bRight || $bBottom || $bInsH || $bInsV) ? true : false; $borders = ($bTop || $bLeft || $bRight || $bBottom || $bInsH || $bInsV) ? true : false;
$mTop = (!is_null($cellMargin[0])) ? true : false; $mTop = (!is_null($cellMargin[0])) ? true : false;
$mLeft = (!is_null($cellMargin[1])) ? true : false; $mLeft = (!is_null($cellMargin[1])) ? true : false;
$mRight = (!is_null($cellMargin[2])) ? true : false; $mRight = (!is_null($cellMargin[2])) ? true : false;
$mBottom = (!is_null($cellMargin[3])) ? true : false; $mBottom = (!is_null($cellMargin[3])) ? true : false;
$margins = ($mTop || $mLeft || $mRight || $mBottom) ? true : false; $margins = ($mTop || $mLeft || $mRight || $mBottom) ? true : false;
$objWriter->startElement('w:tblPr'); $objWriter->startElement('w:tblPr');
if($margins) { if ($margins) {
$objWriter->startElement('w:tblCellMar'); $objWriter->startElement('w:tblCellMar');
if($mTop) { if ($mTop) {
echo $margins[0]; echo $margins[0];
$objWriter->startElement('w:top'); $objWriter->startElement('w:top');
$objWriter->writeAttribute('w:w', $cellMargin[0]); $objWriter->writeAttribute('w:w', $cellMargin[0]);
$objWriter->writeAttribute('w:type', 'dxa'); $objWriter->writeAttribute('w:type', 'dxa');
$objWriter->endElement(); $objWriter->endElement();
} }
if($mLeft) { if ($mLeft) {
$objWriter->startElement('w:left'); $objWriter->startElement('w:left');
$objWriter->writeAttribute('w:w', $cellMargin[1]); $objWriter->writeAttribute('w:w', $cellMargin[1]);
$objWriter->writeAttribute('w:type', 'dxa'); $objWriter->writeAttribute('w:type', 'dxa');
$objWriter->endElement(); $objWriter->endElement();
} }
if($mRight) { if ($mRight) {
$objWriter->startElement('w:right'); $objWriter->startElement('w:right');
$objWriter->writeAttribute('w:w', $cellMargin[2]); $objWriter->writeAttribute('w:w', $cellMargin[2]);
$objWriter->writeAttribute('w:type', 'dxa'); $objWriter->writeAttribute('w:type', 'dxa');
$objWriter->endElement(); $objWriter->endElement();
} }
if($mBottom) { if ($mBottom) {
$objWriter->startElement('w:bottom'); $objWriter->startElement('w:bottom');
$objWriter->writeAttribute('w:w', $cellMargin[3]); $objWriter->writeAttribute('w:w', $cellMargin[3]);
$objWriter->writeAttribute('w:type', 'dxa'); $objWriter->writeAttribute('w:type', 'dxa');
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
} }
if($borders) { if ($borders) {
$objWriter->startElement('w:tblBorders'); $objWriter->startElement('w:tblBorders');
if($bTop) { if ($bTop) {
$objWriter->startElement('w:top'); $objWriter->startElement('w:top');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[0]); $objWriter->writeAttribute('w:sz', $brdSz[0]);
$objWriter->writeAttribute('w:color', $brdCol[0]); $objWriter->writeAttribute('w:color', $brdCol[0]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bLeft) { if ($bLeft) {
$objWriter->startElement('w:left'); $objWriter->startElement('w:left');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[1]); $objWriter->writeAttribute('w:sz', $brdSz[1]);
$objWriter->writeAttribute('w:color', $brdCol[1]); $objWriter->writeAttribute('w:color', $brdCol[1]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bRight) { if ($bRight) {
$objWriter->startElement('w:right'); $objWriter->startElement('w:right');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[2]); $objWriter->writeAttribute('w:sz', $brdSz[2]);
$objWriter->writeAttribute('w:color', $brdCol[2]); $objWriter->writeAttribute('w:color', $brdCol[2]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bBottom) { if ($bBottom) {
$objWriter->startElement('w:bottom'); $objWriter->startElement('w:bottom');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[3]); $objWriter->writeAttribute('w:sz', $brdSz[3]);
$objWriter->writeAttribute('w:color', $brdCol[3]); $objWriter->writeAttribute('w:color', $brdCol[3]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bInsH) { if ($bInsH) {
$objWriter->startElement('w:insideH'); $objWriter->startElement('w:insideH');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[4]); $objWriter->writeAttribute('w:sz', $brdSz[4]);
$objWriter->writeAttribute('w:color', $brdCol[4]); $objWriter->writeAttribute('w:color', $brdCol[4]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bInsV) { if ($bInsV) {
$objWriter->startElement('w:insideV'); $objWriter->startElement('w:insideV');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[5]); $objWriter->writeAttribute('w:sz', $brdSz[5]);
$objWriter->writeAttribute('w:color', $brdCol[5]); $objWriter->writeAttribute('w:color', $brdCol[5]);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
if(!is_null($bgColor)) { if (!is_null($bgColor)) {
$objWriter->startElement('w:tcPr'); $objWriter->startElement('w:tcPr');
$objWriter->startElement('w:shd'); $objWriter->startElement('w:shd');
$objWriter->writeAttribute('w:val', 'clear'); $objWriter->writeAttribute('w:val', 'clear');
$objWriter->writeAttribute('w:color', 'auto'); $objWriter->writeAttribute('w:color', 'auto');
$objWriter->writeAttribute('w:fill', $bgColor); $objWriter->writeAttribute('w:fill', $bgColor);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
// First Row // First Row
$firstRow = $style->getFirstRow(); $firstRow = $style->getFirstRow();
if(!is_null($firstRow)) { if (!is_null($firstRow)) {
$this->_writeRowStyle($objWriter, 'firstRow', $firstRow); $this->_writeRowStyle($objWriter, 'firstRow', $firstRow);
} }
} }
private function _writeRowStyle(PHPWord_Shared_XMLWriter $objWriter = null, $type, PHPWord_Style_TableFull $style) { private function _writeRowStyle(PHPWord_Shared_XMLWriter $objWriter = null, $type, PHPWord_Style_TableFull $style)
$brdSz = $style->getBorderSize(); {
$brdCol = $style->getBorderColor(); $brdSz = $style->getBorderSize();
$bgColor = $style->getBgColor(); $brdCol = $style->getBorderColor();
$bgColor = $style->getBgColor();
$bTop = (!is_null($brdSz[0])) ? true : false; $bTop = (!is_null($brdSz[0])) ? true : false;
$bLeft = (!is_null($brdSz[1])) ? true : false; $bLeft = (!is_null($brdSz[1])) ? true : false;
$bRight = (!is_null($brdSz[2])) ? true : false; $bRight = (!is_null($brdSz[2])) ? true : false;
$bBottom = (!is_null($brdSz[3])) ? true : false; $bBottom = (!is_null($brdSz[3])) ? true : false;
$borders = ($bTop || $bLeft || $bRight || $bBottom) ? true : false; $borders = ($bTop || $bLeft || $bRight || $bBottom) ? true : false;
$objWriter->startElement('w:tblStylePr'); $objWriter->startElement('w:tblStylePr');
$objWriter->writeAttribute('w:type', $type); $objWriter->writeAttribute('w:type', $type);
$objWriter->startElement('w:tcPr'); $objWriter->startElement('w:tcPr');
if(!is_null($bgColor)) { if (!is_null($bgColor)) {
$objWriter->startElement('w:shd'); $objWriter->startElement('w:shd');
$objWriter->writeAttribute('w:val', 'clear'); $objWriter->writeAttribute('w:val', 'clear');
$objWriter->writeAttribute('w:color', 'auto'); $objWriter->writeAttribute('w:color', 'auto');
$objWriter->writeAttribute('w:fill', $bgColor); $objWriter->writeAttribute('w:fill', $bgColor);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->startElement('w:tcBorders'); $objWriter->startElement('w:tcBorders');
if($bTop) { if ($bTop) {
$objWriter->startElement('w:top'); $objWriter->startElement('w:top');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[0]); $objWriter->writeAttribute('w:sz', $brdSz[0]);
$objWriter->writeAttribute('w:color', $brdCol[0]); $objWriter->writeAttribute('w:color', $brdCol[0]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bLeft) { if ($bLeft) {
$objWriter->startElement('w:left'); $objWriter->startElement('w:left');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[1]); $objWriter->writeAttribute('w:sz', $brdSz[1]);
$objWriter->writeAttribute('w:color', $brdCol[1]); $objWriter->writeAttribute('w:color', $brdCol[1]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bRight) { if ($bRight) {
$objWriter->startElement('w:right'); $objWriter->startElement('w:right');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[2]); $objWriter->writeAttribute('w:sz', $brdSz[2]);
$objWriter->writeAttribute('w:color', $brdCol[2]); $objWriter->writeAttribute('w:color', $brdCol[2]);
$objWriter->endElement(); $objWriter->endElement();
} }
if($bBottom) { if ($bBottom) {
$objWriter->startElement('w:bottom'); $objWriter->startElement('w:bottom');
$objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:val', 'single');
$objWriter->writeAttribute('w:sz', $brdSz[3]); $objWriter->writeAttribute('w:sz', $brdSz[3]);
$objWriter->writeAttribute('w:color', $brdCol[3]); $objWriter->writeAttribute('w:color', $brdCol[3]);
$objWriter->endElement(); $objWriter->endElement();
} }
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
private function _writeDocDefaults(PHPWord_Shared_XMLWriter $objWriter = null) { private function _writeDocDefaults(PHPWord_Shared_XMLWriter $objWriter = null)
$fontName = $this->_document->getDefaultFontName(); {
$fontSize = $this->_document->getDefaultFontSize(); $fontName = $this->_document->getDefaultFontName();
$fontSize = $this->_document->getDefaultFontSize();
$objWriter->startElement('w:docDefaults'); $objWriter->startElement('w:docDefaults');
$objWriter->startElement('w:rPrDefault'); $objWriter->startElement('w:rPrDefault');
$objWriter->startElement('w:rPr'); $objWriter->startElement('w:rPr');
$objWriter->startElement('w:rFonts'); $objWriter->startElement('w:rFonts');
$objWriter->writeAttribute('w:ascii', $fontName); $objWriter->writeAttribute('w:ascii', $fontName);
$objWriter->writeAttribute('w:hAnsi', $fontName); $objWriter->writeAttribute('w:hAnsi', $fontName);
$objWriter->writeAttribute('w:eastAsia', $fontName); $objWriter->writeAttribute('w:eastAsia', $fontName);
$objWriter->writeAttribute('w:cs', $fontName); $objWriter->writeAttribute('w:cs', $fontName);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:sz'); $objWriter->startElement('w:sz');
$objWriter->writeAttribute('w:val', $fontSize); $objWriter->writeAttribute('w:val', $fontSize);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->startElement('w:szCs'); $objWriter->startElement('w:szCs');
$objWriter->writeAttribute('w:val', $fontSize); $objWriter->writeAttribute('w:val', $fontSize);
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
$objWriter->endElement(); $objWriter->endElement();
} }
} }
?>

37
Classes/PHPWord/Writer/Word2007/WriterPart.php Normal file → Executable file
View File

@ -2,7 +2,7 @@
/** /**
* PHPWord * PHPWord
* *
* Copyright (c) 2011 PHPWord * Copyright (c) 2013 PHPWord
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -20,24 +20,29 @@
* *
* @category PHPWord * @category PHPWord
* @package PHPWord * @package PHPWord
* @copyright Copyright (c) 010 PHPWord * @copyright Copyright (c) 2013 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version Beta 0.6.3, 08.07.2011 * @version 0.7.0
*/ */
/**
* Abstract Class PHPWord_Writer_Word2007_WriterPart
*/
abstract class PHPWord_Writer_Word2007_WriterPart
{
private $_parentWriter;
abstract class PHPWord_Writer_Word2007_WriterPart { public function setParentWriter(PHPWord_Writer_IWriter $pWriter = null)
private $_parentWriter; {
$this->_parentWriter = $pWriter;
}
public function setParentWriter(PHPWord_Writer_IWriter $pWriter = null) { public function getParentWriter()
$this->_parentWriter = $pWriter; {
} if (!is_null($this->_parentWriter)) {
return $this->_parentWriter;
public function getParentWriter() { } else {
if (!is_null($this->_parentWriter)) { throw new Exception("No parent PHPWord_Writer_IWriter assigned.");
return $this->_parentWriter; }
} else { }
throw new Exception("No parent PHPWord_Writer_IWriter assigned.");
}
}
} }

85
README.md Normal file → Executable file
View File

@ -1,9 +1,92 @@
# PHPWord - OpenXML - Read, Write and Create Word documents in PHP # PHPWord - OpenXML - Read, Write and Create Word documents in PHP
PHPWord is a library written in PHP that create word documents. PHPWord is a library written in PHP that create word documents.
No Windows operating system is needed for usage because the result are docx files (Office Open XML) that can be opened by all major office software. No Windows operating system is needed for usage because the result are docx files (Office Open XML) that can be
opened by all major office software.
## Want to contribute? ## Want to contribute?
Fork us! Fork us!
## Requirements
* PHP version 5.3.0 or higher
## License ## License
PHPWord is licensed under [LGPL (GNU LESSER GENERAL PUBLIC LICENSE)](https://github.com/PHPOffice/PHPWord/blob/master/license.md) PHPWord is licensed under [LGPL (GNU LESSER GENERAL PUBLIC LICENSE)](https://github.com/PHPOffice/PHPWord/blob/master/license.md)
## Installation
It is recommended that you install the PHPWord library [through composer](http://getcomposer.org/). To do so, add
the following lines to your ``composer.json``.
```json
{
"require": {
"phpoffice/phpword": "dev-master"
}
}
```
## Usage
The following is a basic example of the PHPWord library.
```php
$PHPWord = new PHPWord();
// Every element you want to append to the word document is placed in a section. So you need a section:
$section = $PHPWord->createSection();
// After creating a section, you can append elements:
$section->addText('Hello world!');
// You can directly style your text by giving the addText function an array:
$section->addText('Hello world! I am formatted.', array('name'=>'Tahoma', 'size'=>16, 'bold'=>true));
// If you often need the same style again you can create a user defined style to the word document
// and give the addText function the name of the style:
$PHPWord->addFontStyle('myOwnStyle', array('name'=>'Verdana', 'size'=>14, 'color'=>'1B2232'));
$section->addText('Hello world! I am formatted by a user defined style', 'myOwnStyle');
// You can also putthe appended element to local object an call functions like this:
$myTextElement = $section->addText('Hello World!');
$myTextElement->setBold();
$myTextElement->setName('Verdana');
$myTextElement->setSize(22);
// At least write the document to webspace:
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('helloWorld.docx');
```
## Images
You can add images easily using the following example.
```php
$section = $PHPWord->createSection();
$section->addImage('mars.jpg');
```
Images settings include:
* ``width`` width in pixels
* ``height`` height in pixels
* ``align`` image alignment, __left__, __right__ or __center__
* ``marginTop`` top margin in inches, can be negative
* ``marginLeft`` left margin in inches, can be negative
* ``wrappingStyle`` can be inline, __square__, __tight__, __behind__, __infront__
To add an image with settings, consider the following example.
```php
$section->addImage(
'mars.jpg',
array(
'width' => 100,
'height' => 100,
'marginTop' => -1,
'marginLeft' => -1,
wrappingStyle => 'behind'
)
);
```

3
changelog.txt Normal file → Executable file
View File

@ -22,7 +22,7 @@
* @version ##VERSION##, ##DATE## * @version ##VERSION##, ##DATE##
************************************************************************************** **************************************************************************************
Fixed in branch for release 0.7 : Fixed in branch for release 0.7.0 :
- Bugfix: (RomanSyroeshko) GH-32 - "Warning: Invalid error type specified in ...\PHPWord.php on line 226" is thrown when the specified template file is not found - Bugfix: (RomanSyroeshko) GH-32 - "Warning: Invalid error type specified in ...\PHPWord.php on line 226" is thrown when the specified template file is not found
- Bugfix: (RomanSyroeshko) GH-34 - PHPWord_Shared_String.IsUTF8 returns FALSE for Cyrillic UTF-8 input - Bugfix: (RomanSyroeshko) GH-34 - PHPWord_Shared_String.IsUTF8 returns FALSE for Cyrillic UTF-8 input
- Bugfix: (RomanSyroeshko) GH-38 - Temporary files naming logic in PHPWord_Template can lead to a collision - Bugfix: (RomanSyroeshko) GH-38 - Temporary files naming logic in PHPWord_Template can lead to a collision
@ -38,3 +38,4 @@ Fixed in branch for release 0.7 :
- General: (Progi1984) - Added PHPWord_Exception and exception when could not copy the template - General: (Progi1984) - Added PHPWord_Exception and exception when could not copy the template
- General: (Progi1984) - IMPROVED : Moved examples out of Classes directory - General: (Progi1984) - IMPROVED : Moved examples out of Classes directory
- General: (Esmeraldo) CP-49 - IMPROVED : Advanced string replace in setValue for Template - General: (Esmeraldo) CP-49 - IMPROVED : Advanced string replace in setValue for Template
- Feature: (gavroche) - Added support for image wrapping style

View File

@ -1,7 +1,7 @@
{ {
"name": "phpoffice/phpword", "name": "phpoffice/phpword",
"description": "PHPWord - Read, Create and Write Word documents in PHP", "description": "PHPWord - Read, Create and Write Word documents in PHP",
"keywords": ["PHP","Word", "Writer", "docx","doc","rtf"], "keywords": ["PHP", "Word", "Writer", "docx", "doc", "rtf"],
"homepage": "http://phpoffice.github.io", "homepage": "http://phpoffice.github.io",
"type": "library", "type": "library",
"license": "LGPL", "license": "LGPL",
@ -17,7 +17,6 @@
"name": "Franck Lefevre", "name": "Franck Lefevre",
"homepage": "http://blog.rootslabs.net" "homepage": "http://blog.rootslabs.net"
} }
], ],
"require": { "require": {
"php": ">=5.3.0", "php": ">=5.3.0",

16
phpunit.xml.dist Normal file
View File

@ -0,0 +1,16 @@
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="test/bootstrap.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="PHPWord Test Suite">
<directory>./test/PHPWord/</directory>
</testsuite>
</testsuites>
</phpunit>

1
samples/Sample_01_SimpleText.php Normal file → Executable file
View File

@ -49,4 +49,3 @@ echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 102
// Echo done // Echo done
echo date('H:i:s') , " Done writing file" , EOL; echo date('H:i:s') , " Done writing file" , EOL;
?>

1
samples/Sample_02_TabStops.php Normal file → Executable file
View File

@ -61,4 +61,3 @@ echo date('H:i:s') , ' Peak memory usage: ' , (memory_get_peak_usage(true) / 102
// Echo done // Echo done
echo date('H:i:s') , ' Done writing file' , EOL; echo date('H:i:s') , ' Done writing file' , EOL;
?>

1
samples/old/AdvancedTable.php Normal file → Executable file
View File

@ -50,4 +50,3 @@ for($i = 1; $i <= 10; $i++) {
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('AdvancedTable.docx'); $objWriter->save('AdvancedTable.docx');
?>

1
samples/old/BasicTable.php Normal file → Executable file
View File

@ -23,4 +23,3 @@ for($r = 1; $r <= 10; $r++) { // Loop through rows
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('BasicTable.docx'); $objWriter->save('BasicTable.docx');
?>

1
samples/old/HeaderFooter.php Normal file → Executable file
View File

@ -54,4 +54,3 @@ $section2->addText('Some text...');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('HeaderFooter.docx'); $objWriter->save('HeaderFooter.docx');
?>

1
samples/old/Image.php Normal file → Executable file
View File

@ -21,4 +21,3 @@ $section->addImage('_mars.jpg', array('width'=>100, 'height'=>100, 'align'=>'rig
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Image.docx'); $objWriter->save('Image.docx');
?>

1
samples/old/Link.php Normal file → Executable file
View File

@ -21,4 +21,3 @@ $section->addLink('http://www.yahoo.com', null, 'myOwnLinkStyle');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Link.docx'); $objWriter->save('Link.docx');
?>

1
samples/old/ListItem.php Normal file → Executable file
View File

@ -44,4 +44,3 @@ $section->addListItem('List Item 7', 0, 'myOwnStyle', $listStyle, 'P-Style');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('ListItem.docx'); $objWriter->save('ListItem.docx');
?>

1
samples/old/Object.php Normal file → Executable file
View File

@ -17,4 +17,3 @@ $section->addObject('_sheet.xls');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Object.docx'); $objWriter->save('Object.docx');
?>

1
samples/old/Section.php Normal file → Executable file
View File

@ -23,4 +23,3 @@ $section->addText('This section uses other margins.');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Section.docx'); $objWriter->save('Section.docx');
?>

1
samples/old/Template.php Normal file → Executable file
View File

@ -20,4 +20,3 @@ $document->setValue('weekday', date('l'));
$document->setValue('time', date('H:i')); $document->setValue('time', date('H:i'));
$document->save('Solarsystem.docx'); $document->save('Solarsystem.docx');
?>

1
samples/old/Textrun.php Normal file → Executable file
View File

@ -29,4 +29,3 @@ $textrun->addLink('http://www.bing.com', null, 'NLink');
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Textrun.docx'); $objWriter->save('Textrun.docx');
?>

1
samples/old/TitleTOC.php Normal file → Executable file
View File

@ -46,4 +46,3 @@ echo 'Note: The pagenumbers in the TOC doesnt refresh automatically.';
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('TitleTOC.docx'); $objWriter->save('TitleTOC.docx');
?>

1
samples/old/Watermark.php Normal file → Executable file
View File

@ -18,4 +18,3 @@ $section->addText('The header reference to the current section includes a waterm
// Save File // Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Watermark.docx'); $objWriter->save('Watermark.docx');
?>

113
test/PHPWord/TestHelper.php Normal file
View File

@ -0,0 +1,113 @@
<?php
namespace PHPWord\Tests;
use PHPWord;
use DOMDocument;
class TestHelper
{
/**
* @param \PHPWord $PHPWord
* @return \PHPWord\Tests\Doc
*/
public static function getDocument(PHPWord $PHPWord)
{
$objWriter = \PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save(__DIR__ . '/Tests/_files/test.docx');
$zip = new \ZipArchive;
$res = $zip->open(__DIR__ . '/Tests/_files/test.docx');
if ($res === true) {
$zip->extractTo(__DIR__ . '/Tests/_files/test/');
$zip->close();
}
return new Doc(__DIR__ . '/Tests/_files/test/');
}
public static function clear()
{
unlink(__DIR__ . '/Tests/_files/test.docx');
self::deleteDir(__DIR__ . '/Tests/_files/test/');
}
/**
* @param string $dir
*/
public static function deleteDir($dir)
{
foreach (scandir($dir) as $file) {
if ($file === '.' || $file === '..') {
continue;
} else if (is_file($dir . "/" . $file)) {
unlink($dir . "/" . $file);
} else if (is_dir($dir . "/" . $file)) {
self::deleteDir($dir . "/" . $file);
}
}
rmdir($dir);
}
}
class Doc
{
/** @var string $path */
private $path;
/** @var \DOMDocument $dom */
private $dom;
/** @var \DOMXpath $xpath */
private $xpath;
/** @var string $file */
private $file;
/**
* @param string $path
*/
public function __construct($path)
{
$this->path = realpath($path);
}
/**
* @param string $file
* @return \DOMDocument
*/
public function getFileDom($file = 'word/document.xml')
{
if (null !== $this->dom && $file === $this->file) {
return $this->dom;
}
$this->xpath = null;
$this->file = $file;
$file = $this->path . '/' . $file;
$this->dom = new DOMDocument();
$this->dom->load($file);
return $this->dom;
}
/**
* @param string $path
* @param string $file
* @return \DOMElement
*/
public function getElement($path, $file = 'word/document.xml')
{
if ($this->dom === null || $file !== $this->file) {
$this->getFileDom($file);
}
if (null === $this->xpath) {
$this->xpath = new \DOMXpath($this->dom);
}
$elements = $this->xpath->query($path);
return $elements->item(0);
}
}

View File

@ -0,0 +1,14 @@
<?php
namespace PHPWord\Tests;
use PHPUnit_Framework_TestCase;
use PHPWord_Autoloader;
class AutoloaderTest extends PHPUnit_Framework_TestCase
{
public function testAutoload()
{
$this->assertNull(PHPWord_Autoloader::load('Foo'), 'PHPWord_Autoloader::load() is trying to load classes outside of the PHPWord namespace');
$this->assertTrue(PHPWord_Autoloader::load('PHPWord'), 'PHPWord_Autoloader::load() failed to autoload the PHPWord class');
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace PHPWord\Tests;
use PHPUnit_Framework_TestCase;
use PHPWord;
class ImageTest extends PHPUnit_Framework_TestCase
{
public function tearDown()
{
TestHelper::clear();
}
public function testImageWrappingStyleBehind()
{
$PHPWord = new PHPWord();
$section = $PHPWord->createSection(12240, 15840, 0, 0, 0, 0);
$section->addImage(
__DIR__ . '/_files/images/earth.jpg',
array(
'marginTop' => -1,
'marginLeft' => -1,
'wrappingStyle' => 'behind'
)
);
$doc = TestHelper::getDocument($PHPWord);
$element = $doc->getElement('/w:document/w:body/w:p/w:r/w:pict/v:shape');
$style = $element->getAttribute('style');
$this->assertRegExp('/z\-index:\-[0-9]*/', $style);
$this->assertRegExp('/position:absolute;/', $style);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

8
test/bootstrap.php Executable file
View File

@ -0,0 +1,8 @@
<?php
date_default_timezone_set('UTC');
require_once __DIR__ . "/../Classes/PHPWord/Autoloader.php";
PHPWord_Autoloader::Register();
require_once __DIR__ . "/PHPWord/TestHelper.php";