Overview

Packages

  • PHP
  • PHPWord

Classes

  • PHPWord
  • PHPWord_Autoloader
  • PHPWord_DocumentProperties
  • PHPWord_HashTable
  • PHPWord_IOFactory
  • PHPWord_Media
  • PHPWord_Section
  • PHPWord_Section_Footer
  • PHPWord_Section_Footer_PreserveText
  • PHPWord_Section_Header
  • PHPWord_Section_Image
  • PHPWord_Section_Link
  • PHPWord_Section_ListItem
  • PHPWord_Section_MemoryImage
  • PHPWord_Section_Object
  • PHPWord_Section_PageBreak
  • PHPWord_Section_Settings
  • PHPWord_Section_Table
  • PHPWord_Section_Table_Cell
  • PHPWord_Section_Table_Row
  • PHPWord_Section_Text
  • PHPWord_Section_TextBreak
  • PHPWord_Section_TextRun
  • PHPWord_Section_Title
  • PHPWord_Shared_Drawing
  • PHPWord_Shared_File
  • PHPWord_Shared_Font
  • PHPWord_Shared_String
  • PHPWord_Shared_XMLWriter
  • PHPWord_Shared_ZipStreamWrapper
  • PHPWord_Style
  • PHPWord_Style_Cell
  • PHPWord_Style_Font
  • PHPWord_Style_Image
  • PHPWord_Style_ListItem
  • PHPWord_Style_Paragraph
  • PHPWord_Style_Row
  • PHPWord_Style_Tab
  • PHPWord_Style_Table
  • PHPWord_Style_TableFull
  • PHPWord_Style_Tabs
  • PHPWord_Style_TOC
  • PHPWord_Template
  • PHPWord_TOC
  • PHPWord_Writer_ODText
  • PHPWord_Writer_ODText_Content
  • PHPWord_Writer_ODText_Manifest
  • PHPWord_Writer_ODText_Meta
  • PHPWord_Writer_ODText_Mimetype
  • PHPWord_Writer_ODText_Styles
  • PHPWord_Writer_ODText_WriterPart
  • PHPWord_Writer_RTF
  • PHPWord_Writer_Word2007
  • PHPWord_Writer_Word2007_Base
  • PHPWord_Writer_Word2007_ContentTypes
  • PHPWord_Writer_Word2007_DocProps
  • PHPWord_Writer_Word2007_Document
  • PHPWord_Writer_Word2007_DocumentRels
  • PHPWord_Writer_Word2007_Footer
  • PHPWord_Writer_Word2007_Header
  • PHPWord_Writer_Word2007_Rels
  • PHPWord_Writer_Word2007_Styles
  • PHPWord_Writer_Word2007_WriterPart

Interfaces

  • PHPWord_Writer_IWriter

