/** * Write font faces declaration */ protected function writeFontFaces(XMLWriter $xmlWriter) { $xmlWriter->startElement('office:font-face-decls'); $arrFonts = array(); $styles = Style::getStyles(); $numFonts = 0; if (count($styles) > 0) { foreach ($styles as $style) { // Font if ($style instanceof Font) { $numFonts++; $name = $style->getName(); if (!in_array($name, $arrFonts)) { $arrFonts[] = $name; // style:font-face $xmlWriter->startElement('style:font-face'); $xmlWriter->writeAttribute('style:name', $name); $xmlWriter->writeAttribute('svg:font-family', $name); $xmlWriter->endElement(); } } } } if (!in_array(PhpWord::DEFAULT_FONT_NAME, $arrFonts)) { $xmlWriter->startElement('style:font-face'); $xmlWriter->writeAttribute('style:name', PhpWord::DEFAULT_FONT_NAME); $xmlWriter->writeAttribute('svg:font-family', PhpWord::DEFAULT_FONT_NAME); $xmlWriter->endElement(); } $xmlWriter->endElement(); }
/** * Write font faces declaration */ protected function writeFontFaces(XMLWriter $xmlWriter) { $xmlWriter->startElement('office:font-face-decls'); $fontTable = array(); $styles = Style::getStyles(); $numFonts = 0; if (count($styles) > 0) { foreach ($styles as $style) { // Font if ($style instanceof Font) { $numFonts++; $name = $style->getName(); if (!in_array($name, $fontTable)) { $fontTable[] = $name; // style:font-face $xmlWriter->startElement('style:font-face'); $xmlWriter->writeAttribute('style:name', $name); $xmlWriter->writeAttribute('svg:font-family', $name); $xmlWriter->endElement(); } } } } if (!in_array(Settings::getDefaultFontName(), $fontTable)) { $xmlWriter->startElement('style:font-face'); $xmlWriter->writeAttribute('style:name', Settings::getDefaultFontName()); $xmlWriter->writeAttribute('svg:font-family', Settings::getDefaultFontName()); $xmlWriter->endElement(); } $xmlWriter->endElement(); }
/** * Start w:p DOM element. * * @uses \PhpOffice\PhpWord\Writer\Word2007\Element\PageBreak::write() * @return void */ protected function startElementP() { if (!$this->withoutP) { $this->xmlWriter->startElement('w:p'); // Paragraph style if (method_exists($this->element, 'getParagraphStyle')) { $this->writeParagraphStyle(); } } }
/** * Write content types element * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter XML Writer * @param array $parts * @param boolean $isDefault */ private function writeContentType(XMLWriter $xmlWriter, $parts, $isDefault) { foreach ($parts as $partName => $contentType) { $partType = $isDefault ? 'Default' : 'Override'; $partAttribute = $isDefault ? 'Extension' : 'PartName'; $xmlWriter->startElement($partType); $xmlWriter->writeAttribute($partAttribute, $partName); $xmlWriter->writeAttribute('ContentType', $contentType); $xmlWriter->endElement(); } }
/** * Write content types element * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter XML Writer * @param array $parts * @param boolean $isDefault * @throws \PhpOffice\PhpWord\Exception\Exception */ private function writeContentType(XMLWriter $xmlWriter, $parts, $isDefault) { foreach ($parts as $partName => $contentType) { if ($partName != '' && $contentType != '') { $partType = $isDefault ? 'Default' : 'Override'; $partAttribute = $isDefault ? 'Extension' : 'PartName'; $xmlWriter->startElement($partType); $xmlWriter->writeAttribute($partAttribute, $partName); $xmlWriter->writeAttribute('ContentType', $contentType); $xmlWriter->endElement(); } else { throw new Exception("Invalid parameters passed."); } } }
/** * Write indivual setting, recursive to any child settings * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $settingKey * @param array|string $settingValue */ protected function writeSetting($xmlWriter, $settingKey, $settingValue) { if ($settingValue == '') { $xmlWriter->writeElement($settingKey); } else { $xmlWriter->startElement($settingKey); foreach ($settingValue as $childKey => $childValue) { if ($childKey == '@attributes') { foreach ($childValue as $key => $val) { $xmlWriter->writeAttribute($key, $val); } } else { $this->writeSetting($xmlWriter, $childKey, $childValue); } } $xmlWriter->endElement(); } }
/** * Write side. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $side * @param int $width * @param string $color * @return void */ private function writeSide(XMLWriter $xmlWriter, $side, $width, $color = null) { $xmlWriter->startElement('w:' . $side); if (!empty($this->colors)) { if ($color === null && !empty($this->attributes)) { if (isset($this->attributes['defaultColor'])) { $color = $this->attributes['defaultColor']; } } $xmlWriter->writeAttribute('w:val', 'single'); $xmlWriter->writeAttribute('w:sz', $width); $xmlWriter->writeAttribute('w:color', $color); if (!empty($this->attributes)) { if (isset($this->attributes['space'])) { $xmlWriter->writeAttribute('w:space', $this->attributes['space']); } } } else { $xmlWriter->writeAttribute('w:w', $width); $xmlWriter->writeAttribute('w:type', 'dxa'); } $xmlWriter->endElement(); }
/** * Write table style * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $styleName * @param \PhpOffice\PhpWord\Style\Table $style */ private function writeTableStyle(XMLWriter $xmlWriter, $styleName, TableStyle $style) { $xmlWriter->startElement('w:style'); $xmlWriter->writeAttribute('w:type', 'table'); $xmlWriter->writeAttribute('w:customStyle', '1'); $xmlWriter->writeAttribute('w:styleId', $styleName); $xmlWriter->startElement('w:name'); $xmlWriter->writeAttribute('w:val', $styleName); $xmlWriter->endElement(); $xmlWriter->startElement('w:uiPriority'); $xmlWriter->writeAttribute('w:val', '99'); $xmlWriter->endElement(); $styleWriter = new TableStyleWriter($xmlWriter, $style); $styleWriter->write(); $xmlWriter->endElement(); // w:style }
/** * Write note item * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\Footnote|\PhpOffice\PhpWord\Element\Endnote $element */ protected function writeNote(XMLWriter $xmlWriter, $element) { $xmlWriter->startElement($this->elementNode); $xmlWriter->writeAttribute('w:id', $element->getRelationId()); $xmlWriter->startElement('w:p'); // Paragraph style $styleWriter = new ParagraphStyleWriter($xmlWriter, $element->getParagraphStyle()); $styleWriter->setIsInline(true); $styleWriter->write(); // Reference symbol $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:rPr'); $xmlWriter->startElement('w:rStyle'); $xmlWriter->writeAttribute('w:val', $this->refStyle); $xmlWriter->endElement(); // w:rStyle $xmlWriter->endElement(); // w:rPr $xmlWriter->writeElement($this->refNode); $xmlWriter->endElement(); // w:r // Empty space after refence symbol $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:t'); $xmlWriter->writeAttribute('xml:space', 'preserve'); $xmlWriter->writeRaw(' '); $xmlWriter->endElement(); // w:t $xmlWriter->endElement(); // w:r $this->writeContainerElements($xmlWriter, $element); $xmlWriter->endElement(); // w:p $xmlWriter->endElement(); // $this->elementNode }
/** * Write shading. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Style\Table $style * @return void */ private function writeShading(XMLWriter $xmlWriter, TableStyle $style) { if (null !== $style->getShading()) { $xmlWriter->startElement('w:tcPr'); $styleWriter = new Shading($xmlWriter, $style->getShading()); $styleWriter->write(); $xmlWriter->endElement(); } }
/** * Write end section. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\Section $section * @return void */ private function writeSectionSettings(XMLWriter $xmlWriter, Section $section) { $xmlWriter->startElement('w:sectPr'); // Header reference foreach ($section->getHeaders() as $header) { $rId = $header->getRelationId(); $xmlWriter->startElement('w:headerReference'); $xmlWriter->writeAttribute('w:type', $header->getType()); $xmlWriter->writeAttribute('r:id', 'rId' . $rId); $xmlWriter->endElement(); } // Footer reference foreach ($section->getFooters() as $footer) { $rId = $footer->getRelationId(); $xmlWriter->startElement('w:footerReference'); $xmlWriter->writeAttribute('w:type', $footer->getType()); $xmlWriter->writeAttribute('r:id', 'rId' . $rId); $xmlWriter->endElement(); } // Different first page if ($section->hasDifferentFirstPage()) { $xmlWriter->startElement('w:titlePg'); $xmlWriter->endElement(); } // Section settings $styleWriter = new SectionStyleWriter($xmlWriter, $section->getStyle()); $styleWriter->write(); $xmlWriter->endElement(); // w:sectPr }
/** * Write dropdown. * * @link http://www.datypic.com/sc/ooxml/t-w_CT_FFDDList.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\FormField $element * @return void */ private function writeDropDown(XMLWriter $xmlWriter, FormFieldElement $element) { $default = $element->getDefault(); $value = $element->getValue(); if ($value == null) { $value = $default; } $entries = $element->getEntries(); $xmlWriter->startElement('w:ddList'); $xmlWriter->writeElementBlock('w:result', 'w:val', $value); $xmlWriter->writeElementBlock('w:default', 'w:val', $default); foreach ($entries as $entry) { $xmlWriter->writeElementBlock('w:listEntry', 'w:val', $entry); } $xmlWriter->endElement(); }
/** * Write master style. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @return void */ private function writeMaster(XMLWriter $xmlWriter) { $xmlWriter->startElement('office:master-styles'); $xmlWriter->startElement('style:master-page'); $xmlWriter->writeAttribute('style:name', 'Standard'); $xmlWriter->writeAttribute('style:page-layout-name', 'Mpm1'); $xmlWriter->endElement(); // style:master-page $xmlWriter->endElement(); // office:master-styles }
/** * Write numbering. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param array $numbering * @return void */ private function writeNumbering(XMLWriter $xmlWriter, $numbering) { $numStyle = $numbering['style']; $numLevel = $numbering['level']; /** @var \PhpOffice\PhpWord\Style\Numbering $numbering */ $numbering = Style::getStyle($numStyle); if ($numStyle !== null && $numbering !== null) { $xmlWriter->startElement('w:numPr'); $xmlWriter->startElement('w:numId'); $xmlWriter->writeAttribute('w:val', $numbering->getIndex()); $xmlWriter->endElement(); // w:numId $xmlWriter->startElement('w:ilvl'); $xmlWriter->writeAttribute('w:val', $numLevel); $xmlWriter->endElement(); // w:ilvl $xmlWriter->endElement(); // w:numPr $xmlWriter->startElement('w:outlineLvl'); $xmlWriter->writeAttribute('w:val', $numLevel); $xmlWriter->endElement(); // w:outlineLvl } }
/** * Write shape * * @link http://www.datypic.com/sc/ooxml/t-a_CT_ShapeProperties.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param bool $line * @return void */ private function writeShape(XMLWriter $xmlWriter, $line = false) { $xmlWriter->startElement('c:spPr'); $xmlWriter->startElement('a:ln'); if ($line === true) { $xmlWriter->writeElement('a:solidFill'); } else { $xmlWriter->writeElement('a:noFill'); } $xmlWriter->endElement(); // a:ln $xmlWriter->endElement(); // c:spPr }
/** * Write individual rels entry. * * Format: * <Relationship Id="rId..." Type="http://..." Target="....xml" TargetMode="..." /> * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param int $relId Relationship ID * @param string $type Relationship type * @param string $target Relationship target * @param string $targetMode Relationship target mode * @return void * @throws \PhpOffice\PhpWord\Exception\Exception */ private function writeRel(XMLWriter $xmlWriter, $relId, $type, $target, $targetMode = '') { if ($type != '' && $target != '') { if (strpos($relId, 'rId') === false) { $relId = 'rId' . $relId; } $xmlWriter->startElement('Relationship'); $xmlWriter->writeAttribute('Id', $relId); $xmlWriter->writeAttribute('Type', 'http://schemas.openxmlformats.org/' . $type); $xmlWriter->writeAttribute('Target', $target); if ($targetMode != '') { $xmlWriter->writeAttribute('TargetMode', $targetMode); } $xmlWriter->endElement(); } else { throw new Exception("Invalid parameters passed."); } }
/** * Write date. * * @link http://www.datypic.com/sc/ooxml/t-w_CT_SdtDate.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\SDT $element * @return void */ private function writeDate(XMLWriter $xmlWriter, SDTElement $element) { $type = $element->getType(); $xmlWriter->startElement("w:{$type}"); $xmlWriter->writeElementBlock('w:dateFormat', 'w:val', 'd/M/yyyy'); $xmlWriter->writeElementBlock('w:lid', 'w:val', 'en-US'); $xmlWriter->writeElementBlock('w:storeMappedDataAs', 'w:val', 'dateTime'); $xmlWriter->writeElementBlock('w:calendar', 'w:val', 'gregorian'); $xmlWriter->endElement(); // w:date }
/** * Write individual property * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $property * @param string $value * @return void * * @todo Handle other `$type`: double|date|dateTime|duration|boolean (4th arguments) */ private function writeCustomProperty(XMLWriter $xmlWriter, $property, $value) { $xmlWriter->startElement('meta:user-defined'); $xmlWriter->writeAttribute('meta:name', $property); // if ($type !== null) { // $xmlWriter->writeAttribute('meta:value-type', $type); // } $xmlWriter->writeRaw($value); $xmlWriter->endElement(); // meta:user-defined }
/** * Write automatic styles other than fonts and paragraphs. * * @since 0.11.0 * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @return void */ private function writeAutoStyles(XMLWriter $xmlWriter) { $xmlWriter->startElement('office:automatic-styles'); $this->writeTextStyles($xmlWriter); foreach ($this->autoStyles as $element => $styles) { $writerClass = 'PhpOffice\\PhpWord\\Writer\\ODText\\Style\\' . $element; foreach ($styles as $style) { /** @var \PhpOffice\PhpWord\Writer\ODText\Style\AbstractStyle $styleWriter Type hint */ $styleWriter = new $writerClass($xmlWriter, $style); $styleWriter->write(); } } $xmlWriter->endElement(); // office:automatic-styles }
/** * Write default font and other default styles * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param array $styles */ private function writeDefaultStyles(XMLWriter $xmlWriter, PhpWord $phpWord, $styles) { $fontName = $phpWord->getDefaultFontName(); $fontSize = $phpWord->getDefaultFontSize(); // Default font $xmlWriter->startElement('w:docDefaults'); $xmlWriter->startElement('w:rPrDefault'); $xmlWriter->startElement('w:rPr'); $xmlWriter->startElement('w:rFonts'); $xmlWriter->writeAttribute('w:ascii', $fontName); $xmlWriter->writeAttribute('w:hAnsi', $fontName); $xmlWriter->writeAttribute('w:eastAsia', $fontName); $xmlWriter->writeAttribute('w:cs', $fontName); $xmlWriter->endElement(); // w:rFonts $xmlWriter->startElement('w:sz'); $xmlWriter->writeAttribute('w:val', $fontSize * 2); $xmlWriter->endElement(); // w:sz $xmlWriter->startElement('w:szCs'); $xmlWriter->writeAttribute('w:val', $fontSize * 2); $xmlWriter->endElement(); // w:szCs $xmlWriter->endElement(); // w:rPr $xmlWriter->endElement(); // w:rPrDefault $xmlWriter->endElement(); // w:docDefaults // Normal style $xmlWriter->startElement('w:style'); $xmlWriter->writeAttribute('w:type', 'paragraph'); $xmlWriter->writeAttribute('w:default', '1'); $xmlWriter->writeAttribute('w:styleId', 'Normal'); $xmlWriter->startElement('w:name'); $xmlWriter->writeAttribute('w:val', 'Normal'); $xmlWriter->endElement(); // w:name if (array_key_exists('Normal', $styles)) { $styleWriter = new ParagraphStyleWriter($xmlWriter, $styles['Normal']); $styleWriter->write(); } $xmlWriter->endElement(); // w:style // FootnoteReference style if (!array_key_exists('FootnoteReference', $styles)) { $xmlWriter->startElement('w:style'); $xmlWriter->writeAttribute('w:type', 'character'); $xmlWriter->writeAttribute('w:styleId', 'FootnoteReference'); $xmlWriter->startElement('w:name'); $xmlWriter->writeAttribute('w:val', 'Footnote Reference'); $xmlWriter->endElement(); // w:name $xmlWriter->writeElement('w:semiHidden'); $xmlWriter->writeElement('w:unhideWhenUsed'); $xmlWriter->startElement('w:rPr'); $xmlWriter->startElement('w:vertAlign'); $xmlWriter->writeAttribute('w:val', 'superscript'); $xmlWriter->endElement(); // w:vertAlign $xmlWriter->endElement(); // w:rPr $xmlWriter->endElement(); // w:style } }
/** * Write TOC Field */ private function writeFieldMark(XMLWriter $xmlWriter, TOCElement $element) { $minDepth = $element->getMinDepth(); $maxDepth = $element->getMaxDepth(); $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:fldChar'); $xmlWriter->writeAttribute('w:fldCharType', 'begin'); $xmlWriter->endElement(); $xmlWriter->endElement(); $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:instrText'); $xmlWriter->writeAttribute('xml:space', 'preserve'); $xmlWriter->writeRaw("TOC \\o {$minDepth}-{$maxDepth} \\h \\z \\u"); $xmlWriter->endElement(); $xmlWriter->endElement(); $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:fldChar'); $xmlWriter->writeAttribute('w:fldCharType', 'separate'); $xmlWriter->endElement(); $xmlWriter->endElement(); }
/** * Write alignment. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Style\Frame $style * @param string $wrap * @return void */ private function writeWrap(XMLWriter $xmlWriter, FrameStyle $style, $wrap) { if ($wrap !== null) { $xmlWriter->startElement('w10:wrap'); $xmlWriter->writeAttribute('type', $wrap); $relativePositions = array(FrameStyle::POS_RELTO_MARGIN => 'margin', FrameStyle::POS_RELTO_PAGE => 'page', FrameStyle::POS_RELTO_TMARGIN => 'margin', FrameStyle::POS_RELTO_BMARGIN => 'page', FrameStyle::POS_RELTO_LMARGIN => 'margin', FrameStyle::POS_RELTO_RMARGIN => 'page'); $pos = $style->getPos(); $hPos = $style->getHPosRelTo(); $vPos = $style->getVPosRelTo(); if ($pos == FrameStyle::POS_ABSOLUTE) { $xmlWriter->writeAttribute('anchorx', "page"); $xmlWriter->writeAttribute('anchory', "page"); } elseif ($pos == FrameStyle::POS_RELATIVE) { if (isset($relativePositions[$hPos])) { $xmlWriter->writeAttribute('anchorx', $relativePositions[$hPos]); } if (isset($relativePositions[$vPos])) { $xmlWriter->writeAttribute('anchory', $relativePositions[$vPos]); } } $xmlWriter->endElement(); // w10:wrap } }
/** * Write automatic styles */ private function writeAutomaticStyles(XMLWriter $xmlWriter, PhpWord $phpWord) { $xmlWriter->startElement('office:automatic-styles'); // Font and paragraph $styles = Style::getStyles(); $paragraphStyleCount = 0; if (count($styles) > 0) { foreach ($styles as $styleName => $style) { if (preg_match('#^T[0-9]+$#', $styleName) != 0 || preg_match('#^P[0-9]+$#', $styleName) != 0) { $styleClass = str_replace('Style', 'Writer\\ODText\\Style', get_class($style)); if (class_exists($styleClass)) { $styleWriter = new $styleClass($xmlWriter, $style); $styleWriter->setIsAuto(true); $styleWriter->write(); } if ($style instanceof Paragraph) { $paragraphStyleCount++; } } } if ($paragraphStyleCount == 0) { $style = new Paragraph(); $style->setStyleName('P1'); $styleWriter = new \PhpOffice\PhpWord\Writer\ODText\Style\Paragraph($xmlWriter, $style); $styleWriter->setIsAuto(true); $styleWriter->write(); } } // Images $images = Media::getElements('section'); foreach ($images as $image) { if ($image['type'] == 'image') { $xmlWriter->startElement('style:style'); $xmlWriter->writeAttribute('style:name', 'fr' . $image['rID']); $xmlWriter->writeAttribute('style:family', 'graphic'); $xmlWriter->writeAttribute('style:parent-style-name', 'Graphics'); $xmlWriter->startElement('style:graphic-properties'); $xmlWriter->writeAttribute('style:vertical-pos', 'top'); $xmlWriter->writeAttribute('style:vertical-rel', 'baseline'); $xmlWriter->endElement(); $xmlWriter->endElement(); } } // Tables $sections = $phpWord->getSections(); $sectionCount = count($sections); if ($sectionCount > 0) { $sectionId = 0; foreach ($sections as $section) { $sectionId++; $elements = $section->getElements(); foreach ($elements as $element) { if ($elements instanceof Table) { $xmlWriter->startElement('style:style'); $xmlWriter->writeAttribute('style:name', $element->getElementId()); $xmlWriter->writeAttribute('style:family', 'table'); $xmlWriter->startElement('style:table-properties'); //$xmlWriter->writeAttribute('style:width', 'table'); $xmlWriter->writeAttribute('style:rel-width', 100); $xmlWriter->writeAttribute('table:align', 'center'); $xmlWriter->endElement(); $xmlWriter->endElement(); } } } } $xmlWriter->endElement(); // office:automatic-styles }
/** * Write cell. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\Cell $cell * @return void */ private function writeCell(XMLWriter $xmlWriter, CellElement $cell) { $xmlWriter->startElement('w:tc'); // Write style $cellStyle = $cell->getStyle(); if ($cellStyle instanceof CellStyle) { $styleWriter = new CellStyleWriter($xmlWriter, $cellStyle); $styleWriter->setWidth($cell->getWidth()); $styleWriter->write(); } // Write content $containerWriter = new Container($xmlWriter, $cell); $containerWriter->write(); $xmlWriter->endElement(); // w:tc }
/** * Write level font. * * @since 0.11.0 * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Style\NumberingLevel $level * @return void * @todo Use font style writer */ private function writeFont(XMLWriter $xmlWriter, NumberingLevel $level) { $font = $level->getFont(); $hint = $level->getHint(); $xmlWriter->startElement('w:rPr'); $xmlWriter->startElement('w:rFonts'); $xmlWriter->writeAttributeIf($font !== null, 'w:ascii', $font); $xmlWriter->writeAttributeIf($font !== null, 'w:hAnsi', $font); $xmlWriter->writeAttributeIf($font !== null, 'w:cs', $font); $xmlWriter->writeAttributeIf($hint !== null, 'w:hint', $hint); $xmlWriter->endElement(); // w:rFonts $xmlWriter->endElement(); // w:rPr }
/** * Write watermark element */ private function writeWatermark(XMLWriter $xmlWriter, ImageElement $element) { $rId = $element->getRelationId(); $style = $element->getStyle(); $style->setPositioning('absolute'); $styleWriter = new ImageStyleWriter($xmlWriter, $style); $xmlWriter->startElement('w:p'); $xmlWriter->startElement('w:r'); $xmlWriter->startElement('w:pict'); $xmlWriter->startElement('v:shape'); $xmlWriter->writeAttribute('type', '#_x0000_t75'); $styleWriter->write(); $xmlWriter->startElement('v:imagedata'); $xmlWriter->writeAttribute('r:id', 'rId' . $rId); $xmlWriter->writeAttribute('o:title', ''); $xmlWriter->endElement(); // v:imagedata $xmlWriter->endElement(); // v:shape $xmlWriter->endElement(); // w:pict $xmlWriter->endElement(); // w:r $xmlWriter->endElement(); // w:p }