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_Base
 30:  */
 31: class PHPWord_Writer_Word2007_Base extends PHPWord_Writer_Word2007_WriterPart
 32: {
 33: 
 34:     protected function _writeText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Text $text, $withoutP = false)
 35:     {
 36:         $styleFont = $text->getFontStyle();
 37: 
 38:         $SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
 39: 
 40:         if (!$withoutP) {
 41:             $objWriter->startElement('w:p');
 42: 
 43:             $styleParagraph = $text->getParagraphStyle();
 44:             $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
 45: 
 46:             if ($SpIsObject) {
 47:                 $this->_writeParagraphStyle($objWriter, $styleParagraph);
 48:             } elseif (!$SpIsObject && !is_null($styleParagraph)) {
 49:                 $objWriter->startElement('w:pPr');
 50:                 $objWriter->startElement('w:pStyle');
 51:                 $objWriter->writeAttribute('w:val', $styleParagraph);
 52:                 $objWriter->endElement();
 53:                 $objWriter->endElement();
 54:             }
 55:         }
 56: 
 57:         $strText = htmlspecialchars($text->getText());
 58:         $strText = PHPWord_Shared_String::ControlCharacterPHP2OOXML($strText);
 59: 
 60:         $objWriter->startElement('w:r');
 61: 
 62:         if ($SfIsObject) {
 63:             $this->_writeTextStyle($objWriter, $styleFont);
 64:         } elseif (!$SfIsObject && !is_null($styleFont)) {
 65:             $objWriter->startElement('w:rPr');
 66:             $objWriter->startElement('w:rStyle');
 67:             $objWriter->writeAttribute('w:val', $styleFont);
 68:             $objWriter->endElement();
 69:             $objWriter->endElement();
 70:         }
 71: 
 72:         $objWriter->startElement('w:t');
 73:         $objWriter->writeAttribute('xml:space', 'preserve'); // needed because of drawing spaces before and after text
 74:         $objWriter->writeRaw($strText);
 75:         $objWriter->endElement();
 76: 
 77:         $objWriter->endElement(); // w:r
 78: 
 79:         if (!$withoutP) {
 80:             $objWriter->endElement(); // w:p
 81:         }
 82:     }
 83: 
 84:     protected function _writeTextRun(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_TextRun $textrun)
 85:     {
 86:         $elements = $textrun->getElements();
 87:         $styleParagraph = $textrun->getParagraphStyle();
 88: 
 89:         $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
 90: 
 91:         $objWriter->startElement('w:p');
 92: 
 93:         if ($SpIsObject) {
 94:             $this->_writeParagraphStyle($objWriter, $styleParagraph);
 95:         } elseif (!$SpIsObject && !is_null($styleParagraph)) {
 96:             $objWriter->startElement('w:pPr');
 97:             $objWriter->startElement('w:pStyle');
 98:             $objWriter->writeAttribute('w:val', $styleParagraph);
 99:             $objWriter->endElement();
100:             $objWriter->endElement();
101:         }
102: 
103:         if (count($elements) > 0) {
104:             foreach ($elements as $element) {
105:                 if ($element instanceof PHPWord_Section_Text) {
106:                     $this->_writeText($objWriter, $element, true);
107:                 } elseif ($element instanceof PHPWord_Section_Link) {
108:                     $this->_writeLink($objWriter, $element, true);
109:                 } elseif($element instanceof PHPWord_Section_TextBreak) {
110:                     $objWriter->writeElement('w:br');
111:                 }
112:             }
113:         }
114: 
115:         $objWriter->endElement();
116:     }
117: 
118:     protected function _writeParagraphStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Paragraph $style, $withoutPPR = false)
119:     {
120:         $align = $style->getAlign();
121:         $spaceBefore = $style->getSpaceBefore();
122:         $spaceAfter = $style->getSpaceAfter();
123:         $spacing = $style->getSpacing();
124:         $indent = $style->getIndent();
125:         $hanging = $style->getHanging();
126:         $tabs = $style->getTabs();
127: 
128:         if (!is_null($align) || !is_null($spacing) || !is_null($spaceBefore) || !is_null($spaceAfter) || !is_null($indent) || !is_null($tabs)) {
129:             if (!$withoutPPR) {
130:                 $objWriter->startElement('w:pPr');
131:             }
132: 
133:             if (!is_null($align)) {
134:                 $objWriter->startElement('w:jc');
135:                 $objWriter->writeAttribute('w:val', $align);
136:                 $objWriter->endElement();
137:             }
138: 
139:             if (!is_null($indent) || !is_null($hanging)) {
140:                 $objWriter->startElement('w:ind');
141:                 $objWriter->writeAttribute('w:firstLine', 0);
142:                 if (!is_null($indent)) {
143:                     $objWriter->writeAttribute('w:left', $indent);
144:                 }
145:                 if (!is_null($hanging)) {
146:                     $objWriter->writeAttribute('w:hanging', $hanging);
147:                 }
148:                 $objWriter->endElement();
149:             }
150: 
151:             if (!is_null($spaceBefore) || !is_null($spaceAfter) || !is_null($spacing)) {
152:                 $objWriter->startElement('w:spacing');
153:                 if (!is_null($spaceBefore)) {
154:                     $objWriter->writeAttribute('w:before', $spaceBefore);
155:                 }
156:                 if (!is_null($spaceAfter)) {
157:                     $objWriter->writeAttribute('w:after', $spaceAfter);
158:                 }
159:                 if (!is_null($spacing)) {
160:                     $objWriter->writeAttribute('w:line', $spacing);
161:                     $objWriter->writeAttribute('w:lineRule', 'auto');
162:                 }
163:                 $objWriter->endElement();
164:             }
165: 
166:             if (!is_null($tabs)) {
167:                 $tabs->toXml($objWriter);
168:             }
169: 
170:             if (!$withoutPPR) {
171:                 $objWriter->endElement(); // w:pPr
172:             }
173:         }
174:     }
175: 
176:     protected function _writeLink(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Link $link, $withoutP = false)
177:     {
178:         $rID = $link->getRelationId();
179:         $linkName = $link->getLinkName();
180:         if (is_null($linkName)) {
181:             $linkName = $link->getLinkSrc();
182:         }
183: 
184:         $styleFont = $link->getFontStyle();
185:         $SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
186: 
187:         if (!$withoutP) {
188:             $objWriter->startElement('w:p');
189: 
190:             $styleParagraph = $link->getParagraphStyle();
191:             $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
192: 
193:             if ($SpIsObject) {
194:                 $this->_writeParagraphStyle($objWriter, $styleParagraph);
195:             } elseif (!$SpIsObject && !is_null($styleParagraph)) {
196:                 $objWriter->startElement('w:pPr');
197:                 $objWriter->startElement('w:pStyle');
198:                 $objWriter->writeAttribute('w:val', $styleParagraph);
199:                 $objWriter->endElement();
200:                 $objWriter->endElement();
201:             }
202:         }
203: 
204:         $objWriter->startElement('w:hyperlink');
205:         $objWriter->writeAttribute('r:id', 'rId' . $rID);
206:         $objWriter->writeAttribute('w:history', '1');
207: 
208:         $objWriter->startElement('w:r');
209:         if ($SfIsObject) {
210:             $this->_writeTextStyle($objWriter, $styleFont);
211:         } elseif (!$SfIsObject && !is_null($styleFont)) {
212:             $objWriter->startElement('w:rPr');
213:             $objWriter->startElement('w:rStyle');
214:             $objWriter->writeAttribute('w:val', $styleFont);
215:             $objWriter->endElement();
216:             $objWriter->endElement();
217:         }
218: 
219:         $objWriter->startElement('w:t');
220:         $objWriter->writeAttribute('xml:space', 'preserve'); // needed because of drawing spaces before and after text
221:         $objWriter->writeRaw($linkName);
222:         $objWriter->endElement();
223:         $objWriter->endElement();
224: 
225:         $objWriter->endElement();
226: 
227:         if (!$withoutP) {
228:             $objWriter->endElement(); // w:p
229:         }
230:     }
231: 
232:     protected function _writePreserveText(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Footer_PreserveText $textrun)
233:     {
234:         $styleFont = $textrun->getFontStyle();
235:         $styleParagraph = $textrun->getParagraphStyle();
236: 
237:         $SfIsObject = ($styleFont instanceof PHPWord_Style_Font) ? true : false;
238:         $SpIsObject = ($styleParagraph instanceof PHPWord_Style_Paragraph) ? true : false;
239: 
240:         $arrText = $textrun->getText();
241: 
242:         $objWriter->startElement('w:p');
243: 
244:         if ($SpIsObject) {
245:             $this->_writeParagraphStyle($objWriter, $styleParagraph);
246:         } elseif (!$SpIsObject && !is_null($styleParagraph)) {
247:             $objWriter->startElement('w:pPr');
248:             $objWriter->startElement('w:pStyle');
249:             $objWriter->writeAttribute('w:val', $styleParagraph);
250:             $objWriter->endElement();
251:             $objWriter->endElement();
252:         }
253: 
254:         foreach ($arrText as $text) {
255: 
256:             if (substr($text, 0, 1) == '{') {
257:                 $text = substr($text, 1, -1);
258: 
259:                 $objWriter->startElement('w:r');
260:                 $objWriter->startElement('w:fldChar');
261:                 $objWriter->writeAttribute('w:fldCharType', 'begin');
262:                 $objWriter->endElement();
263:                 $objWriter->endElement();
264: 
265:                 $objWriter->startElement('w:r');
266: 
267:                 if ($SfIsObject) {
268:                     $this->_writeTextStyle($objWriter, $styleFont);
269:                 } elseif (!$SfIsObject && !is_null($styleFont)) {
270:                     $objWriter->startElement('w:rPr');
271:                     $objWriter->startElement('w:rStyle');
272:                     $objWriter->writeAttribute('w:val', $styleFont);
273:                     $objWriter->endElement();
274:                     $objWriter->endElement();
275:                 }
276: 
277:                 $objWriter->startElement('w:instrText');
278:                 $objWriter->writeAttribute('xml:space', 'preserve');
279:                 $objWriter->writeRaw($text);
280:                 $objWriter->endElement();
281:                 $objWriter->endElement();
282: 
283:                 $objWriter->startElement('w:r');
284:                 $objWriter->startElement('w:fldChar');
285:                 $objWriter->writeAttribute('w:fldCharType', 'separate');
286:                 $objWriter->endElement();
287:                 $objWriter->endElement();
288: 
289:                 $objWriter->startElement('w:r');
290:                 $objWriter->startElement('w:fldChar');
291:                 $objWriter->writeAttribute('w:fldCharType', 'end');
292:                 $objWriter->endElement();
293:                 $objWriter->endElement();
294:             } else {
295:                 $text = htmlspecialchars($text);
296:                 $text = PHPWord_Shared_String::ControlCharacterPHP2OOXML($text);
297: 
298:                 $objWriter->startElement('w:r');
299: 
300:                 if ($SfIsObject) {
301:                     $this->_writeTextStyle($objWriter, $styleFont);
302:                 } elseif (!$SfIsObject && !is_null($styleFont)) {
303:                     $objWriter->startElement('w:rPr');
304:                     $objWriter->startElement('w:rStyle');
305:                     $objWriter->writeAttribute('w:val', $styleFont);
306:                     $objWriter->endElement();
307:                     $objWriter->endElement();
308:                 }
309: 
310:                 $objWriter->startElement('w:t');
311:                 $objWriter->writeAttribute('xml:space', 'preserve');
312:                 $objWriter->writeRaw($text);
313:                 $objWriter->endElement();
314:                 $objWriter->endElement();
315:             }
316:         }
317: 
318:         $objWriter->endElement(); // p
319:     }
320: 
321:     protected function _writeTextStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Font $style)
322:     {
323:         $font = $style->getName();
324:         $bold = $style->getBold();
325:         $italic = $style->getItalic();
326:         $color = $style->getColor();
327:         $size = $style->getSize();
328:         $fgColor = $style->getFgColor();
329:         $striketrough = $style->getStrikethrough();
330:         $underline = $style->getUnderline();
331:         $superscript = $style->getSuperScript();
332:         $subscript = $style->getSubScript();
333: 
334:         $objWriter->startElement('w:rPr');
335: 
336:         // Font
337:         if ($font != PHPWord::DEFAULT_FONT_NAME) {
338:             $objWriter->startElement('w:rFonts');
339:             $objWriter->writeAttribute('w:ascii', $font);
340:             $objWriter->writeAttribute('w:hAnsi', $font);
341:             $objWriter->writeAttribute('w:cs', $font);
342:             $objWriter->endElement();
343:         }
344: 
345:         // Color
346:         if ($color != '000000') {
347:             $objWriter->startElement('w:color');
348:             $objWriter->writeAttribute('w:val', $color);
349:             $objWriter->endElement();
350:         }
351: 
352:         // Size
353:         if ($size != PHPWord::DEFAULT_FONT_SIZE) {
354:             $objWriter->startElement('w:sz');
355:             $objWriter->writeAttribute('w:val', $size);
356:             $objWriter->endElement();
357:             $objWriter->startElement('w:szCs');
358:             $objWriter->writeAttribute('w:val', $size);
359:             $objWriter->endElement();
360:         }
361: 
362:         // Bold
363:         if ($bold) {
364:             $objWriter->writeElement('w:b', null);
365:         }
366: 
367:         // Italic
368:         if ($italic) {
369:             $objWriter->writeElement('w:i', null);
370:             $objWriter->writeElement('w:iCs', null);
371:         }
372: 
373:         // Underline
374:         if (!is_null($underline) && $underline != 'none') {
375:             $objWriter->startElement('w:u');
376:             $objWriter->writeAttribute('w:val', $underline);
377:             $objWriter->endElement();
378:         }
379: 
380:         // Striketrough
381:         if ($striketrough) {
382:             $objWriter->writeElement('w:strike', null);
383:         }
384: 
385:         // Foreground-Color
386:         if (!is_null($fgColor)) {
387:             $objWriter->startElement('w:highlight');
388:             $objWriter->writeAttribute('w:val', $fgColor);
389:             $objWriter->endElement();
390:         }
391: 
392:         // Superscript/subscript
393:         if ($superscript || $subscript) {
394:             $objWriter->startElement('w:vertAlign');
395:             $objWriter->writeAttribute('w:val', $superscript ? 'superscript' : 'subscript');
396:             $objWriter->endElement();
397:         }
398: 
399:         $objWriter->endElement();
400:     }
401: 
402:     protected function _writeTextBreak(PHPWord_Shared_XMLWriter $objWriter = null)
403:     {
404:         $objWriter->writeElement('w:p', null);
405:     }
406: 
407:     protected function _writeTable(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Table $table)
408:     {
409:         $_rows = $table->getRows();
410:         $_cRows = count($_rows);
411: 
412:         if ($_cRows > 0) {
413:             $objWriter->startElement('w:tbl');
414:             $tblStyle = $table->getStyle();
415:             $tblWidth = $table->getWidth();
416:             if ($tblStyle instanceof PHPWord_Style_Table) {
417:                 $this->_writeTableStyle($objWriter, $tblStyle);
418:             } else {
419:                 if (!empty($tblStyle)) {
420:                     $objWriter->startElement('w:tblPr');
421:                     $objWriter->startElement('w:tblStyle');
422:                     $objWriter->writeAttribute('w:val', $tblStyle);
423:                     $objWriter->endElement();
424:                     if (!is_null($tblWidth)) {
425:                         $objWriter->startElement('w:tblW');
426:                         $objWriter->writeAttribute('w:w', $tblWidth);
427:                         $objWriter->writeAttribute('w:type', 'pct');
428:                         $objWriter->endElement();
429:                     }
430:                     $objWriter->endElement();
431:                 }
432:             }
433: 
434:             for ($i = 0; $i < $_cRows; $i++) {
435:                 $row = $_rows[$i];
436:                 $height = $row->getHeight();
437:                 $rowStyle = $row->getStyle();
438:                 $tblHeader = $rowStyle->getTblHeader();
439:                 $cantSplit = $rowStyle->getCantSplit();
440: 
441:                 $objWriter->startElement('w:tr');
442: 
443:                 if (!is_null($height) || !is_null($tblHeader) || !is_null($cantSplit)) {
444:                     $objWriter->startElement('w:trPr');
445:                     if (!is_null($height)) {
446:                         $objWriter->startElement('w:trHeight');
447:                         $objWriter->writeAttribute('w:val', $height);
448:                         $objWriter->endElement();
449:                     }
450:                     if (!is_null($tblHeader)) {
451:                         $objWriter->startElement('w:tblHeader');
452:                         $objWriter->writeAttribute('w:val', $tblHeader);
453:                         $objWriter->endElement();
454:                     }
455:                     if (!is_null($cantSplit)) {
456:                         $objWriter->startElement('w:cantSplit');
457:                         $objWriter->writeAttribute('w:val', $cantSplit);
458:                         $objWriter->endElement();
459:                     }
460:                     $objWriter->endElement();
461:                 }
462: 
463:                 foreach ($row->getCells() as $cell) {
464:                     $objWriter->startElement('w:tc');
465: 
466:                     $cellStyle = $cell->getStyle();
467:                     $width = $cell->getWidth();
468: 
469:                     $objWriter->startElement('w:tcPr');
470:                     $objWriter->startElement('w:tcW');
471:                     $objWriter->writeAttribute('w:w', $width);
472:                     $objWriter->writeAttribute('w:type', 'pct');
473:                     $objWriter->endElement();
474: 
475:                     if ($cellStyle instanceof PHPWord_Style_Cell) {
476:                         $this->_writeCellStyle($objWriter, $cellStyle);
477:                     }
478: 
479:                     $objWriter->endElement();
480: 
481:                     $_elements = $cell->getElements();
482:                     if (count($_elements) > 0) {
483:                         foreach ($_elements as $element) {
484:                             if ($element instanceof PHPWord_Section_Text) {
485:                                 $this->_writeText($objWriter, $element);
486:                             } elseif ($element instanceof PHPWord_Section_TextRun) {
487:                                 $this->_writeTextRun($objWriter, $element);
488:                             } elseif ($element instanceof PHPWord_Section_Link) {
489:                                 $this->_writeLink($objWriter, $element);
490:                             } elseif ($element instanceof PHPWord_Section_TextBreak) {
491:                                 $this->_writeTextBreak($objWriter);
492:                             } elseif ($element instanceof PHPWord_Section_ListItem) {
493:                                 $this->_writeListItem($objWriter, $element);
494:                             } elseif ($element instanceof PHPWord_Section_Image ||
495:                                 $element instanceof PHPWord_Section_MemoryImage
496:                             ) {
497:                                 $this->_writeImage($objWriter, $element);
498:                             } elseif ($element instanceof PHPWord_Section_Object) {
499:                                 $this->_writeObject($objWriter, $element);
500:                             } elseif ($element instanceof PHPWord_Section_Footer_PreserveText) {
501:                                 $this->_writePreserveText($objWriter, $element);
502:                             }
503:                         }
504:                     } else {
505:                         $this->_writeTextBreak($objWriter);
506:                     }
507: 
508:                     $objWriter->endElement();
509:                 }
510:                 $objWriter->endElement();
511:             }
512:             $objWriter->endElement();
513:         }
514:     }
515: 
516:     protected function _writeTableStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Table $style = null)
517:     {
518:         $margins = $style->getCellMargin();
519:         $mTop = (!is_null($margins[0])) ? true : false;
520:         $mLeft = (!is_null($margins[1])) ? true : false;
521:         $mRight = (!is_null($margins[2])) ? true : false;
522:         $mBottom = (!is_null($margins[3])) ? true : false;
523: 
524:         if ($mTop || $mLeft || $mRight || $mBottom) {
525:             $objWriter->startElement('w:tblPr');
526:             $objWriter->startElement('w:tblCellMar');
527: 
528:             if ($mTop) {
529:                 $objWriter->startElement('w:top');
530:                 $objWriter->writeAttribute('w:w', $margins[0]);
531:                 $objWriter->writeAttribute('w:type', 'dxa');
532:                 $objWriter->endElement();
533:             }
534: 
535:             if ($mLeft) {
536:                 $objWriter->startElement('w:left');
537:                 $objWriter->writeAttribute('w:w', $margins[1]);
538:                 $objWriter->writeAttribute('w:type', 'dxa');
539:                 $objWriter->endElement();
540:             }
541: 
542:             if ($mRight) {
543:                 $objWriter->startElement('w:right');
544:                 $objWriter->writeAttribute('w:w', $margins[2]);
545:                 $objWriter->writeAttribute('w:type', 'dxa');
546:                 $objWriter->endElement();
547:             }
548: 
549:             if ($mBottom) {
550:                 $objWriter->startElement('w:bottom');
551:                 $objWriter->writeAttribute('w:w', $margins[3]);
552:                 $objWriter->writeAttribute('w:type', 'dxa');
553:                 $objWriter->endElement();
554:             }
555: 
556:             $objWriter->endElement();
557:             $objWriter->endElement();
558:         }
559:     }
560: 
561:     protected function _writeCellStyle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Style_Cell $style = null)
562:     {
563:         $bgColor = $style->getBgColor();
564:         $valign = $style->getVAlign();
565:         $textDir = $style->getTextDirection();
566:         $brdSz = $style->getBorderSize();
567:         $brdCol = $style->getBorderColor();
568: 
569:         $bTop = (!is_null($brdSz[0])) ? true : false;
570:         $bLeft = (!is_null($brdSz[1])) ? true : false;
571:         $bRight = (!is_null($brdSz[2])) ? true : false;
572:         $bBottom = (!is_null($brdSz[3])) ? true : false;
573:         $borders = ($bTop || $bLeft || $bRight || $bBottom) ? true : false;
574: 
575:         $styles = (!is_null($bgColor) || !is_null($valign) || !is_null($textDir) || $borders) ? true : false;
576: 
577:         if ($styles) {
578:             if (!is_null($textDir)) {
579:                 $objWriter->startElement('w:textDirection');
580:                 $objWriter->writeAttribute('w:val', $textDir);
581:                 $objWriter->endElement();
582:             }
583: 
584:             if (!is_null($bgColor)) {
585:                 $objWriter->startElement('w:shd');
586:                 $objWriter->writeAttribute('w:val', 'clear');
587:                 $objWriter->writeAttribute('w:color', 'auto');
588:                 $objWriter->writeAttribute('w:fill', $bgColor);
589:                 $objWriter->endElement();
590:             }
591: 
592:             if (!is_null($valign)) {
593:                 $objWriter->startElement('w:vAlign');
594:                 $objWriter->writeAttribute('w:val', $valign);
595:                 $objWriter->endElement();
596:             }
597: 
598:             if ($borders) {
599:                 $_defaultColor = $style->getDefaultBorderColor();
600: 
601:                 $objWriter->startElement('w:tcBorders');
602:                 if ($bTop) {
603:                     if (is_null($brdCol[0])) {
604:                         $brdCol[0] = $_defaultColor;
605:                     }
606:                     $objWriter->startElement('w:top');
607:                     $objWriter->writeAttribute('w:val', 'single');
608:                     $objWriter->writeAttribute('w:sz', $brdSz[0]);
609:                     $objWriter->writeAttribute('w:color', $brdCol[0]);
610:                     $objWriter->endElement();
611:                 }
612: 
613:                 if ($bLeft) {
614:                     if (is_null($brdCol[1])) {
615:                         $brdCol[1] = $_defaultColor;
616:                     }
617:                     $objWriter->startElement('w:left');
618:                     $objWriter->writeAttribute('w:val', 'single');
619:                     $objWriter->writeAttribute('w:sz', $brdSz[1]);
620:                     $objWriter->writeAttribute('w:color', $brdCol[1]);
621:                     $objWriter->endElement();
622:                 }
623: 
624:                 if ($bRight) {
625:                     if (is_null($brdCol[2])) {
626:                         $brdCol[2] = $_defaultColor;
627:                     }
628:                     $objWriter->startElement('w:right');
629:                     $objWriter->writeAttribute('w:val', 'single');
630:                     $objWriter->writeAttribute('w:sz', $brdSz[2]);
631:                     $objWriter->writeAttribute('w:color', $brdCol[2]);
632:                     $objWriter->endElement();
633:                 }
634: 
635:                 if ($bBottom) {
636:                     if (is_null($brdCol[3])) {
637:                         $brdCol[3] = $_defaultColor;
638:                     }
639:                     $objWriter->startElement('w:bottom');
640:                     $objWriter->writeAttribute('w:val', 'single');
641:                     $objWriter->writeAttribute('w:sz', $brdSz[3]);
642:                     $objWriter->writeAttribute('w:color', $brdCol[3]);
643:                     $objWriter->endElement();
644:                 }
645: 
646:                 $objWriter->endElement();
647:             }
648:         }
649:         $gridSpan = $style->getGridSpan();
650:         if (!is_null($gridSpan)) {
651:             $objWriter->startElement('w:gridSpan');
652:             $objWriter->writeAttribute('w:val', $gridSpan);
653:             $objWriter->endElement();
654:         }
655: 
656:         $vMerge = $style->getVMerge();
657:         if (!is_null($vMerge)) {
658:             $objWriter->startElement('w:vMerge');
659:             $objWriter->writeAttribute('w:val', $vMerge);
660:             $objWriter->endElement();
661:         }
662:     }
663: 
664:     /**
665:      * @param \PHPWord_Shared_XMLWriter $objWriter
666:      * @param \PHPWord_Section_Image $image
667:      */
668:     protected function _writeImage(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Image $image)
669:     {
670:         $rId = $image->getRelationId();
671: 
672:         $style = $image->getStyle();
673:         $width = $style->getWidth();
674:         $height = $style->getHeight();
675:         $align = $style->getAlign();
676:         $marginTop = $style->getMarginTop();
677:         $marginLeft = $style->getMarginLeft();
678:         $wrappingStyle = $style->getWrappingStyle();
679: 
680:         $objWriter->startElement('w:p');
681: 
682:         if (!is_null($align)) {
683:             $objWriter->startElement('w:pPr');
684:             $objWriter->startElement('w:jc');
685:             $objWriter->writeAttribute('w:val', $align);
686:             $objWriter->endElement();
687:             $objWriter->endElement();
688:         }
689: 
690:         $objWriter->startElement('w:r');
691: 
692:         $objWriter->startElement('w:pict');
693: 
694:         $objWriter->startElement('v:shape');
695:         $objWriter->writeAttribute('type', '#_x0000_t75');
696: 
697:         $imgStyle = '';
698:         if (null !== $width) {
699:             $imgStyle .= 'width:' . $width . 'px;';
700:         }
701:         if (null !== $height) {
702:             $imgStyle .= 'height:' . $height . 'px;';
703:         }
704:         if (null !== $marginTop) {
705:             $imgStyle .= 'margin-top:' . $marginTop . 'in;';
706:         }
707:         if (null !== $marginLeft) {
708:             $imgStyle .= 'margin-left:' . $marginLeft . 'in;';
709:         }
710: 
711:         switch ($wrappingStyle) {
712:             case PHPWord_Style_Image::WRAPPING_STYLE_BEHIND:
713:                 $imgStyle .= 'position:absolute;z-index:-251658752;';
714:                 break;
715:             case PHPWord_Style_Image::WRAPPING_STYLE_SQUARE:
716:                 $imgStyle .= 'position:absolute;z-index:251659264;mso-position-horizontal:absolute;mso-position-vertical:absolute;';
717:                 break;
718:             case PHPWord_Style_Image::WRAPPING_STYLE_TIGHT:
719:                 $imgStyle .= 'position:absolute;z-index:251659264;mso-wrap-edited:f;mso-position-horizontal:absolute;mso-position-vertical:absolute';
720:                 break;
721:             case PHPWord_Style_Image::WRAPPING_STYLE_INFRONT:
722:                 $imgStyle .= 'position:absolute;zz-index:251659264;mso-position-horizontal:absolute;mso-position-vertical:absolute;';
723:                 break;
724:         }
725: 
726:         $objWriter->writeAttribute('style', $imgStyle);
727: 
728:         $objWriter->startElement('v:imagedata');
729:         $objWriter->writeAttribute('r:id', 'rId' . $rId);
730:         $objWriter->writeAttribute('o:title', '');
731:         $objWriter->endElement();
732:         $objWriter->endElement();
733: 
734:         $objWriter->endElement();
735: 
736:         $objWriter->endElement();
737: 
738:         $objWriter->endElement();
739:     }
740: 
741:     protected function _writeWatermark(PHPWord_Shared_XMLWriter $objWriter = null, $image)
742:     {
743:         $rId = $image->getRelationId();
744: 
745:         $style = $image->getStyle();
746:         $width = $style->getWidth();
747:         $height = $style->getHeight();
748:         $marginLeft = $style->getMarginLeft();
749:         $marginTop = $style->getMarginTop();
750: 
751:         $objWriter->startElement('w:p');
752: 
753:         $objWriter->startElement('w:r');
754: 
755:         $objWriter->startElement('w:pict');
756: 
757:         $objWriter->startElement('v:shape');
758:         $objWriter->writeAttribute('type', '#_x0000_t75');
759: 
760:         $strStyle = 'position:absolute;';
761:         $strStyle .= ' width:' . $width . 'px;';
762:         $strStyle .= ' height:' . $height . 'px;';
763:         if (!is_null($marginTop)) {
764:             $strStyle .= ' margin-top:' . $marginTop . 'px;';
765:         }
766:         if (!is_null($marginLeft)) {
767:             $strStyle .= ' margin-left:' . $marginLeft . 'px;';
768:         }
769: 
770:         $objWriter->writeAttribute('style', $strStyle);
771: 
772:         $objWriter->startElement('v:imagedata');
773:         $objWriter->writeAttribute('r:id', 'rId' . $rId);
774:         $objWriter->writeAttribute('o:title', '');
775:         $objWriter->endElement();
776:         $objWriter->endElement();
777: 
778:         $objWriter->endElement();
779: 
780:         $objWriter->endElement();
781: 
782:         $objWriter->endElement();
783:     }
784: 
785:     protected function _writeTitle(PHPWord_Shared_XMLWriter $objWriter = null, PHPWord_Section_Title $title)
786:     {
787:         $text = htmlspecialchars($title->getText());
788:         $text = PHPWord_Shared_String::ControlCharacterPHP2OOXML($text);
789:         $anchor = $title->getAnchor();
790:         $bookmarkId = $title->getBookmarkId();
791:         $style = $title->getStyle();
792: 
793:         $objWriter->startElement('w:p');
794: 
795:         if (!empty($style)) {
796:             $objWriter->startElement('w:pPr');
797:             $objWriter->startElement('w:pStyle');
798:             $objWriter->writeAttribute('w:val', $style);
799:             $objWriter->endElement();
800:             $objWriter->endElement();
801:         }
802: 
803:         $objWriter->startElement('w:r');
804:         $objWriter->startElement('w:fldChar');
805:         $objWriter->writeAttribute('w:fldCharType', 'end');
806:         $objWriter->endElement();
807:         $objWriter->endElement();
808: 
809:         $objWriter->startElement('w:bookmarkStart');
810:         $objWriter->writeAttribute('w:id', $bookmarkId);
811:         $objWriter->writeAttribute('w:name', $anchor);
812:         $objWriter->endElement();
813: 
814:         $objWriter->startElement('w:r');
815:         $objWriter->startElement('w:t');
816:         $objWriter->writeRaw($text);
817:         $objWriter->endElement();
818:         $objWriter->endElement();
819: 
820:         $objWriter->startElement('w:bookmarkEnd');
821:         $objWriter->writeAttribute('w:id', $bookmarkId);
822:         $objWriter->endElement();
823: 
824:         $objWriter->endElement();
825:     }
826: }
PHPWord API Docs API documentation generated by ApiGen 2.8.0