Created
November 22, 2012 08:42
-
-
Save sunloverz/4130031 to your computer and use it in GitHub Desktop.
createdocx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Generate a DOCX file | |
* | |
* @category Phpdocx | |
* @package create | |
* @copyright Copyright (c) 2009-2011 Narcea Producciones Multimedia S.L. | |
* (http://www.2mdc.com) | |
* @license LGPL | |
* @version 2.2 | |
* @link http://www.phpdocx.com | |
* @since File available since Release 1.0 | |
*/ | |
error_reporting(E_ALL & ~E_NOTICE); | |
require_once dirname(__FILE__) . '/AutoLoader.inc'; | |
AutoLoader::load(); | |
/** | |
* Main class. Methods and vars to generate a DOCX file | |
* | |
* @category Phpdocx | |
* @package create | |
* @copyright Copyright (c) 2009-2011 Narcea ProduCiones Multimedia S.L. | |
* (http://www.2mdc.com) | |
* @license http://www.phpdocx.com/wp-content/themes/lightword/pro_license.php | |
* @version 2.2 | |
* @link http://www.phpdocx.com | |
* @since Class available since Release 1.0 | |
*/ | |
class CreateDocx | |
{ | |
const NAMESPACEWORD = 'w'; | |
const SCHEMA_IMAGEDOCUMENT = | |
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'; | |
const SCHEMA_OFFICEDOCUMENT = | |
'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'; | |
/** | |
* | |
* @access public | |
* @static | |
* @var int | |
*/ | |
public static $intIdWord; | |
/** | |
* | |
* @access public | |
* @var string | |
*/ | |
public $graphicTemplate; | |
/** | |
* | |
* @access public | |
* @var array | |
*/ | |
public $fileGraphicTemplate; | |
/** | |
* | |
* @access public | |
* @static | |
* @var Logger | |
*/ | |
public static $log; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_contentTypeC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_defaultFont; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsAppC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsAppT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsCoreC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsCoreT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsCustomC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_docPropsCustomT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private static $_encodeUTF; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_extension; | |
/** | |
* | |
* @access private | |
* @var int | |
*/ | |
private $_idImgHeader; | |
/** | |
* | |
* @access private | |
* @var int | |
*/ | |
private $_idRels; | |
/** | |
* | |
* @access private | |
* @var array | |
*/ | |
private $_idWords; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_language; | |
/** | |
* | |
* @access private | |
* @var boolean | |
*/ | |
private $_macro; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_relsRelsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_relsRelsT; | |
/** | |
* Directory path used for temporary files | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_tempDir; | |
/** | |
* Path of temp file to use as DOCX file | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_tempFile; | |
/** | |
* Paths of temps files to use as DOCX file | |
* | |
* @access private | |
* @var array | |
*/ | |
private $_tempFileXLSX; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordDocumentC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordDocumentT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFontTableC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFontTableT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFooterC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFooterT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFootnotesC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordFootnotesT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordHeaderC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordHeaderT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordNumberingC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordNumberingT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsDocumentRelsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsDocumentRelsT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsFooterRelsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsFooterRelsT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsHeaderRelsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordRelsHeaderRelsT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordSettingsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordSettingsT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordStylesC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordStylesT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordThemeThemeT; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordThemeThemeC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordWebSettingsC; | |
/** | |
* | |
* @access private | |
* @var string | |
*/ | |
private $_wordWebSettingsT; | |
/** | |
* | |
* @access private | |
* @var ZipArchive | |
*/ | |
private $_zipDocx; | |
/** | |
* Construct | |
* | |
* @access public | |
* @param string $extension File extension. Optional, docx as default | |
*/ | |
public function __construct($extension = 'docx') | |
{ | |
$this->_idRels = array(); | |
$this->_idWords = array(); | |
Logger::configure(dirname(__FILE__) . '/conf/log4php.properties'); | |
self::$log = Logger::getLogger('phpdocx_error'); | |
$this->_idImgHeader = 1; | |
$this->_idRels = 1; | |
self::$intIdWord = 0; | |
self::$_encodeUTF = 0; | |
$this->_language = 'en-US'; | |
$this->graphicTemplate = array(); | |
$this->fileGraphicTemplate = array(); | |
$this->_zipDocx = new ZipArchive(); | |
$this->_tempDir = $this->getTempDir(); | |
$this->_tempFile = tempnam($this->_tempDir, 'document'); | |
$this->_zipDocx->open($this->_tempFile, ZipArchive::OVERWRITE); | |
$this->_extension = $extension; | |
$this->_relsRelsC = ''; | |
$this->_relsRelsT = ''; | |
$this->_contentTypeC = ''; | |
$this->_docPropsAppC = ''; | |
$this->_docPropsAppT = ''; | |
$this->_docPropsCoreC = ''; | |
$this->_docPropsCoreT = ''; | |
$this->_docPropsCustomC = ''; | |
$this->_docPropsCustomT = ''; | |
$this->_tempFileXLSX = array(); | |
$this->_wordDocumentT = ''; | |
$this->_wordDocumentC = ''; | |
$this->_wordFontTableT = ''; | |
$this->_wordFontTableC = ''; | |
$this->_wordFooterC = ''; | |
$this->_wordFooterT = ''; | |
$this->_wordHeaderC = ''; | |
$this->_wordHeaderT = ''; | |
$this->_wordNumberingC; | |
$this->_wordNumberingT; | |
$this->_wordRelsDocumentRelsC = ''; | |
$this->_wordRelsDocumentRelsT = ''; | |
$this->_wordRelsHeaderRelsC = ''; | |
$this->_wordRelsHeaderRelsT = ''; | |
$this->_wordRelsFooterRelsC = ''; | |
$this->_wordRelsFooterRelsT = ''; | |
$this->_xmlWordSettings = ''; | |
$this->_wordSettingsT = ''; | |
$this->_wordSettingsC = ''; | |
$this->_xmlWordStyles = ''; | |
$this->_wordStylesT = ''; | |
$this->_wordStylesC = ''; | |
$this->_wordThemeThemeT = ''; | |
$this->_wordThemeThemeC = ''; | |
$this->_macro = 0; | |
$this->_xmlWordWebSettings = ''; | |
$this->generateContentType(); | |
$this->_defaultFont = ''; | |
} | |
/** | |
* Destruct | |
* | |
* @access public | |
*/ | |
public function __destruct() | |
{ | |
} | |
/** | |
* Magic method, returns current word XML | |
* | |
* @access public | |
* @return string Return current word | |
*/ | |
public function __toString() | |
{ | |
$this->generateTemplateWordDocument(); | |
return $this->_wordDocumentT; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlContentTypes($xmlContentTypes) | |
{ | |
$this->_contentTypeC = $xmlContentTypes; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlContentTypes() | |
{ | |
return $this->_contentTypeC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlRelsRels($xmlRelsRels) | |
{ | |
$this->_relsRelsC = $xmlRelsRels; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlRels_Rels() | |
{ | |
return $this->_relsRelsC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlDocPropsApp($xmlDocPropsApp) | |
{ | |
$this->_docPropsAppC = $xmlDocPropsApp; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlDocPropsApp() | |
{ | |
return $this->_docPropsAppC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlDocPropsCore($xmlDocPropsCore) | |
{ | |
$this->_docPropsCoreC = $xmlDocPropsCore; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlDocPropsCore() | |
{ | |
return $this->_docPropsCoreC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordDocument($xmlWordDocument) | |
{ | |
$this->_wordDocumentC = $xmlWordDocument; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordDocumentContent() | |
{ | |
return $this->_wordDocumentC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordEndnotes($xmlWordEndnotes) | |
{ | |
$this->_wordEndnotesC = $xmlWordEndnotes; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordEndnotes() | |
{ | |
return $this->_wordEndnotesC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordFontTable($xmlWordFontTable) | |
{ | |
$this->_wordFontTableC = $xmlWordFontTable; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordFontTable() | |
{ | |
return $this->_wordFontTableC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordFooter1($xmlWordFooter) | |
{ | |
$this->_wordFooterC = $xmlWordFooter; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordFooter1() | |
{ | |
return $this->_wordFooterC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordHeader1($xmlWordHeader) | |
{ | |
$this->_wordHeaderC = $xmlWordHeader; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordHeader1() | |
{ | |
return $this->_wordHeaderC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordRelsDocumentRels($xmlWordRelsDocumentRels) | |
{ | |
$this->_wordRelsDocumentRelsC = $xmlWordRelsDocumentRels; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordRelsDocumentRels() | |
{ | |
return $this->_wordRelsDocumentRelsC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordSettings($xmlWordSettings) | |
{ | |
$this->_wordSettingsC = $xmlWordSettings; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordSettings() | |
{ | |
return $this->_wordSettingsC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordStyles($xmlWordStyles) | |
{ | |
$this->_wordStylesC = $xmlWordStyles; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordStyles() | |
{ | |
return $this->_wordStylesC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordThemeTheme1($xmlWordThemeTheme) | |
{ | |
$this->_wordThemeThemeC = $xmlWordThemeTheme; | |
} | |
/** | |
* Getter | |
* | |
* @access public | |
*/ | |
public function getXmlWordThemeTheme1() | |
{ | |
return $this->_wordThemeThemeC; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function setXmlWordWebSettings($xmlWordWebSettings) | |
{ | |
$this->_wordWebSettingsC = $xmlWordWebSettings; | |
} | |
/** | |
* Setter | |
* | |
* @access public | |
*/ | |
public function getXmlWordWebSettings() | |
{ | |
return $this->_wordWebSettingsC; | |
} | |
/** | |
* Add a break | |
* | |
* @access public | |
* @param string $type Break type | |
* Values: 'line', 'page' | |
*/ | |
public function addBreak($type = '') | |
{ | |
$page = CreatePage::getInstance(); | |
$page->generatePageBreak($type); | |
$this->_wordDocumentC .= (string) $page; | |
} | |
/** | |
* Add a new font | |
* | |
* @access public | |
* @param array $fonts Fonts to add | |
*/ | |
public function addFont($fonts) | |
{ | |
$font = CreateFontTable::getInstance(); | |
$font->createFont($fonts); | |
$this->_wordFontTableC .= (string) $font; | |
} | |
/** | |
* Add a footer | |
* | |
* @access public | |
* @param string $dat Text to add | |
* @param array $paramsFooter Parameters of footer | |
* Values: 'pager' (true, false), 'pagerAlignment' (left, right, false) | |
*/ | |
public function addFooter($dat = '', $paramsFooter = '') | |
{ | |
$footer = CreateFooter::getInstance(); | |
$dat .= ' This document was created with free version of PHPdocx. | |
Pro version available.'; | |
$footer->createFooter($dat, $paramsFooter); | |
$this->_wordFooterC .= (string) $footer; | |
$this->generateOVERRIDE( | |
'/word/footer.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml' . | |
'.footer+xml' | |
); | |
} | |
/** | |
* Add a graphic | |
* | |
* @access public | |
* @param array $dats Parameters of graphic | |
* Values: 'color' (1, 2, 3...), 'cornerP' (20, 30...), | |
* 'cornerX' (20, 30...), 'cornerY' (20, 30...), 'data' (array of values), | |
* 'font' (Arial, Times New Roman...), 'groupBar' (clustered, stacked), | |
* 'jc' (center, left, right), 'showPercent' (0, 1), 'sizeX' (10, 11, | |
* 12...), 'sizeY' (10, 11, 12...), 'textWrap' (0 (inline), 1 (square), | |
* 2 (front), 3 (back), 4 (up and bottom), 5 (clear)), 'title', 'type' | |
* (pieChart, barChart, colChart) | |
*/ | |
public function addGraphic($dats) | |
{ | |
try { | |
if (isset($dats['data']) && isset($dats['type'])) { | |
self::$intIdWord++; | |
$graphic = CreateGraphic::getInstance(); | |
if ($graphic->createGraphic(self::$intIdWord, $dats) != false) { | |
$this->_zipDocx->addFromString( | |
'word/charts/chart' . self::$intIdWord . '.xml', | |
$graphic->getXmlChart() | |
); | |
$this->_wordRelsDocumentRelsC .= | |
$this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'chart', | |
'charts/chart' . self::$intIdWord . '.xml' | |
); | |
$this->_wordDocumentC .= (string) $graphic; | |
$this->generateDEFAULT('xlsx', 'application/octet-stream'); | |
$this->generateOVERRIDE( | |
'/word/charts/chart' . self::$intIdWord . '.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'drawingml.chart+xml' | |
); | |
} else { | |
throw new Exception( | |
'There was an error related to the chart.' | |
); | |
} | |
$excel = CreateXlsx::getInstance(); | |
$this->_tempFileXLSX[self::$intIdWord] = tempnam($this->_tempDir, 'documentxlsx'); | |
if ( | |
$excel->createXlsx( | |
$this->_tempFileXLSX[self::$intIdWord], | |
$dats['data'], $dats['type'] | |
) != false | |
) { | |
$this->_zipDocx->addFile( | |
$this->_tempFileXLSX[self::$intIdWord], | |
'word/embeddings/datos' . self::$intIdWord . '.xlsx' | |
); | |
$chartRels = CreateChartRels::getInstance(); | |
$chartRels->createRelationship(self::$intIdWord); | |
$this->_zipDocx->addFromString( | |
'word/charts/_rels/chart' . self::$intIdWord . | |
'.xml.rels', | |
(string) $chartRels | |
); | |
} | |
} else { | |
throw new Exception( | |
'Images must have "data" and "type" values.' | |
); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} | |
/** | |
* Add a header. | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param array $paramsHeader Parameters of header | |
*/ | |
public function addHeader($text = 'Header', $paramsHeader = '') | |
{ | |
$header = CreateHeader::getInstance(); | |
$header->createHeader($text, $paramsHeader); | |
$this->_wordHeaderC .= (string) $header; | |
$this->generateOVERRIDE( | |
'/word/header.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml.' . | |
'header+xml' | |
); | |
} | |
/** | |
* Add an image | |
* | |
* @access public | |
* @param array $dats Image to add and paramaters to use | |
* Values: 'border'(1, 2, 3...), 'borderDiscontinuous' (0, 1), | |
* 'font' (Arial, Times New Roman...), 'jc' (center, left, right), | |
* 'name', 'scaling' (50, 100), 'sizeX' (10, 11, 12...), 'sizeY' | |
* (10, 11, 12...), spacingTop (10, 11...), spacingBottom (10, 11...), | |
* spacingLeft (10, 11...), spacingRight (10, 11...), 'textWrap' | |
* (0 (inline), 1 (square), 2 (front), 3 (back), 4 (up and bottom), | |
* 5 (clear)) | |
*/ | |
public function addImage($dats = '') | |
{ | |
try { | |
if (isset($dats['name']) && file_exists($dats['name']) == 'true') { | |
$attrImage = getimagesize($dats['name']); | |
try { | |
if ($attrImage['mime'] == 'image/jpg' || | |
$attrImage['mime'] == 'image/jpeg' || | |
$attrImage['mime'] == 'image/png' || | |
$attrImage['mime'] == 'image/gif' | |
) { | |
self::$intIdWord++; | |
$image = CreateImage::getInstance(); | |
$dats['rId'] = self::$intIdWord; | |
$image->createImage($dats); | |
$this->_wordDocumentC .= (string) $image; | |
$dir = $this->parsePath($dats['name']); | |
$this->_zipDocx->addFile( | |
$dats['name'], 'word/media/image' . | |
self::$intIdWord . '.' . | |
$dir['extension'] | |
); | |
$this->generateDEFAULT( | |
$dir['extension'], $attrImage['mime'] | |
); | |
if ((string) $image != '') | |
$this->_wordRelsDocumentRelsC .= | |
$this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'image', | |
'media/image' . self::$intIdWord . '.' | |
. $dir['extension'] | |
); | |
} else { | |
throw new Exception('Image format is not supported.'); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} else { | |
throw new Exception('Image does not exist.'); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} | |
/** | |
* Add a link | |
* | |
* @access public | |
* @param string $text Text to use as link | |
* @param string $link URL link | |
* @param string $font Type of font | |
* Values: 'Arial', 'Times New Roman'... | |
*/ | |
public function addLink($text = '', $textLink = '', $font = '') | |
{ | |
$link = CreateLink::getInstance(); | |
$link->createLink($text, $textLink, $font); | |
$this->_wordDocumentC .= (string) $link; | |
} | |
/** | |
* Add a list | |
* | |
* @access public | |
* @param array $dats Values of the list | |
* @param array $paramsList Parameters to use | |
* Values: 'font' (Arial, Times New Roman...), | |
* 'val' (0 (clear, 1 (inordinate), 2(numerical)) | |
*/ | |
public function addList($dats, $paramsList = '') | |
{ | |
$list = CreateList::getInstance(); | |
$list->createList($dats, $paramsList); | |
$this->_wordDocumentC .= (string) $list; | |
} | |
/** | |
* Convert a math eq to DOCX | |
* | |
* @access public | |
* @param string $path Path to a file with math eq | |
*/ | |
public function addMathDocx($path) | |
{ | |
$package = new ZipArchive(); | |
$package->open($path); | |
$document = $package->getFromName('word/document.xml'); | |
$eqs = preg_split('/<[\/]*m:oMathPara>/', $document); | |
$this->addMathEq('<m:oMathPara>' . $eqs[1] . '</m:oMathPara>'); | |
$package->close(); | |
} | |
/** | |
* Add an existing math eq to DOCX | |
* | |
* @access public | |
* @param string $eq Math eq | |
*/ | |
public function addMathEq($eq) | |
{ | |
$this->_wordDocumentC .= '<' . CreateDocx::NAMESPACEWORD . ':p>' . | |
(string) $eq . '</' . CreateDocx::NAMESPACEWORD . ':p>'; | |
} | |
/** | |
* Add a paragraph | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param string $style Style of the paragraph | |
* @param string $align Align of the paragraph | |
* @deprecated | |
*/ | |
public function addParagraph($text, $style = '', $align = '') | |
{ | |
$paragraph = CreateText::getInstance(); | |
$paragraph->createParagraph($text, $style, $align); | |
$this->_wordDocumentC .= (string) $paragraph; | |
} | |
/** | |
* Add a table. | |
* | |
* @access public | |
* @param array $dats Values to add | |
* @param array $parameters Parameters to use | |
* Values: 'border' (none, single, double), | |
* 'border_color' (ffffff, ff0000), 'border_spacing' (0, 1, 2...), | |
* 'border_sz' (10, 11...), 'font' (Arial, Times New Roman...), | |
* 'jc' (center, left, right), 'size_col' (1200, 1300...), | |
* 'TBLSTYLEval' (Cuadrculamedia3-nfasis1, Sombreadomedio1, | |
* Tablaconcuadrcula, TableGrid) | |
*/ | |
public function addTable($dats, $parameters = '') | |
{ | |
$table = CreateTable::getInstance(); | |
$table->createTable($dats, $parameters); | |
$this->_wordDocumentC .= (string) $table; | |
} | |
/** | |
* Add a table of contents (TOC) | |
* | |
* @access public | |
* @param string $font Set font type | |
* Values: 'Arial', 'Times New Roman'... | |
*/ | |
public function addTableContents($font = '') | |
{ | |
$tableContents = CreateTableContents::getInstance(); | |
$tableContents->createTableContents($font); | |
$this->_wordDocumentC .= (string) $tableContents; | |
} | |
/** | |
* Add a text | |
* | |
* @access public | |
* @param mixed $value Text or array of texts to add | |
* @param array $style Style of text | |
* Values: 'b' (single), 'color' (ffffff, ff0000...), | |
* 'font' (Arial, Times New Roman...), 'i' (single), | |
* 'jc' (both, center, distribute, left, right), | |
* 'pageBreakBefore' (on, off), 'sz' (1, 2, 3...), | |
* 'u' (dash, dotted, double, single, wave, words), | |
* 'widowControl' (on, off), 'wordWrap' (on, off) | |
*/ | |
public function addText($value, $style = '') | |
{ | |
$text = CreateText::getInstance(); | |
$text->createText($value, $style); | |
$this->_wordDocumentC .= (string) $text; | |
} | |
/** | |
* Add a title | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param array $style Style of title | |
* Values: 'b' (single), 'color' (ffffff, ff0000...), | |
* 'font' (Arial, Times New Roman...), 'i' (single), | |
* 'jc' (both, center, distribute, left, right), | |
* 'pageBreakBefore' (on, off), 'sz' (1, 2, 3...), | |
* 'u' (dash, dotted, double, single, wave, words), | |
* 'widowControl' (on, off), 'wordWrap' (on, off) | |
*/ | |
public function addTitle($text, $style = '') | |
{ | |
$title = CreateText::getInstance(); | |
$title->createTitle($text, $style); | |
$this->_wordDocumentC .= (string) $title; | |
} | |
/** | |
* Generate a new DOCX file | |
* | |
* @access public | |
* @param string $args[0] File name | |
* @param string $args[1] Page style | |
* Values: 'bottom' (4000, 4001...), 'left' (4000, 4001...), | |
* 'orient' (landscape), 'right' (4000, 4001), 'titlePage' (1), | |
* 'top' (4000, 4001) | |
*/ | |
public function createDocx() | |
{ | |
$args = func_get_args(); | |
if (!empty($args[0])) { | |
$fileName = $args[0]; | |
} else { | |
$fileName = 'document'; | |
} | |
$this->generateTemplateRelsRels(); | |
$this->_zipDocx->addFromString('_rels/.rels', $this->_relsRelsT); | |
$this->generateTemplateDocPropsApp(); | |
$this->_zipDocx->addFromString( | |
'docProps/app.xml', $this->_docPropsAppT | |
); | |
$this->generateTemplateDocPropsCore(); | |
$this->_zipDocx->addFromString( | |
'docProps/core.xml', $this->_docPropsCoreT | |
); | |
$this->addStyle($this->_language); | |
$this->generateTemplateWordStyles(); | |
$this->_zipDocx->addFromString( | |
'word/styles.xml', $this->_wordStylesT | |
); | |
$this->addSettings(); | |
$this->generateTemplateWordSettings(); | |
$this->_zipDocx->addFromString( | |
'word/settings.xml', $this->_wordSettingsT | |
); | |
$this->addWebSettings(); | |
$this->generateTemplateWordWebSettings(); | |
$this->_zipDocx->addFromString( | |
'word/webSettings.xml', $this->_wordWebSettingsT | |
); | |
if (empty($this->_wordFooterC)) { | |
$paramsFooter = array( | |
'pagerAlignment' => 'right', | |
'font' => 'Times New Roman' | |
); | |
$this->addFooter('', $paramsFooter); | |
} | |
$this->generateTemplateWordFooter(); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/footer.xml', utf8_encode($this->_wordFooterT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/footer.xml', $this->_wordFooterT | |
); | |
} | |
if (!empty($this->_wordHeaderC)) { | |
$this->generateTemplateWordHeader(); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/header.xml', utf8_encode($this->_wordHeaderT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/header.xml', $this->_wordHeaderT | |
); | |
} | |
} | |
if (!empty($this->_wordRelsHeaderRelsC)) { | |
$this->generateTemplateWordRelsHeaderRels(); | |
$this->_zipDocx->addFromString( | |
'word/_rels/header.xml.rels', $this->_wordRelsHeaderRelsT | |
); | |
} | |
$this->generateOVERRIDE( | |
'/word/document.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'wordprocessingml.document.main+xml' | |
); | |
$this->generateTemplateContentType(); | |
$this->_zipDocx->addFromString( | |
'[Content_Types].xml', | |
$this->_wordContentTypeT | |
); | |
$this->generateTemplateWordNumbering(); | |
$this->_zipDocx->addFromString( | |
'word/numbering.xml', $this->_wordNumberingT | |
); | |
$this->generateDefaultWordRels(); | |
if (!empty($this->_wordRelsDocumentRelsC)) { | |
$this->generateTemplateWordRelsDocumentRels(); | |
$this->_zipDocx->addFromString( | |
'word/_rels/document.xml.rels', | |
$this->_wordRelsDocumentRelsT | |
); | |
} | |
$arrArgsPage = array(); | |
if (isset($args[1])) { | |
$arrArgsPage = $args[1]; | |
} | |
$this->generateTemplateWordDocument($arrArgsPage); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/document.xml', utf8_encode($this->_wordDocumentT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/document.xml', $this->_wordDocumentT | |
); | |
} | |
$this->generateDefaultFonts(); | |
$this->generateTemplateWordFontTable(); | |
$this->_zipDocx->addFromString( | |
'word/fontTable.xml', $this->_wordFontTableT | |
); | |
$this->generateTemplateWordThemeTheme1(); | |
$this->_zipDocx->addFromString( | |
'word/theme/theme1.xml', $this->_wordThemeThemeT | |
); | |
$this->_zipDocx->close(); | |
$arrpathFile = pathinfo($fileName); | |
copy( | |
$this->_tempFile, | |
$fileName . '.' . $this->_extension | |
); | |
} | |
/** | |
* | |
* Transform a word document to a text file | |
* | |
* @example ../examples/easy/Docx2Txt.php | |
* @param string $path. Path to the docx from which we wish to import the content | |
* @param string $path. Path to the text file output | |
* @param array styles. Declares if we want to change the default styles of phpdocx | |
* keys: table => true/false,list => true/false, paragraph => true/false, footnote => true/false, endnote => true/false, chart => (0=false,1=array,2=table) | |
*/ | |
public static function docx2txt($from, $to, $options = array()) { | |
$text = new Docx2Text($options); | |
$text->setDocx($from); | |
$text->extract($to); | |
} | |
/** | |
* Change the default font | |
* | |
* @access public | |
* @param string $font The new font | |
* Values: 'Arial', 'Times New Roman'... | |
*/ | |
public function setDefaultFont($font) | |
{ | |
$this->_defaultFont = $font; | |
} | |
/** | |
* Transform to UTF-8 charset | |
* | |
* @access public | |
*/ | |
public function setEncodeUTF8() | |
{ | |
self::$_encodeUTF = 1; | |
} | |
/** | |
* Change default language. | |
* @param $lang Locale: en-US, es-ES... | |
* @access public | |
*/ | |
public function setLanguage($lang = 'en-US') | |
{ | |
$this->_language = $lang; | |
} | |
/*** Old API. It will be remove in next version ***/ | |
/** | |
* Add a break | |
* | |
* @access public | |
* @param string $type Break type | |
* @deprecated | |
*/ | |
public function fAddBreak($type = '') | |
{ | |
$page = CreatePage::getInstance(); | |
$page->generatePageBreak($type); | |
$this->_wordDocumentC .= (string) $page; | |
} | |
/** | |
* Add a new font | |
* | |
* @access public | |
* @param array $fonts Fonts to add | |
* @deprecated | |
*/ | |
public function fAddFont($fonts) | |
{ | |
$font = CreateFontTable::getInstance(); | |
$font->createFont($fonts); | |
$this->_wordFontTableC .= (string) $font; | |
} | |
/** | |
* Add a footer | |
* | |
* @access public | |
* @param string $dat Text to add | |
* @param array $paramsFooter Parameters of footer | |
* @deprecated | |
*/ | |
public function fAddFooter($dat = '', $paramsFooter = '') | |
{ | |
$footer = CreateFooter::getInstance(); | |
$dat .= ' This document was created with free version of PHPdocx. | |
Pro version available.'; | |
$footer->createFooter($dat, $paramsFooter); | |
$this->_wordFooterC .= (string) $footer; | |
$this->generateOVERRIDE( | |
'/word/footer.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml' . | |
'.footer+xml' | |
); | |
} | |
/** | |
* Add a graphic | |
* | |
* @access public | |
* @param array $dats Parameters of graphic | |
* @deprecated | |
*/ | |
public function fAddGraphic($dats) | |
{ | |
try { | |
if (isset($dats['data']) && isset($dats['type'])) { | |
self::$intIdWord++; | |
$graphic = CreateGraphic::getInstance(); | |
if ($graphic->createGraphic(self::$intIdWord, $dats) != false) { | |
$this->_zipDocx->addFromString( | |
'word/charts/chart' . self::$intIdWord . '.xml', | |
$graphic->getXmlChart() | |
); | |
$this->_wordRelsDocumentRelsC .= | |
$this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'chart', | |
'charts/chart' . self::$intIdWord . '.xml' | |
); | |
$this->_wordDocumentC .= (string) $graphic; | |
$this->generateDEFAULT('xlsx', 'application/octet-stream'); | |
$this->generateOVERRIDE( | |
'/word/charts/chart' . self::$intIdWord . '.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'drawingml.chart+xml' | |
); | |
} else { | |
throw new Exception( | |
'There was an error related to the chart.' | |
); | |
} | |
$excel = CreateXlsx::getInstance(); | |
$this->_tempFileXLSX[self::$intIdWord] = tempnam($this->_tempDir, 'documentxlsx'); | |
if ( | |
$excel->createXlsx( | |
$this->_tempFileXLSX[self::$intIdWord], | |
$dats['data'], $dats['type'] | |
) != false | |
) { | |
$this->_zipDocx->addFile( | |
$this->_tempFileXLSX[self::$intIdWord], | |
'word/embeddings/datos' . self::$intIdWord . '.xlsx' | |
); | |
$chartRels = CreateChartRels::getInstance(); | |
$chartRels->createRelationship(self::$intIdWord); | |
$this->_zipDocx->addFromString( | |
'word/charts/_rels/chart' . self::$intIdWord . | |
'.xml.rels', | |
(string) $chartRels | |
); | |
} | |
} else { | |
throw new Exception( | |
'Images must have "data" and "type" values.' | |
); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} | |
/** | |
* Add a header. | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param array $paramsHeader Parameters of header | |
* @deprecated | |
*/ | |
public function fAddHeader($text = 'Header', $paramsHeader = '') | |
{ | |
$header = CreateHeader::getInstance(); | |
$header->createHeader($text, $paramsHeader); | |
$this->_wordHeaderC .= (string) $header; | |
$this->generateOVERRIDE( | |
'/word/header.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml.' . | |
'header+xml' | |
); | |
} | |
/** | |
* Add an image | |
* | |
* @access public | |
* @param array $dats Image to add and paramaters to use | |
* @deprecated | |
*/ | |
public function fAddImage($dats = '') | |
{ | |
try { | |
if (isset($dats['name']) && file_exists($dats['name']) == 'true') { | |
$attrImage = getimagesize($dats['name']); | |
try { | |
if ($attrImage['mime'] == 'image/jpg' || | |
$attrImage['mime'] == 'image/jpeg' || | |
$attrImage['mime'] == 'image/png' || | |
$attrImage['mime'] == 'image/gif' | |
) { | |
self::$intIdWord++; | |
$image = CreateImage::getInstance(); | |
$dats['rId'] = self::$intIdWord; | |
$image->createImage($dats); | |
$this->_wordDocumentC .= (string) $image; | |
$dir = $this->parsePath($dats['name']); | |
$this->_zipDocx->addFile( | |
$dats['name'], 'word/media/image' . | |
self::$intIdWord . '.' . | |
$dir['extension'] | |
); | |
$this->generateDEFAULT( | |
$dir['extension'], $attrImage['mime'] | |
); | |
if ((string) $image != '') | |
$this->_wordRelsDocumentRelsC .= | |
$this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'image', | |
'media/image' . self::$intIdWord . '.' | |
. $dir['extension'] | |
); | |
} else { | |
throw new Exception('Image format is not supported.'); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} else { | |
throw new Exception('Image does not exist.'); | |
} | |
} | |
catch (Exception $e) { | |
self::$log->fatal($e->getMessage()); | |
exit(); | |
} | |
} | |
/** | |
* Add a link | |
* | |
* @access protected | |
* @param string $text Text to use as link | |
* @param string $link URL link | |
* @param string $font Type of font | |
* @deprecated | |
*/ | |
protected function fAddLink($text = '', $textLink = '', $font = '') | |
{ | |
$link = CreateLink::getInstance(); | |
$link->createLink($text, $textLink, $font); | |
$this->_wordDocumentC .= (string) $link; | |
} | |
/** | |
* Add a list | |
* | |
* @access public | |
* @param array $dats Values of the list | |
* @param array $paramsList Parameters to use | |
* @deprecated | |
*/ | |
public function fAddList($dats, $paramsList = '') | |
{ | |
$list = CreateList::getInstance(); | |
$list->createList($dats, $paramsList); | |
$this->_wordDocumentC .= (string) $list; | |
} | |
/** | |
* Convert a math eq to DOCX | |
* | |
* @access public | |
* @param string $path Path to a file with math eq | |
* @deprecated | |
*/ | |
public function fAddMathDocx($path) | |
{ | |
$package = new ZipArchive(); | |
$package->open($path); | |
$document = $package->getFromName('word/document.xml'); | |
$eqs = preg_split('/<[\/]*m:oMathPara>/', $document); | |
$this->addMathEq('<m:oMathPara>' . $eqs[1] . '</m:oMathPara>'); | |
$package->close(); | |
} | |
/** | |
* Add an existing math eq to DOCX | |
* | |
* @access public | |
* @param string $eq Math eq | |
* @deprecated | |
*/ | |
public function fAddMathEq($eq) | |
{ | |
$this->_wordDocumentC .= '<' . CreateDocx::NAMESPACEWORD . ':p>' . | |
(string) $eq . '</' . CreateDocx::NAMESPACEWORD . ':p>'; | |
} | |
/** | |
* Add a paragraph | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param string $style Style of the paragraph | |
* @param string $align Align of the paragraph | |
* @deprecated | |
*/ | |
public function fAddParagraph($text, $style = '', $align = '') | |
{ | |
$paragraph = CreateText::getInstance(); | |
$paragraph->createParagraph($text, $style, $align); | |
$this->_wordDocumentC .= (string) $paragraph; | |
} | |
/** | |
* Add a table. | |
* | |
* @access public | |
* @param array $dats Values to add | |
* @param array $parameters Parameters to use | |
* @deprecated | |
*/ | |
public function fAddTable($dats, $parameters = '') | |
{ | |
$table = CreateTable::getInstance(); | |
$table->createTable($dats, $parameters); | |
$this->_wordDocumentC .= (string) $table; | |
} | |
/** | |
* Add a table of contents (TOC) | |
* | |
* @access public | |
* @param string $font Set font type | |
* @deprecated | |
*/ | |
public function fAddTableContents($font = '') | |
{ | |
$tableContents = CreateTableContents::getInstance(); | |
$tableContents->createTableContents($font); | |
$this->_wordDocumentC .= (string) $tableContents; | |
} | |
/** | |
* Add a text | |
* | |
* @access public | |
* @param mixed $value Text or array of texts to add | |
* @param array $style Style of text | |
* @deprecated | |
*/ | |
public function fAddText($value, $style = '') | |
{ | |
$text = CreateText::getInstance(); | |
$text->createText($value, $style); | |
$this->_wordDocumentC .= (string) $text; | |
} | |
/** | |
* Add a title | |
* | |
* @access public | |
* @param string $text Text to add | |
* @param array $style Style of title | |
* @deprecated | |
*/ | |
public function fAddTitle($text, $style = '') | |
{ | |
$title = CreateText::getInstance(); | |
$title->createTitle($text, $style); | |
$this->_wordDocumentC .= (string) $title; | |
} | |
/** | |
* Generate a new DOCX file | |
* | |
* @access public | |
* @param string $args[0] File name | |
* @deprecated | |
*/ | |
public function fCreateDocx() | |
{ | |
$args = func_get_args(); | |
if (!empty($args[0])) { | |
$fileName = $args[0]; | |
} else { | |
$fileName = 'document'; | |
} | |
$this->generateTemplateRelsRels(); | |
$this->_zipDocx->addFromString('_rels/.rels', $this->_relsRelsT); | |
$this->generateTemplateDocPropsApp(); | |
$this->_zipDocx->addFromString( | |
'docProps/app.xml', $this->_docPropsAppT | |
); | |
$this->generateTemplateDocPropsCore(); | |
$this->_zipDocx->addFromString( | |
'docProps/core.xml', $this->_docPropsCoreT | |
); | |
$this->addStyle($this->_language); | |
$this->generateTemplateWordStyles(); | |
$this->_zipDocx->addFromString( | |
'word/styles.xml', $this->_wordStylesT | |
); | |
$this->addSettings(); | |
$this->generateTemplateWordSettings(); | |
$this->_zipDocx->addFromString( | |
'word/settings.xml', $this->_wordSettingsT | |
); | |
$this->addWebSettings(); | |
$this->generateTemplateWordWebSettings(); | |
$this->_zipDocx->addFromString( | |
'word/webSettings.xml', $this->_wordWebSettingsT | |
); | |
if (empty($this->_wordFooterC)) { | |
$paramsFooter = array( | |
'pagerAlignment' => 'right', | |
'font' => 'Times New Roman' | |
); | |
$this->addFooter('', $paramsFooter); | |
} | |
$this->generateTemplateWordFooter(); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/footer.xml', utf8_encode($this->_wordFooterT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/footer.xml', $this->_wordFooterT | |
); | |
} | |
if (!empty($this->_wordHeaderC)) { | |
$this->generateTemplateWordHeader(); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/header.xml', utf8_encode($this->_wordHeaderT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/header.xml', $this->_wordHeaderT | |
); | |
} | |
} | |
if (!empty($this->_wordRelsHeaderRelsC)) { | |
$this->generateTemplateWordRelsHeaderRels(); | |
$this->_zipDocx->addFromString( | |
'word/_rels/header.xml.rels', $this->_wordRelsHeaderRelsT | |
); | |
} | |
$this->generateOVERRIDE( | |
'/word/document.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'wordprocessingml.document.main+xml' | |
); | |
$this->generateTemplateContentType(); | |
$this->_zipDocx->addFromString( | |
'[Content_Types].xml', | |
$this->_wordContentTypeT | |
); | |
$this->generateTemplateWordNumbering(); | |
$this->_zipDocx->addFromString( | |
'word/numbering.xml', $this->_wordNumberingT | |
); | |
$this->generateDefaultWordRels(); | |
if (!empty($this->_wordRelsDocumentRelsC)) { | |
$this->generateTemplateWordRelsDocumentRels(); | |
$this->_zipDocx->addFromString( | |
'word/_rels/document.xml.rels', | |
$this->_wordRelsDocumentRelsT | |
); | |
} | |
$arrArgsPage = array(); | |
if (isset($args[1])) { | |
$arrArgsPage = $args[1]; | |
} | |
$this->generateTemplateWordDocument($arrArgsPage); | |
if (self::$_encodeUTF) { | |
$this->_zipDocx->addFromString( | |
'word/document.xml', utf8_encode($this->_wordDocumentT) | |
); | |
} else { | |
$this->_zipDocx->addFromString( | |
'word/document.xml', $this->_wordDocumentT | |
); | |
} | |
$this->generateDefaultFonts(); | |
$this->generateTemplateWordFontTable(); | |
$this->_zipDocx->addFromString( | |
'word/fontTable.xml', $this->_wordFontTableT | |
); | |
$this->generateTemplateWordThemeTheme1(); | |
$this->_zipDocx->addFromString( | |
'word/theme/theme1.xml', $this->_wordThemeThemeT | |
); | |
$this->_zipDocx->close(); | |
$arrpathFile = pathinfo($fileName); | |
copy( | |
$this->_tempFile, | |
$fileName . '.' . $this->_extension | |
); | |
} | |
/** | |
* Change the default font | |
* | |
* @access public | |
* @param string $font The new font | |
* @deprecated | |
*/ | |
public function fSetDefaultFont($font) | |
{ | |
$this->_defaultFont = $font; | |
} | |
/*** End old API ***/ | |
/** | |
* | |
* | |
* @access private | |
*/ | |
private function generateContentType() | |
{ | |
$this->generateDEFAULT( | |
'rels', 'application/vnd.openxmlformats-package.relationships+xml' | |
); | |
$this->generateDEFAULT('xml', 'application/xml'); | |
$this->generateOVERRIDE( | |
'/word/numbering.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml.' . | |
'numbering+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/styles.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml' . | |
'.styles+xml' | |
); | |
$this->generateOVERRIDE( | |
'/docProps/app.xml', | |
'application/vnd.openxmlformats-officedocument.extended-' . | |
'properties+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/settings.xml', 'application/' . | |
'vnd.openxmlformats-officedocument.wordprocessingml.settings+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/theme/theme1.xml', | |
'application/vnd.openxmlformats-officedocument.theme+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/fontTable.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml.' . | |
'fontTable+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/webSettings.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml' . | |
'.webSettings+xml' | |
); | |
if ($this->_wordFooterC != '' || $this->_wordHeaderC != '') { | |
$this->generateOVERRIDE( | |
'/word/header.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'wordprocessingml.header+xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/footer.xml', | |
'application/vnd.openxmlformats-officedocument.' . | |
'wordprocessingml.footer+xml' | |
); | |
} | |
$this->generateOVERRIDE( | |
'/docProps/core.xml', | |
'application/vnd.openxmlformats-package.core-properties+xml' | |
); | |
} | |
/** | |
* Generate SECTPR | |
* | |
* @access private | |
* @param array $args Section style | |
*/ | |
private function generateSECTPR($args = '') | |
{ | |
$page = CreatePage::getInstance(); | |
$page->createSECTPR($args); | |
$this->_wordDocumentC .= (string) $page; | |
} | |
/** | |
* Generate ContentType XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateContentType() | |
{ | |
$this->_wordContentTypeT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>' . | |
'<Types xmlns="http://schemas.openxmlformats.org/package/2006/' . | |
'content-types">' . $this->_contentTypeC . '</Types>'; | |
} | |
/** | |
* Generate DocPropsApp XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateDocPropsApp() | |
{ | |
$this->_docPropsAppT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<Properties xmlns="http://schemas.openxmlformats.org/' . | |
'officeDocument/2006/extended-properties" xmlns:vt="' . | |
'http://schemas.openxmlformats.org/officeDocument/2006/' . | |
'docPropsVTypes"><Template>Normal.dotm</Template><TotalTime>' . | |
'0</TotalTime><Pages>1</Pages><Words>1</Words><Characters>1' | |
. '</Characters><Application>Microsoft Office Word</Application>' . | |
'<DocSecurity>4</DocSecurity><Lines>1</Lines><Paragraphs>1' . | |
'</Paragraphs><ScaleCrop>false</ScaleCrop><Company>Company' . | |
'</Company><LinksUpToDate>false</LinksUpToDate>' . | |
'<CharactersWithSpaces>1</CharactersWithSpaces><SharedDoc>' . | |
'false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged>' . | |
'<AppVersion>12.0000</AppVersion></Properties>'; | |
} | |
/** | |
* Generate DocPropsCore XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateDocPropsCore() | |
{ | |
date_default_timezone_set('UTC'); | |
$this->_docPropsCoreT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?> ' . | |
'<cp:coreProperties xmlns:cp="http://schemas.openxmlformats' . | |
'.org/package/2006/metadata/core-properties" ' . | |
'xmlns:dc="http://purl.org/dc/elements/1.1/" ' . | |
'xmlns:dcterms="http://purl.org/dc/terms/" ' . | |
'xmlns:dcmitype="http://purl.org/dc/dcmitype/" ' . | |
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' . | |
'<dc:title>Title</dc:title><dc:subject>Subject</dc:subject>' . | |
'<dc:creator>2mdc</dc:creator><dc:description>Description' . | |
'</dc:description><cp:lastModifiedBy>user' . | |
'</cp:lastModifiedBy><cp:revision>1</cp:revision>' . | |
'<dcterms:created xsi:type="dcterms:W3CDTF">' . date('c') . | |
'</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF' . | |
'">' . date('c') . '</dcterms:modified></cp:coreProperties>'; | |
} | |
/** | |
* Generate RelsRels XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateRelsRels() | |
{ | |
$this->_relsRelsT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<Relationships xmlns="http://schemas.openxmlformats.org/package/' . | |
'2006/relationships">' . | |
$this->generateRELATIONSHIP( | |
'rId3', 'extended-properties', 'docProps/app.xml' | |
) . | |
'<Relationship Id="rId2" Type="http://schemas.openxmlformats' . | |
'.org/package/2006/relationships/metadata/core-properties"' . | |
' Target="docProps/core.xml"/>' . | |
$this->generateRELATIONSHIP( | |
'rId1', 'officeDocument', 'word/document.xml' | |
); | |
$this->_relsRelsT .= '</Relationships>'; | |
} | |
/** | |
* Generate WordDocument XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordDocument() | |
{ | |
$arrArgs = func_get_args(); | |
$this->generateSECTPR($arrArgs[0]); | |
if (!empty($this->_wordHeaderC)) { | |
$this->_wordDocumentC = str_replace( | |
'__GENERATEHEADERREFERENCE__', | |
'<' . CreateDocx::NAMESPACEWORD . ':headerReference ' . | |
CreateDocx::NAMESPACEWORD . ':type="default" r:id="rId' . | |
$this->_idWords['header'] . '"></' . | |
CreateDocx::NAMESPACEWORD . ':headerReference>', | |
$this->_wordDocumentC | |
); | |
} | |
if (!empty($this->_wordFooterC)) { | |
$this->_wordDocumentC = str_replace( | |
'__GENERATEFOOTERREFERENCE__', | |
'<' . CreateDocx::NAMESPACEWORD . ':footerReference ' . | |
CreateDocx::NAMESPACEWORD . ':type="default" r:id="rId' . | |
$this->_idWords['footer'] . '"></' . | |
CreateDocx::NAMESPACEWORD . ':footerReference>', | |
$this->_wordDocumentC | |
); | |
} | |
$this->_wordDocumentT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<' . CreateDocx::NAMESPACEWORD . ':document xmlns:ve=' . | |
'"http://schemas.openxmlformats.org/markup-compatibility/2006" ' . | |
'xmlns:o="urn:schemas-microsoft-com:office:office"' . | |
' xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006' . | |
'/relationships" xmlns:m="http://schemas.openxmlformats.org/' . | |
'officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml"'. | |
' xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/' . | |
'wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:' . | |
'office:word" xmlns:w="http://schemas.openxmlformats.org/' . | |
'wordprocessingml/2006/main" xmlns:wne="http://schemas' . | |
'.microsoft.com/office/word/2006/wordml">' . | |
'<' . CreateDocx::NAMESPACEWORD . ':body>' . | |
$this->_wordDocumentC . | |
'</' . CreateDocx::NAMESPACEWORD . ':body>' . | |
'</' . CreateDocx::NAMESPACEWORD . ':document>'; | |
$this->cleanTemplate(); | |
} | |
/** | |
* Generate WordEndnotes XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordEndnotes() | |
{ | |
$this->_wordEndnotesT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<' . CreateDocx::NAMESPACEWORD . ':endnotes xmlns:ve' . | |
'="http://schemas.openxmlformats.org/markup-compatibility/2006" ' . | |
'xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="' . | |
'http://schemas.openxmlformats.org/officeDocument/2006/' . | |
'relationships" xmlns:m="http://schemas.openxmlformats.org/' . | |
'officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:' . | |
'vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006' . | |
'/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:' . | |
'office:word" xmlns:w="http://schemas.openxmlformats.org/' . | |
'wordprocessingml/2006/main" xmlns:wne="http://schemas' . | |
'.microsoft.com/office/word/2006/wordml">' . | |
$this->_wordEndnotesC . | |
'</' . CreateDocx::NAMESPACEWORD . ':endnotes>'; | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'endnotes', 'endnotes.xml' | |
); | |
$this->generateOVERRIDE( | |
'/word/endnotes.xml', | |
'application/vnd.openxmlformats-officedocument.wordprocessingml' . | |
'.endnotes+xml' | |
); | |
} | |
/** | |
* Generate WordFontTable XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordFontTable() | |
{ | |
$this->_wordFontTableT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>' . | |
'<' . CreateDocx::NAMESPACEWORD . ':fonts xmlns:r="http://' . | |
'schemas.openxmlformats.org/officeDocument/2006/' . | |
'relationships" xmlns:w="http://schemas.openxmlformats.org/' . | |
'wordprocessingml/2006/main">' . $this->_wordFontTableC . | |
'</' . CreateDocx::NAMESPACEWORD . ':fonts>'; | |
} | |
/** | |
* Generate WordFooter XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordFooter() | |
{ | |
self::$intIdWord++; | |
$this->_idWords['footer'] = self::$intIdWord; | |
$this->_wordFooterT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | |
<' . CreateDocx::NAMESPACEWORD . ':ftr xmlns:ve' . | |
'="http://schemas.openxmlformats.org/markup-compatibility/' . | |
'2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns' . | |
':r="http://schemas.openxmlformats.org/officeDocument/2006/' . | |
'relationships" xmlns:m="http://schemas.openxmlformats.org/' . | |
'officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml' . | |
'" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/' . | |
'wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:' . | |
'office:word" xmlns:w="http://schemas.openxmlformats.org/' . | |
'wordprocessingml/2006/main" xmlns:wne="http://schemas' . | |
'.microsoft.com/office/word/2006/wordml">' . $this->_wordFooterC . | |
'</' . CreateDocx::NAMESPACEWORD . ':ftr>'; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'footer', 'footer.xml' | |
); | |
} | |
/** | |
* Generate WordHeader XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordHeader() | |
{ | |
self::$intIdWord++; | |
$this->_idWords['header'] = self::$intIdWord; | |
$this->_wordHeaderT = '<?xml version="1.0" encoding="UTF-8" ' . | |
'standalone="yes"?>' . | |
'<' . CreateDocx::NAMESPACEWORD . | |
':hdr xmlns:ve="http://schemas.openxmlformats.org/markup' . | |
'-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:' . | |
'office:office" xmlns:r="http://schemas.openxmlformats.org/' . | |
'officeDocument/2006/relationships" xmlns:m="http://schemas' . | |
'.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:' . | |
'schemas-microsoft-com:vml" xmlns:wp="http://schemas' . | |
'.openxmlformats.org/drawingml/2006/wordprocessingDrawing" ' . | |
'xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="' . | |
'http://schemas.openxmlformats.org/wordprocessingml/2006/' . | |
'main" xmlns:wne="http://schemas.microsoft.com/office/word/' . | |
'2006/wordml"> ' . $this->_wordHeaderC . | |
'</' . CreateDocx::NAMESPACEWORD . ':hdr>'; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'header', 'header.xml' | |
); | |
} | |
/** | |
* Generate WordNumbering XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordNumbering() | |
{ | |
$this->_wordNumberingT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<w:numbering xmlns:ve="http://schemas.openxmlformats' . | |
'.org/markup-compatibility/2006" xmlns:o="urn:schemas-' . | |
'microsoft-com:office:office" xmlns:r="http://schemas' . | |
'.openxmlformats.org/officeDocument/2006/relationships" ' . | |
'xmlns:m="http://schemas.openxmlformats.org/officeDocument/' . | |
'2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:' . | |
'wp="http://schemas.openxmlformats.org/drawingml/2006/' . | |
'wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com' . | |
':office:word" xmlns:w="http://schemas.openxmlformats.org/' . | |
'wordprocessingml/2006/main" xmlns:wne="http://schemas.' . | |
'microsoft.com/office/word/2006/wordml"><w:abstractNum w:' | |
. 'abstractNumId="0"><w:nsid w:val="713727AE"/><w:multiLevelType' . | |
' w:val="hybridMultilevel"/><w:tmpl w:val="F0B4B6B8"/>' . | |
'<w:lvl w:ilvl="0" w:tplc="0C0A0001"><w:start w:val="1"/>' . | |
'<w:numFmt w:val="bullet"/><w:lvlText w:val=""/><w:lvlJc ' . | |
'w:val="left"/><w:pPr><w:ind w:left="720" w:hanging="360"/>' . | |
'</w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" ' . | |
'w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="1" ' . | |
'w:tplc="0C0A0003" w:tentative="1"><w:start w:val="1"/>' . | |
'<w:numFmt w:val="bullet"/><w:lvlText w:val="o"/><w:lvlJc ' . | |
'w:val="left"/><w:pPr><w:ind w:left="1440" w:hanging="360"/>' . ' | |
</w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:hAnsi=' . | |
'"Courier New" w:cs="Courier New" w:hint="default"/></w:rPr>' . | |
'</w:lvl><w:lvl w:ilvl="2" w:tplc="0C0A0005" w:tentative="1">' . | |
'<w:start w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText ' . | |
'w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2160" ' . | |
'w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" ' . | |
'w:hAnsi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl ' . | |
'w:ilvl="3" w:tplc="0C0A0001" w:tentative="1"><w:start ' . | |
'w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText w:val=""/>' . | |
'<w:lvlJc w:val="left"/><w:pPr><w:ind w:left="2880" w:hanging=' . | |
'"360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" w:hAnsi=' . | |
'"Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl w:ilvl="4" ' . | |
'w:tplc="0C0A0003" w:tentative="1"><w:start w:val="1"/>' . | |
'<w:numFmt w:val="bullet"/><w:lvlText w:val="o"/><w:lvlJc ' . | |
'w:val="left"/><w:pPr><w:ind w:left="3600" w:hanging="360"/>' . | |
'</w:pPr><w:rPr><w:rFonts w:ascii="Courier New" w:hAnsi=' . | |
'"Courier New" w:cs="Courier New" w:hint="default"/></w:rPr>' . | |
'</w:lvl><w:lvl w:ilvl="5" w:tplc="0C0A0005" w:tentative="1">' . | |
'<w:start w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText ' . | |
'w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:ind w:left="4320" ' . | |
'w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Wingdings" ' . | |
'w:hAnsi="Wingdings" w:hint="default"/></w:rPr></w:lvl><w:lvl ' . | |
'w:ilvl="6" w:tplc="0C0A0001" w:tentative="1"><w:start ' . | |
'w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText w:val=""/>' . | |
'<w:lvlJc w:val="left"/><w:pPr><w:ind w:left="5040" ' . | |
'w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Symbol" ' . | |
'w:hAnsi="Symbol" w:hint="default"/></w:rPr></w:lvl><w:lvl ' . | |
'w:ilvl="7" w:tplc="0C0A0003" w:tentative="1"><w:start ' . | |
'w:val="1"/><w:numFmt w:val="bullet"/><w:lvlText w:val="o"/>' . | |
'<w:lvlJc w:val="left"/><w:pPr><w:ind w:left="5760" ' . | |
'w:hanging="360"/></w:pPr><w:rPr><w:rFonts w:ascii="Courier New" ' . | |
'w:hAnsi="Courier New" w:cs="Courier New" w:hint="default"/>' . | |
'</w:rPr></w:lvl><w:lvl w:ilvl="8" w:tplc="0C0A0005" ' . | |
'w:tentative="1"><w:start w:val="1"/><w:numFmt w:val="bullet"' . | |
'/><w:lvlText w:val=""/><w:lvlJc w:val="left"/><w:pPr><w:ind ' . | |
'w:left="6480" w:hanging="360"/></w:pPr><w:rPr><w:rFonts ' . | |
'w:ascii="Wingdings" w:hAnsi="Wingdings" w:hint="default"/>' . | |
'</w:rPr></w:lvl></w:abstractNum><w:num w:numId="1">' . | |
'<w:abstractNumId w:val="0"/></w:num></w:numbering>'; | |
} | |
/** | |
* Generate WordRelsDocumentRels XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordRelsDocumentRels() | |
{ | |
$this->_wordRelsDocumentRelsT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<Relationships xmlns="http://schemas.openxmlformats.org/' . | |
'package/2006/relationships">' . $this->_wordRelsDocumentRelsC . | |
'</Relationships>'; | |
} | |
/** | |
* Generate WordRelsFooterRels XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordRelsFooterRels() | |
{ | |
$this->_wordRelsFooterRelsT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<Relationships xmlns="http://schemas.openxmlformats.org/' . | |
'package/2006/relationships">' . $this->_wordRelsFooterRelsC . | |
'</Relationships>'; | |
} | |
/** | |
* Generate WordRelsHeaderRels XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordRelsHeaderRels() | |
{ | |
$this->_wordRelsHeaderRelsT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' . | |
'<Relationships xmlns="http://schemas.openxmlformats.org/' . | |
'package/2006/relationships">' . $this->_wordRelsHeaderRelsC . | |
'</Relationships>'; | |
} | |
/** | |
* Generate WordSettings XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordSettings() | |
{ | |
$this->_wordSettingsT = $this->_wordSettingsC; | |
} | |
/** | |
* Generate WordStyles XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordStyles() | |
{ | |
$this->_wordStylesT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><' . | |
CreateDocx::NAMESPACEWORD . ':styles xmlns:r="http://' . | |
'schemas.openxmlformats.org/officeDocument/2006/relationships' . | |
'" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/' . | |
'2006/main">' . $this->_wordStylesC . | |
'</' . CreateDocx::NAMESPACEWORD . ':styles>'; | |
} | |
/** | |
* Generate WordThemeTheme1 XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordThemeTheme1() | |
{ | |
$this->addTheme($this->_defaultFont); | |
$this->_wordThemeThemeT = | |
'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><' . | |
CreateTheme1::NAMESPACEWORD . ':theme xmlns:a="http://' . | |
'schemas.openxmlformats.org/drawingml/2006/main" name="' . | |
'Tema de Office">' . $this->_wordThemeThemeC . | |
'</' . CreateTheme1::NAMESPACEWORD . ':theme>'; | |
} | |
/** | |
* Generate WordWebSettings XML template | |
* | |
* @access private | |
*/ | |
private function generateTemplateWordWebSettings() | |
{ | |
$this->_wordWebSettingsT = $this->_wordWebSettingsC; | |
} | |
/** | |
* Add settings | |
* | |
* @access private | |
*/ | |
private function addSettings() | |
{ | |
$settings = CreateSettings::getInstance(); | |
$settings->generateSettings(); | |
$this->_wordSettingsC .= (string) $settings; | |
} | |
/** | |
* Add style | |
* | |
* @param string lang Language | |
* @access private | |
*/ | |
private function addStyle($lang = 'en-US') | |
{ | |
$style = CreateStyle::getInstance(); | |
$style->createStyle($lang); | |
$this->_wordStylesC .= (string) $style; | |
} | |
/** | |
* Add theme | |
* | |
* @access private | |
*/ | |
private function addTheme($strFont) | |
{ | |
$theme = CreateTheme1::getInstance(); | |
$theme->createTheme($strFont); | |
$this->_wordThemeThemeC .= (string) $theme; | |
} | |
/** | |
* Add websettings | |
* | |
* @access private | |
*/ | |
private function addWebSettings() | |
{ | |
$webSettings = CreateWebSettings::getInstance(); | |
$webSettings->generateWebSettings(); | |
$this->_wordWebSettingsC .= (string) $webSettings; | |
} | |
/** | |
* Clean template | |
* | |
* @access private | |
*/ | |
private function cleanTemplate() | |
{ | |
$this->_wordDocumentT = preg_replace( | |
'/__[A-Z]+__/', | |
'', | |
$this->_wordDocumentT | |
); | |
} | |
/** | |
* Generate DEFAULT | |
* | |
* @access private | |
*/ | |
private function generateDEFAULT($extension, $contentType) | |
{ | |
if ( | |
strpos($this->_contentTypeC, 'Extension="' . $extension) | |
=== false | |
) { | |
$this->_contentTypeC .= '<Default Extension="' . | |
$extension . '" ContentType="' . $contentType . '"> </Default>'; | |
} | |
} | |
/** | |
* | |
* | |
* @access private | |
*/ | |
private function generateDefaultFonts() | |
{ | |
$font = array( | |
'name' => 'Calibri', 'pitch' => 'variable', 'usb0' => 'A00002EF', | |
'usb1' => '4000207B', 'usb2' => '00000000', 'usb3' => '00000000', | |
'csb0' => '0000009F', 'csb1' => '00000000', 'family' => 'swiss', | |
'charset' => '00', 'panose1' => '020F0502020204030204' | |
); | |
$this->addFont($font); | |
$font = array( | |
'name' => 'Times New Roman', 'pitch' => 'variable', | |
'usb0' => 'E0002AEF', 'usb1' => 'C0007841', 'usb2' => '00000009', | |
'usb3' => '00000000', 'csb0' => '000001FF', 'csb1' => '00000000', | |
'family' => 'roman', 'charset' => '00', | |
'panose1' => '02020603050405020304' | |
); | |
$this->addFont($font); | |
$font = array( | |
'name' => 'Cambria', 'pitch' => 'variable', 'usb0' => 'A00002EF', | |
'usb1' => '4000004B', 'usb2' => '00000000', 'usb3' => '00000000', | |
'csb0' => '0000009F', 'csb1' => '00000000', 'family' => 'roman', | |
'charset' => '00', 'panose1' => '02040503050406030204' | |
); | |
$this->addFont($font); | |
} | |
/** | |
* Generate DefaultWordRels | |
* | |
* @access private | |
*/ | |
private function generateDefaultWordRels() | |
{ | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'numbering', 'numbering.xml' | |
); | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'theme', 'theme/theme1.xml' | |
); | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'webSettings', 'webSettings.xml' | |
); | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'fontTable', 'fontTable.xml' | |
); | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'settings', 'settings.xml' | |
); | |
self::$intIdWord++; | |
$this->_wordRelsDocumentRelsC .= $this->generateRELATIONSHIP( | |
'rId' . self::$intIdWord, 'styles', 'styles.xml' | |
); | |
} | |
/** | |
* Generate OVERRIDE | |
* | |
* @access private | |
* @param string $partName | |
* @param string $contentType | |
*/ | |
private function generateOVERRIDE($partName, $contentType) | |
{ | |
if ( | |
strpos($this->_contentTypeC, 'PartName="' . $partName . '"') | |
=== false | |
) { | |
$this->_contentTypeC .= '<Override PartName="' . | |
$partName . '" ContentType="' . $contentType . '"> </Override>'; | |
} | |
} | |
/** | |
* Gnerate RELATIONSHIP | |
* | |
* @access private | |
*/ | |
private function generateRELATIONSHIP() | |
{ | |
$arrArgs = func_get_args(); | |
if ($arrArgs[1] == 'vbaProject') | |
$strType = | |
'http://schemas.microsoft.com/office/2006/relationships/vbaProject'; | |
else | |
$strType = | |
'http://schemas.openxmlformats.org/officeDocument/2006/' . | |
'relationships/' . $arrArgs[1]; | |
return '<Relationship Id="' . $arrArgs[0] . '" Type="' . $strType . | |
'" Target="' . $arrArgs[2] . '"></Relationship>'; | |
} | |
/** | |
* To add support of sys_get_temp_dir for PHP versions under 5.2.1 | |
* | |
* @access private | |
* @return string | |
*/ | |
private function getTempDir() { | |
if ( !function_exists('sys_get_temp_dir')) { | |
function sys_get_temp_dir() { | |
if ($temp = getenv('TMP')) { | |
return $temp; | |
} | |
if ($temp = getenv('TEMP')) { | |
return $temp; | |
} | |
if ($temp = getenv('TMPDIR')) { | |
return $temp; | |
} | |
$temp = tempnam(__FILE__,''); | |
if (file_exists($temp)) { | |
unlink($temp); | |
return dirname($temp); | |
} | |
return null; | |
} | |
} else { | |
return sys_get_temp_dir(); | |
} | |
} | |
/** | |
* Parse path dir | |
* | |
* @access private | |
* @param string $dir Directory path | |
*/ | |
private function parsePath($dir) | |
{ | |
$barra = 0; | |
$path = ''; | |
if (($barra = strrpos($dir, '/')) !== false) { | |
$barra += 1; | |
$path = substr($dir, 0, $barra); | |
} | |
$punto = strpos(substr($dir, $barra), '.'); | |
$nombre = substr($dir, $barra, $punto); | |
$extension = substr($dir, $punto + $barra + 1); | |
return array( | |
'path' => $path, 'nombre' => $nombre, 'extension' => $extension | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment