/** * Get styles * * @return string */ private function writeStyles() { $css = '<style>' . PHP_EOL; // Default styles $defaultStyles = array('*' => array('font-family' => Settings::getDefaultFontName(), 'font-size' => Settings::getDefaultFontSize() . 'pt'), 'a.NoteRef' => array('text-decoration' => 'none'), 'hr' => array('height' => '1px', 'padding' => '0', 'margin' => '1em 0', 'border' => '0', 'border-top' => '1px solid #CCC')); foreach ($defaultStyles as $selector => $style) { $styleWriter = new GenericStyleWriter($style); $css .= $selector . ' {' . $styleWriter->write() . '}' . PHP_EOL; } // Custom styles $customStyles = Style::getStyles(); if (is_array($customStyles)) { foreach ($customStyles as $name => $style) { if ($style instanceof Font) { $styleWriter = new FontStyleWriter($style); if ($style->getStyleType() == 'title') { $name = str_replace('Heading_', 'h', $name); } else { $name = '.' . $name; } $css .= "{$name} {" . $styleWriter->write() . '}' . PHP_EOL; } elseif ($style instanceof Paragraph) { $styleWriter = new ParagraphStyleWriter($style); $name = '.' . $name; $css .= "{$name} {" . $styleWriter->write() . '}' . PHP_EOL; } } } $css .= '</style>' . PHP_EOL; return $css; }
/** * Write text * * @return string */ public function write() { $html = ''; // Paragraph style $paragraphStyle = $this->element->getParagraphStyle(); $pStyleIsObject = $paragraphStyle instanceof Paragraph; if ($pStyleIsObject) { $styleWriter = new ParagraphStyleWriter($paragraphStyle); $paragraphStyle = $styleWriter->write(); } // Font style $fontStyle = $this->element->getFontStyle(); $fontStyleIsObject = $fontStyle instanceof Font; if ($fontStyleIsObject) { $styleWriter = new FontStyleWriter($fontStyle); $fontStyle = $styleWriter->write(); } if ($paragraphStyle && !$this->withoutP) { $attribute = $pStyleIsObject ? 'style' : 'class'; $html .= "<p {$attribute}=\"{$paragraphStyle}\">"; } if ($fontStyle) { $attribute = $fontStyleIsObject ? 'style' : 'class'; $html .= "<span {$attribute}=\"{$fontStyle}\">"; } $html .= htmlspecialchars($this->element->getText()); if ($fontStyle) { $html .= '</span>'; } if ($paragraphStyle && !$this->withoutP) { $html .= '</p>' . PHP_EOL; } return $html; }
/** * Write text run * * @return string */ public function write() { $html = ''; $elements = $this->element->getElements(); if (count($elements) > 0) { // Paragraph style $paragraphStyle = $this->element->getParagraphStyle(); $pStyleIsObject = $paragraphStyle instanceof Paragraph; if ($pStyleIsObject) { $styleWriter = new ParagraphStyleWriter($paragraphStyle); $paragraphStyle = $styleWriter->write(); } $tag = $this->withoutP ? 'span' : 'p'; $attribute = $pStyleIsObject ? 'style' : 'class'; $html .= "<{$tag} {$attribute}=\"{$paragraphStyle}\">"; foreach ($elements as $element) { $elementWriter = new Element($this->parentWriter, $element, true); $html .= $elementWriter->write(); } $html .= "</{$tag}>"; $html .= PHP_EOL; } return $html; }
/** * Write paragraph style * * @return string */ private function getParagraphStyle() { /** @var \PhpOffice\PhpWord\Element\Text $element Type hint */ $element = $this->element; $style = ''; if (!method_exists($element, 'getParagraphStyle')) { return $style; } $paragraphStyle = $element->getParagraphStyle(); $pStyleIsObject = $paragraphStyle instanceof Paragraph; if ($pStyleIsObject) { $styleWriter = new ParagraphStyleWriter($paragraphStyle); $style = $styleWriter->write(); } if ($style) { $attribute = $pStyleIsObject ? 'style' : 'class'; $style = " {$attribute}=\"{$style}\""; } return $style; }