示例#1
0
 /**
  * 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
 }
示例#2
0
 /**
  * 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();
         }
     }
 }