setPhpWord($phpWord); $this->parts = ['Head', 'Body']; foreach ($this->parts as $partName) { $partClass = 'PhpOffice\\PhpWord\\Writer\\HTML\\Part\\' . $partName; if (class_exists($partClass)) { /** @var \PhpOffice\PhpWord\Writer\HTML\Part\AbstractPart $part Type hint */ $part = new $partClass(); $part->setParentWriter($this); $this->writerParts[strtolower($partName)] = $part; } } } /** * Save PhpWord to file. */ public function save(string $filename): void { $this->writeFile($this->openFile($filename), $this->getContent()); } /** * Get content. * * @return string * * @since 0.11.0 */ public function getContent() { $content = ''; $content .= '' . PHP_EOL; $content .= '' . PHP_EOL; $langtext = ''; $phpWord = $this->getPhpWord(); $lang = $phpWord->getSettings()->getThemeFontLang(); if (!empty($lang)) { $lang2 = $lang->getLatin(); if (!$lang2) { $lang2 = $lang->getEastAsia(); } if (!$lang2) { $lang2 = $lang->getBidirectional(); } if ($lang2) { $langtext = " lang='" . $lang2 . "'"; } } $content .= "" . PHP_EOL; $content .= $this->getWriterPart('Head')->write(); $content .= $this->getWriterPart('Body')->write(); $content .= '' . PHP_EOL; // Trigger a callback for editing the entire HTML $callback = $this->editCallback; if ($callback !== null) { $content = $callback($content); } return $content; } /** * Return the callback to edit the entire HTML. */ public function getEditCallback(): ?callable { return $this->editCallback; } /** * Set a callback to edit the entire HTML. * * The callback must accept the HTML as string as first parameter, * and it must return the edited HTML as string. */ public function setEditCallback(?callable $callback): self { $this->editCallback = $callback; return $this; } /** * Get is PDF. * * @return bool */ public function isPdf() { return $this->isPdf; } /** * Get notes. * * @return array */ public function getNotes() { return $this->notes; } /** * Add note. * * @param int $noteId * @param string $noteMark */ public function addNote($noteId, $noteMark): void { $this->notes[$noteId] = $noteMark; } /** * Get generic name for default font for html. */ public function getDefaultGenericFont(): string { return $this->defaultGenericFont; } /** * Set generic name for default font for html. */ public function setDefaultGenericFont(string $value): self { $this->defaultGenericFont = Validate::validateCSSGenericFont($value); return $this; } /** * Get default white space style for html. */ public function getDefaultWhiteSpace(): string { return $this->defaultWhiteSpace; } /** * Set default white space style for html. */ public function setDefaultWhiteSpace(string $value): self { $this->defaultWhiteSpace = Validate::validateCSSWhiteSpace($value); return $this; } /** * Escape string or not depending on setting. */ public function escapeHTML(string $txt): string { if (Settings::isOutputEscapingEnabled()) { return htmlspecialchars($txt, ENT_QUOTES | (defined('ENT_SUBSTITUTE') ? ENT_SUBSTITUTE : 0), 'UTF-8'); } return $txt; } }