/** * Write list item element */ public function write() { $textObject = $this->element->getTextObject(); $depth = $this->element->getDepth(); $numId = $this->element->getStyle()->getNumId(); $paragraphStyle = $textObject->getParagraphStyle(); $styleWriter = new ParagraphStyleWriter($this->xmlWriter, $paragraphStyle); $styleWriter->setWithoutPPR(true); $styleWriter->setIsInline(true); $this->xmlWriter->startElement('w:p'); $this->xmlWriter->startElement('w:pPr'); $styleWriter->write(); $this->xmlWriter->startElement('w:numPr'); $this->xmlWriter->startElement('w:ilvl'); $this->xmlWriter->writeAttribute('w:val', $depth); $this->xmlWriter->endElement(); // w:ilvl $this->xmlWriter->startElement('w:numId'); $this->xmlWriter->writeAttribute('w:val', $numId); $this->xmlWriter->endElement(); // w:numId $this->xmlWriter->endElement(); // w:numPr $this->xmlWriter->endElement(); // w:pPr $elementWriter = new ElementWriter($this->xmlWriter, $this->parentWriter, $textObject, true); $elementWriter->write(); $this->xmlWriter->endElement(); // w:p }
/** * Write container elements * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param \PhpOffice\PhpWord\Element\AbstractElement $container */ public function writeContainerElements(XMLWriter $xmlWriter, AbstractElement $container) { // Check allowed elements $elmCommon = array('Text', 'Link', 'TextBreak', 'Image', 'Object'); $elmMainCell = array_merge($elmCommon, array('TextRun', 'ListItem', 'CheckBox')); $allowedElements = array('Section' => array_merge($elmMainCell, array('Table', 'Footnote', 'Title', 'PageBreak', 'TOC')), 'Header' => array_merge($elmMainCell, array('Table', 'PreserveText')), 'Footer' => array_merge($elmMainCell, array('Table', 'PreserveText')), 'Cell' => array_merge($elmMainCell, array('PreserveText', 'Footnote', 'Endnote')), 'TextRun' => array_merge($elmCommon, array('Footnote', 'Endnote')), 'Footnote' => $elmCommon, 'Endnote' => $elmCommon); $containerName = get_class($container); $containerName = substr($containerName, strrpos($containerName, '\\') + 1); if (!array_key_exists($containerName, $allowedElements)) { throw new Exception('Invalid container.'); } // Loop through elements $elements = $container->getElements(); $withoutP = in_array($containerName, array('TextRun', 'Footnote', 'Endnote')) ? true : false; if (count($elements) > 0) { foreach ($elements as $element) { if ($element instanceof AbstractElement) { $elementWriter = new ElementWriter($xmlWriter, $this, $element, $withoutP); $elementWriter->write(); } } } else { if ($containerName == 'Cell') { $elementWriter = new ElementWriter($xmlWriter, $this, new TextBreak(), $withoutP); $elementWriter->write(); } } }