documentProperties = new DocumentProperties(); $collections = array('Titles', 'Footnotes', 'Endnotes', 'Charts'); foreach ($collections as $collection) { $class = 'PhpOffice\\PhpWord\\Collection\\' . $collection; $this->collections[$collection] = new $class(); } } /** * Dynamic function call to reduce static dependency * * Usage: * - Getting and adding collections (Titles, Footnotes, and Endnotes) * - Adding style * * @param mixed $function * @param mixed $args * @return mixed * * @since 0.12.0 */ public function __call($function, $args) { $function = strtolower($function); $getCollection = array(); $addCollection = array(); $addStyle = array(); $collections = array('Title', 'Footnote', 'Endnote', 'Chart'); foreach ($collections as $collection) { $getCollection[] = strtolower("get{$collection}s"); $addCollection[] = strtolower("add{$collection}"); } $styles = array('Paragraph', 'Font', 'Table', 'Numbering', 'Link', 'Title'); foreach ($styles as $style) { $addStyle[] = strtolower("add{$style}style"); } // Run get collection method if (in_array($function, $getCollection)) { $key = ucfirst(str_replace('get', '', $function)); return $this->collections[$key]; } // Run add collection item method if (in_array($function, $addCollection)) { $key = ucfirst(str_replace('add', '', $function) . 's'); /** @var \PhpOffice\PhpWord\Collection\AbstractCollection $collectionObject */ $collectionObject = $this->collections[$key]; return $collectionObject->addItem($args[0]); } // Run add style method if (in_array($function, $addStyle)) { return forward_static_call_array(array('PhpOffice\\PhpWord\\Style', $function), $args); } // All other methods return null; } /** * Get document properties object * * @return DocumentProperties */ public function getDocumentProperties() { return $this->documentProperties; } /** * Set document properties object * * @param DocumentProperties $documentProperties * @return self */ public function setDocumentProperties(DocumentProperties $documentProperties) { $this->documentProperties = $documentProperties; return $this; } /** * Get all sections * * @return \PhpOffice\PhpWord\Element\Section[] */ public function getSections() { return $this->sections; } /** * Create new section * * @param array $style * @return \PhpOffice\PhpWord\Element\Section */ public function addSection($style = null) { $section = new Section(count($this->sections) + 1, $style); $section->setPhpWord($this); $this->sections[] = $section; return $section; } /** * Get default font name * * @return string */ public function getDefaultFontName() { return Settings::getDefaultFontName(); } /** * Set default font name * * @param string $fontName */ public function setDefaultFontName($fontName) { Settings::setDefaultFontName($fontName); } /** * Get default font size * * @return integer */ public function getDefaultFontSize() { return Settings::getDefaultFontSize(); } /** * Set default font size * * @param int $fontSize */ public function setDefaultFontSize($fontSize) { Settings::setDefaultFontSize($fontSize); } /** * Set default paragraph style definition to styles.xml * * @param array $styles Paragraph style definition * @return \PhpOffice\PhpWord\Style\Paragraph */ public function setDefaultParagraphStyle($styles) { return Style::setDefaultParagraphStyle($styles); } /** * Load template by filename * * @param string $filename Fully qualified filename. * @return Template * @throws \PhpOffice\PhpWord\Exception\Exception */ public function loadTemplate($filename) { if (file_exists($filename)) { return new Template($filename); } else { throw new Exception("Template file {$filename} not found."); } } /** * Save to file or download * * All exceptions should already been handled by the writers * * @param string $filename * @param string $format * @param bool $download * @return bool */ public function save($filename, $format = 'Word2007', $download = false) { $mime = array( 'Word2007' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'ODText' => 'application/vnd.oasis.opendocument.text', 'RTF' => 'application/rtf', 'HTML' => 'text/html', 'PDF' => 'application/pdf', ); /** @var \PhpOffice\PhpWord\Writer\WriterInterface $writer */ $writer = IOFactory::createWriter($this, $format); if ($download === true) { header("Content-Description: File Transfer"); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Type: ' . $mime[$format]); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Expires: 0'); $filename = 'php://output'; // Change filename to force download } $writer->save($filename); return true; } /** * Create new section * * @param array $settings * @return \PhpOffice\PhpWord\Element\Section * @deprecated 0.10.0 * @codeCoverageIgnore */ public function createSection($settings = null) { return $this->addSection($settings); } }