Exceptions

  • PHPWord_Exception
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * PHPWord
  4:  *
  5:  * Copyright (c) 2013 PHPWord
  6:  *
  7:  * This library is free software; you can redistribute it and/or
  8:  * modify it under the terms of the GNU Lesser General Public
  9:  * License as published by the Free Software Foundation; either
 10:  * version 2.1 of the License, or (at your option) any later version.
 11:  *
 12:  * This library is distributed in the hope that it will be useful,
 13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15:  * Lesser General Public License for more details.
 16:  *
 17:  * You should have received a copy of the GNU Lesser General Public
 18:  * License along with this library; if not, write to the Free Software
 19:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 20:  *
 21:  * @category   PHPWord
 22:  * @package    PHPWord
 23:  * @copyright  Copyright (c) 2013 PHPWord
 24:  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
 25:  * @version    0.7.0
 26:  */
 27: 
 28: /**
 29:  * Class PHPWord_Writer_Word2007_Styles
 30:  */
 31: class PHPWord_Writer_Word2007_Styles extends PHPWord_Writer_Word2007_Base
 32: {
 33: 
 34:     private $_document;
 35: 
 36:     public function writeStyles(PHPWord $pPHPWord = null)
 37:     {
 38:         // Create XML writer
 39:         $objWriter = null;
 40:         if ($this->getParentWriter()->getUseDiskCaching()) {
 41:             $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
 42:         } else {
 43:             $objWriter = new PHPWord_Shared_XMLWriter(PHPWord_Shared_XMLWriter::STORAGE_MEMORY);
 44:         }
 45: 
 46:         $this->_document = $pPHPWord;
 47: 
 48:         // XML header
 49:         $objWriter->startDocument('1.0', 'UTF-8', 'yes');
 50: 
 51:         $objWriter->startElement('w:styles');
 52: 
 53:         $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
 54:         $objWriter->writeAttribute('xmlns:w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
 55: 
 56:         // Write DocDefaults
 57:         $this->_writeDocDefaults($objWriter);
 58: 
 59:         // Reset Normal Paragraph Style
 60:         $objWriter->startElement('w:style');
 61:         $objWriter->writeAttribute('w:type', 'paragraph');
 62:         $objWriter->writeAttribute('w:default', '1');
 63:         $objWriter->writeAttribute('w:styleId', 'Normal');
 64:         $objWriter->startElement('w:name');
 65:         $objWriter->writeAttribute('w:val', 'Normal');
 66:         $objWriter->endElement(); // w:name
 67:         $objWriter->startElement('w:pPr');
 68:         $objWriter->startElement('w:spacing');
 69:         $objWriter->writeAttribute('w:before', 0);
 70:         $objWriter->writeAttribute('w:after', 0);
 71:         $objWriter->writeAttribute('w:line', 240);
 72:         $objWriter->endElement(); // w:spacing
 73:         $objWriter->endElement(); // w:pPr
 74:         $objWriter->endElement(); // w:style
 75: 
 76:         // Write Style Definitions
 77:         $styles = PHPWord_Style::getStyles();
 78:         if (count($styles) > 0) {
 79:             foreach ($styles as $styleName => $style) {
 80:                 if ($style instanceof PHPWord_Style_Font) {
 81: 
 82:                     $paragraphStyle = $style->getParagraphStyle();
 83:                     $styleType = $style->getStyleType();
 84: 
 85:                     $type = ($styleType == 'title') ? 'paragraph' : 'character';
 86: 
 87:                     if (!is_null($paragraphStyle)) {
 88:                         $type = 'paragraph';
 89:                     }
 90: 
 91:                     $objWriter->startElement('w:style');
 92:                     $objWriter->writeAttribute('w:type', $type);
 93: 
 94:                     if ($styleType == 'title') {
 95:                         $arrStyle = explode('_', $styleName);
 96:                         $styleId = 'Heading' . $arrStyle[1];
 97:                         $styleName = 'heading ' . $arrStyle[1];
 98:                         $styleLink = 'Heading' . $arrStyle[1] . 'Char';
 99:                         $objWriter->writeAttribute('w:styleId', $styleId);
100: 
101:                         $objWriter->startElement('w:link');
102:                         $objWriter->writeAttribute('w:val', $styleLink);
103:                         $objWriter->endElement();
104:                     }
105: 
106:                     $objWriter->startElement('w:name');
107:                     $objWriter->writeAttribute('w:val', $styleName);
108:                     $objWriter->endElement();
109: 
110:                     if (!is_null($paragraphStyle)) {
111:                         $objWriter->startElement('w:basedOn');
112:                         $objWriter->writeAttribute('w:val', 'Normal');
113:                         $objWriter->endElement();
114:                         $this->_writeParagraphStyle($objWriter, $paragraphStyle);
115:                     }
116: 
117:                     $this->_writeTextStyle($objWriter, $style);
118: 
119:                     $objWriter->endElement();
120: 
121:                 } elseif ($style instanceof PHPWord_Style_Paragraph) {
122:                     $objWriter->startElement('w:style');
123:                     $objWriter->writeAttribute('w:type', 'paragraph');
124:                     $objWriter->writeAttribute('w:customStyle', '1');
125:                     $objWriter->writeAttribute('w:styleId', $styleName);
126: 
127:                     $objWriter->startElement('w:name');
128:                     $objWriter->writeAttribute('w:val', $styleName);
129:                     $objWriter->endElement();
130: 
131:                     $objWriter->startElement('w:basedOn');
132:                     $objWriter->writeAttribute('w:val', 'Normal');
133:                     $objWriter->endElement();
134: 
135:                     $this->_writeParagraphStyle($objWriter, $style);
136:                     $objWriter->endElement();
137: 
138:                 } elseif ($style instanceof PHPWord_Style_TableFull) {
139:                     $objWriter->startElement('w:style');
140:                     $objWriter->writeAttribute('w:type', 'table');
141:                     $objWriter->writeAttribute('w:customStyle', '1');
142:                     $objWriter->writeAttribute('w:styleId', $styleName);
143: 
144:                     $objWriter->startElement('w:name');
145:                     $objWriter->writeAttribute('w:val', $styleName);
146:                     $objWriter->endElement();
147: 
148:                     $objWriter->startElement('w:uiPriority');
149:                     $objWriter->writeAttribute('w:val', '99');
150:                     $objWriter->endElement();
151: 
152:                     $this->_writeFullTableStyle($objWriter, $style);
153: 
154:                     $objWriter->endElement();
155:                 }
156:             }
157:         }
158: 
159:         $objWriter->endElement(); // w:styles
160: 
161:         // Return
162:         return $objWriter->getData();
163:     }
164: 
165:     private function _writeFullTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_TableFull $style)
166:     {
167: 
168:         $brdSz = $style->getBorderSize();
169:         $brdCol = $style->getBorderColor();
170:         $bgColor = $style->getBgColor();
171:         $cellMargin = $style->getCellMargin();
172: 
173:         $bTop = (!is_null($brdSz[0])) ? true : false;
174:         $bLeft = (!is_null($brdSz[1])) ? true : false;
175:         $bRight = (!is_null($brdSz[2])) ? true : false;
176:         $bBottom = (!is_null($brdSz[3])) ? true : false;
177:         $bInsH = (!is_null($brdSz[4])) ? true : false;
178:         $bInsV = (!is_null($brdSz[5])) ? true : false;
179:         $borders = ($bTop || $bLeft || $bRight || $bBottom || $bInsH || $bInsV) ? true : false;
180: 
181:         $mTop = (!is_null($cellMargin[0])) ? true : false;
182:         $mLeft = (!is_null($cellMargin[1])) ? true : false;
183:         $mRight = (!is_null($cellMargin[2])) ? true : false;
184:         $mBottom = (!is_null($cellMargin[3])) ? true : false;
185:         $margins = ($mTop || $mLeft || $mRight || $mBottom) ? true : false;
186: 
187:         $objWriter->startElement('w:tblPr');
188: 
189:         if ($margins) {
190:             $objWriter->startElement('w:tblCellMar');
191:             if ($mTop) {
192:                 echo $margins[0];
193:                 $objWriter->startElement('w:top');
194:                 $objWriter->writeAttribute('w:w', $cellMargin[0]);
195:                 $objWriter->writeAttribute('w:type', 'dxa');
196:                 $objWriter->endElement();
197:             }
198:             if ($mLeft) {
199:                 $objWriter->startElement('w:left');
200:                 $objWriter->writeAttribute('w:w', $cellMargin[1]);
201:                 $objWriter->writeAttribute('w:type', 'dxa');
202:                 $objWriter->endElement();
203:             }
204:             if ($mRight) {
205:                 $objWriter->startElement('w:right');
206:                 $objWriter->writeAttribute('w:w', $cellMargin[2]);
207:                 $objWriter->writeAttribute('w:type', 'dxa');
208:                 $objWriter->endElement();
209:             }
210:             if ($mBottom) {
211:                 $objWriter->startElement('w:bottom');
212:                 $objWriter->writeAttribute('w:w', $cellMargin[3]);
213:                 $objWriter->writeAttribute('w:type', 'dxa');
214:                 $objWriter->endElement();
215:             }
216:             $objWriter->endElement();
217:         }
218: 
219:         if ($borders) {
220:             $objWriter->startElement('w:tblBorders');
221:             if ($bTop) {
222:                 $objWriter->startElement('w:top');
223:                 $objWriter->writeAttribute('w:val', 'single');
224:                 $objWriter->writeAttribute('w:sz', $brdSz[0]);
225:                 $objWriter->writeAttribute('w:color', $brdCol[0]);
226:                 $objWriter->endElement();
227:             }
228:             if ($bLeft) {
229:                 $objWriter->startElement('w:left');
230:                 $objWriter->writeAttribute('w:val', 'single');
231:                 $objWriter->writeAttribute('w:sz', $brdSz[1]);
232:                 $objWriter->writeAttribute('w:color', $brdCol[1]);
233:                 $objWriter->endElement();
234:             }
235:             if ($bRight) {
236:                 $objWriter->startElement('w:right');
237:                 $objWriter->writeAttribute('w:val', 'single');
238:                 $objWriter->writeAttribute('w:sz', $brdSz[2]);
239:                 $objWriter->writeAttribute('w:color', $brdCol[2]);
240:                 $objWriter->endElement();
241:             }
242:             if ($bBottom) {
243:                 $objWriter->startElement('w:bottom');
244:                 $objWriter->writeAttribute('w:val', 'single');
245:                 $objWriter->writeAttribute('w:sz', $brdSz[3]);
246:                 $objWriter->writeAttribute('w:color', $brdCol[3]);
247:                 $objWriter->endElement();
248:             }
249:             if ($bInsH) {
250:                 $objWriter->startElement('w:insideH');
251:                 $objWriter->writeAttribute('w:val', 'single');
252:                 $objWriter->writeAttribute('w:sz', $brdSz[4]);
253:                 $objWriter->writeAttribute('w:color', $brdCol[4]);
254:                 $objWriter->endElement();
255:             }
256:             if ($bInsV) {
257:                 $objWriter->startElement('w:insideV');
258:                 $objWriter->writeAttribute('w:val', 'single');
259:                 $objWriter->writeAttribute('w:sz', $brdSz[5]);
260:                 $objWriter->writeAttribute('w:color', $brdCol[5]);
261:                 $objWriter->endElement();
262:             }
263:             $objWriter->endElement();
264:         }
265: 
266:         $objWriter->endElement();
267: 
268:         if (!is_null($bgColor)) {
269:             $objWriter->startElement('w:tcPr');
270:             $objWriter->startElement('w:shd');
271:             $objWriter->writeAttribute('w:val', 'clear');
272:             $objWriter->writeAttribute('w:color', 'auto');
273:             $objWriter->writeAttribute('w:fill', $bgColor);
274:             $objWriter->endElement();
275:             $objWriter->endElement();
276:         }
277: 
278: 
279:         // First Row
280:         $firstRow = $style->getFirstRow();
281:         if (!is_null($firstRow)) {
282:             $this->_writeRowStyle($objWriter, 'firstRow', $firstRow);
283:         }
284:     }
285: 
286:     private function _writeRowStyle(PHPWord_Shared_XMLWriter $objWriter = null, $type, PHPWord_Style_TableFull $style)
287:     {
288:         $brdSz = $style->getBorderSize();
289:         $brdCol = $style->getBorderColor();
290:         $bgColor = $style->getBgColor();
291: 
292:         $bTop = (!is_null($brdSz[0])) ? true : false;
293:         $bLeft = (!is_null($brdSz[1])) ? true : false;
294:         $bRight = (!is_null($brdSz[2])) ? true : false;
295:         $bBottom = (!is_null($brdSz[3])) ? true : false;
296:         $borders = ($bTop || $bLeft || $bRight || $bBottom) ? true : false;
297: 
298:         $objWriter->startElement('w:tblStylePr');
299:         $objWriter->writeAttribute('w:type', $type);
300: 
301:         $objWriter->startElement('w:tcPr');
302:         if (!is_null($bgColor)) {
303:             $objWriter->startElement('w:shd');
304:             $objWriter->writeAttribute('w:val', 'clear');
305:             $objWriter->writeAttribute('w:color', 'auto');
306:             $objWriter->writeAttribute('w:fill', $bgColor);
307:             $objWriter->endElement();
308:         }
309: 
310:         $objWriter->startElement('w:tcBorders');
311:         if ($bTop) {
312:             $objWriter->startElement('w:top');
313:             $objWriter->writeAttribute('w:val', 'single');
314:             $objWriter->writeAttribute('w:sz', $brdSz[0]);
315:             $objWriter->writeAttribute('w:color', $brdCol[0]);
316:             $objWriter->endElement();
317:         }
318:         if ($bLeft) {
319:             $objWriter->startElement('w:left');
320:             $objWriter->writeAttribute('w:val', 'single');
321:             $objWriter->writeAttribute('w:sz', $brdSz[1]);
322:             $objWriter->writeAttribute('w:color', $brdCol[1]);
323:             $objWriter->endElement();
324:         }
325:         if ($bRight) {
326:             $objWriter->startElement('w:right');
327:             $objWriter->writeAttribute('w:val', 'single');
328:             $objWriter->writeAttribute('w:sz', $brdSz[2]);
329:             $objWriter->writeAttribute('w:color', $brdCol[2]);
330:             $objWriter->endElement();
331:         }
332:         if ($bBottom) {
333:             $objWriter->startElement('w:bottom');
334:             $objWriter->writeAttribute('w:val', 'single');
335:             $objWriter->writeAttribute('w:sz', $brdSz[3]);
336:             $objWriter->writeAttribute('w:color', $brdCol[3]);
337:             $objWriter->endElement();
338:         }
339:         $objWriter->endElement();
340: 
341:         $objWriter->endElement();
342: 
343:         $objWriter->endElement();
344:     }
345: 
346: 
347:     private function _writeDocDefaults(PHPWord_Shared_XMLWriter $objWriter = null)
348:     {
349:         $fontName = $this->_document->getDefaultFontName();
350:         $fontSize = $this->_document->getDefaultFontSize();
351: 
352:         $objWriter->startElement('w:docDefaults');
353:         $objWriter->startElement('w:rPrDefault');
354:         $objWriter->startElement('w:rPr');
355: 
356:         $objWriter->startElement('w:rFonts');
357:         $objWriter->writeAttribute('w:ascii', $fontName);
358:         $objWriter->writeAttribute('w:hAnsi', $fontName);
359:         $objWriter->writeAttribute('w:eastAsia', $fontName);
360:         $objWriter->writeAttribute('w:cs', $fontName);
361:         $objWriter->endElement();
362: 
363:         $objWriter->startElement('w:sz');
364:         $objWriter->writeAttribute('w:val', $fontSize);
365:         $objWriter->endElement();
366: 
367:         $objWriter->startElement('w:szCs');
368:         $objWriter->writeAttribute('w:val', $fontSize);
369:         $objWriter->endElement();
370: 
371:         $objWriter->endElement();
372:         $objWriter->endElement();
373:         $objWriter->endElement();
374:     }
375: }
376: 
PHPWord API Docs API documentation generated by ApiGen 2.8.0