parentWriter = $parentWriter; $this->element = $element; $this->withoutP = $withoutP; $this->escaper = new Rtf(); } /** * Get font and paragraph styles. */ protected function getStyles(): void { /** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Type hint */ $parentWriter = $this->parentWriter; /** @var \PhpOffice\PhpWord\Element\Text $element Type hint */ $element = $this->element; // Font style if (method_exists($element, 'getFontStyle')) { $this->fontStyle = $element->getFontStyle(); if (is_string($this->fontStyle)) { $this->fontStyle = Style::getStyle($this->fontStyle); } } // Paragraph style if (method_exists($element, 'getParagraphStyle')) { $this->paragraphStyle = $element->getParagraphStyle(); if (is_string($this->paragraphStyle)) { $this->paragraphStyle = Style::getStyle($this->paragraphStyle); } if ($this->paragraphStyle !== null && !$this->withoutP) { if ($parentWriter->getLastParagraphStyle() != $element->getParagraphStyle()) { $parentWriter->setLastParagraphStyle($element->getParagraphStyle()); } else { $parentWriter->setLastParagraphStyle(); $this->paragraphStyle = null; } } else { $parentWriter->setLastParagraphStyle(); $this->paragraphStyle = null; } } } /** * Write opening. * * @return string */ protected function writeOpening() { if ($this->withoutP || !$this->paragraphStyle instanceof ParagraphStyle) { return ''; } $styleWriter = new ParagraphStyleWriter($this->paragraphStyle); $styleWriter->setNestedLevel($this->element->getNestedLevel()); return $styleWriter->write(); } /** * Write text. * * @param string $text * * @return string */ protected function writeText($text) { if (Settings::isOutputEscapingEnabled()) { return $this->escaper->escape($text); } return SharedText::toUnicode($text); // todo: replace with `return $text;` later. } /** * Write closing. * * @return string */ protected function writeClosing() { if ($this->withoutP) { return ''; } return '\par' . PHP_EOL; } /** * Write font style. * * @return string */ protected function writeFontStyle() { if (!$this->fontStyle instanceof FontStyle) { return ''; } /** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Type hint */ $parentWriter = $this->parentWriter; // Create style writer and set color/name index $styleWriter = new FontStyleWriter($this->fontStyle); if ($this->fontStyle->getColor() != null) { $colorIndex = array_search($this->fontStyle->getColor(), $parentWriter->getColorTable()); if ($colorIndex !== false) { $styleWriter->setColorIndex($colorIndex + 1); } } if ($this->fontStyle->getName() != null) { $fontIndex = array_search($this->fontStyle->getName(), $parentWriter->getFontTable()); if ($fontIndex !== false) { $styleWriter->setNameIndex($fontIndex); } } // Write style $content = $styleWriter->write(); return $content; } }