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'); $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'); // Write DocDefaults $this->_writeDocDefaults($objWriter); // Write Style Definitions $styles = PHPWord_Style::getStyles(); if(count($styles) > 0) { foreach($styles as $styleName => $style) { if($style instanceof PHPWord_Style_Font) { $paragraphStyle = $style->getParagraphStyle(); $styleType = $style->getStyleType(); $type = ($styleType == 'title') ? 'paragraph' : 'character'; if(!is_null($paragraphStyle)) { $type = 'paragraph'; } $objWriter->startElement('w:style'); $objWriter->writeAttribute('w:type', $type); if($styleType == 'title') { $arrStyle = explode('_', $styleName); $styleId = 'Heading'.$arrStyle[1]; $styleName = 'heading '.$arrStyle[1]; $styleLink = 'Heading'.$arrStyle[1].'Char'; $objWriter->writeAttribute('w:styleId', $styleId); $objWriter->startElement('w:link'); $objWriter->writeAttribute('w:val', $styleLink); $objWriter->endElement(); } $objWriter->startElement('w:name'); $objWriter->writeAttribute('w:val', $styleName); $objWriter->endElement(); if(!is_null($paragraphStyle)) { $this->_writeParagraphStyle($objWriter, $paragraphStyle); } $this->_writeTextStyle($objWriter, $style); $objWriter->endElement(); } elseif($style instanceof PHPWord_Style_Paragraph) { $objWriter->startElement('w:style'); $objWriter->writeAttribute('w:type', 'paragraph'); $objWriter->writeAttribute('w:customStyle', '1'); $objWriter->writeAttribute('w:styleId', $styleName); $objWriter->startElement('w:name'); $objWriter->writeAttribute('w:val', $styleName); $objWriter->endElement(); $this->_writeParagraphStyle($objWriter, $style); $objWriter->endElement(); } elseif($style instanceof PHPWord_Style_TableFull) { $objWriter->startElement('w:style'); $objWriter->writeAttribute('w:type', 'table'); $objWriter->writeAttribute('w:customStyle', '1'); $objWriter->writeAttribute('w:styleId', $styleName); $objWriter->startElement('w:name'); $objWriter->writeAttribute('w:val', $styleName); $objWriter->endElement(); $objWriter->startElement('w:uiPriority'); $objWriter->writeAttribute('w:val', '99'); $objWriter->endElement(); $this->_writeFullTableStyle($objWriter, $style); $objWriter->endElement(); } } } $objWriter->endElement(); // w:styles // Return return $objWriter->getData(); } private function _writeFullTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_TableFull $style) { $brdSz = $style->getBorderSize(); $brdCol = $style->getBorderColor(); $bgColor = $style->getBgColor(); $cellMargin = $style->getCellMargin(); $tableAlign = $style->getTableAlign(); $tableIndent = $style->getTableIndent(); $bTop = (!is_null($brdSz[0])) ? true : false; $bLeft = (!is_null($brdSz[1])) ? true : false; $bRight = (!is_null($brdSz[2])) ? true : false; $bBottom = (!is_null($brdSz[3])) ? true : false; $bInsH = (!is_null($brdSz[4])) ? true : false; $bInsV = (!is_null($brdSz[5])) ? true : false; $borders = ($bTop || $bLeft || $bRight || $bBottom || $bInsH || $bInsV) ? true : false; $mTop = (!is_null($cellMargin[0])) ? true : false; $mLeft = (!is_null($cellMargin[1])) ? true : false; $mRight = (!is_null($cellMargin[2])) ? true : false; $mBottom = (!is_null($cellMargin[3])) ? true : false; $margins = ($mTop || $mLeft || $mRight || $mBottom) ? true : false; $objWriter->startElement('w:tblPr'); if ($tableAlign) { $objWriter->startElement('w:jc'); $objWriter->startElement('w:val', $tableAlign); $objWriter->endElement(); } if ($tableIndent) { $objWriter->startElement('w:tblInd'); $objWriter->startElement('w:w', $tableIndent); $objWriter->startElement('w:type', 'dxa'); $objWriter->endElement(); } if($margins) { $objWriter->startElement('w:tblCellMar'); if($mTop) { echo $margins[0]; $objWriter->startElement('w:top'); $objWriter->writeAttribute('w:w', $cellMargin[0]); $objWriter->writeAttribute('w:type', 'dxa'); $objWriter->endElement(); } if($mLeft) { $objWriter->startElement('w:left'); $objWriter->writeAttribute('w:w', $cellMargin[1]); $objWriter->writeAttribute('w:type', 'dxa'); $objWriter->endElement(); } if($mRight) { $objWriter->startElement('w:right'); $objWriter->writeAttribute('w:w', $cellMargin[2]); $objWriter->writeAttribute('w:type', 'dxa'); $objWriter->endElement(); } if($mBottom) { $objWriter->startElement('w:bottom'); $objWriter->writeAttribute('w:w', $cellMargin[3]); $objWriter->writeAttribute('w:type', 'dxa'); $objWriter->endElement(); } $objWriter->endElement(); } if($borders) { $objWriter->startElement('w:tblBorders'); if($bTop) { $objWriter->startElement('w:top'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[0]); $objWriter->writeAttribute('w:color', $brdCol[0]); $objWriter->endElement(); } if($bLeft) { $objWriter->startElement('w:left'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[1]); $objWriter->writeAttribute('w:color', $brdCol[1]); $objWriter->endElement(); } if($bRight) { $objWriter->startElement('w:right'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[2]); $objWriter->writeAttribute('w:color', $brdCol[2]); $objWriter->endElement(); } if($bBottom) { $objWriter->startElement('w:bottom'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[3]); $objWriter->writeAttribute('w:color', $brdCol[3]); $objWriter->endElement(); } if($bInsH) { $objWriter->startElement('w:insideH'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[4]); $objWriter->writeAttribute('w:color', $brdCol[4]); $objWriter->endElement(); } if($bInsV) { $objWriter->startElement('w:insideV'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[5]); $objWriter->writeAttribute('w:color', $brdCol[5]); $objWriter->endElement(); } $objWriter->endElement(); } $objWriter->endElement(); if(!is_null($bgColor)) { $objWriter->startElement('w:tcPr'); $objWriter->startElement('w:shd'); $objWriter->writeAttribute('w:val', 'clear'); $objWriter->writeAttribute('w:color', 'auto'); $objWriter->writeAttribute('w:fill', $bgColor); $objWriter->endElement(); $objWriter->endElement(); } // First Row $firstRow = $style->getFirstRow(); if(!is_null($firstRow)) { $this->_writeRowStyle($objWriter, 'firstRow', $firstRow); } } private function _writeRowStyle(PHPWord_Shared_XMLWriter $objWriter = null, $type, PHPWord_Style_TableFull $style) { $brdSz = $style->getBorderSize(); $brdCol = $style->getBorderColor(); $bgColor = $style->getBgColor(); $bTop = (!is_null($brdSz[0])) ? true : false; $bLeft = (!is_null($brdSz[1])) ? true : false; $bRight = (!is_null($brdSz[2])) ? true : false; $bBottom = (!is_null($brdSz[3])) ? true : false; $borders = ($bTop || $bLeft || $bRight || $bBottom) ? true : false; $objWriter->startElement('w:tblStylePr'); $objWriter->writeAttribute('w:type', $type); $objWriter->startElement('w:tcPr'); if(!is_null($bgColor)) { $objWriter->startElement('w:shd'); $objWriter->writeAttribute('w:val', 'clear'); $objWriter->writeAttribute('w:color', 'auto'); $objWriter->writeAttribute('w:fill', $bgColor); $objWriter->endElement(); } $objWriter->startElement('w:tcBorders'); if($bTop) { $objWriter->startElement('w:top'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[0]); $objWriter->writeAttribute('w:color', $brdCol[0]); $objWriter->endElement(); } if($bLeft) { $objWriter->startElement('w:left'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[1]); $objWriter->writeAttribute('w:color', $brdCol[1]); $objWriter->endElement(); } if($bRight) { $objWriter->startElement('w:right'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[2]); $objWriter->writeAttribute('w:color', $brdCol[2]); $objWriter->endElement(); } if($bBottom) { $objWriter->startElement('w:bottom'); $objWriter->writeAttribute('w:val', 'single'); $objWriter->writeAttribute('w:sz', $brdSz[3]); $objWriter->writeAttribute('w:color', $brdCol[3]); $objWriter->endElement(); } $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } private function _writeDocDefaults(PHPWord_Shared_XMLWriter $objWriter = null) { $fontName = $this->_document->getDefaultFontName(); $fontSize = $this->_document->getDefaultFontSize(); $objWriter->startElement('w:docDefaults'); $objWriter->startElement('w:rPrDefault'); $objWriter->startElement('w:rPr'); $objWriter->startElement('w:rFonts'); $objWriter->writeAttribute('w:ascii', $fontName); $objWriter->writeAttribute('w:hAnsi', $fontName); $objWriter->writeAttribute('w:eastAsia', $fontName); $objWriter->writeAttribute('w:cs', $fontName); $objWriter->endElement(); $objWriter->startElement('w:sz'); $objWriter->writeAttribute('w:val', $fontSize); $objWriter->endElement(); $objWriter->startElement('w:szCs'); $objWriter->writeAttribute('w:val', $fontSize); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); $objWriter->endElement(); } } ?>