Exemplo n.º 1
0
 /**
  */
 public function testConstruct()
 {
     // Memory
     $object = new XMLWriter();
     $object->startElement('element');
     $object->text('AAA');
     $object->endElement();
     $this->assertEquals('<element>AAA</element>' . chr(10), $object->getData());
     // Disk
     $object = new XMLWriter(XMLWriter::STORAGE_DISK);
     $object->startElement('element');
     $object->text('BBB');
     $object->endElement();
     $this->assertEquals('<element>BBB</element>' . chr(10), $object->getData());
 }
Exemplo n.º 2
0
 /**
  * @param Title $oTitle
  */
 private function writeTitle(Title $oTitle)
 {
     if ($oTitle->isVisible()) {
         // chart:title
         $this->xmlContent->startElement('chart:title');
         $this->xmlContent->writeAttribute('svg:x', Text::numberFormat(CommonDrawing::pixelsToCentimeters($oTitle->getOffsetX()), 3) . 'cm');
         $this->xmlContent->writeAttribute('svg:y', Text::numberFormat(CommonDrawing::pixelsToCentimeters($oTitle->getOffsetY()), 3) . 'cm');
         $this->xmlContent->writeAttribute('chart:style-name', 'styleTitle');
         // > text:p
         $this->xmlContent->startElement('text:p');
         $this->xmlContent->text($oTitle->getText());
         // > text:p
         $this->xmlContent->endElement();
         // > chart:title
         $this->xmlContent->endElement();
     }
 }
Exemplo n.º 3
0
 /**
  * Write table Shape
  * @param XMLWriter $objWriter
  * @param Table $shape
  */
 public function writeShapeTable(XMLWriter $objWriter, Table $shape)
 {
     // draw:frame
     $objWriter->startElement('draw:frame');
     $objWriter->writeAttribute('svg:x', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetX()), 3) . 'cm');
     $objWriter->writeAttribute('svg:y', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getOffsetY()), 3) . 'cm');
     $objWriter->writeAttribute('svg:height', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getHeight()), 3) . 'cm');
     $objWriter->writeAttribute('svg:width', String::numberFormat(CommonDrawing::pixelsToCentimeters($shape->getWidth()), 3) . 'cm');
     // table:table
     $objWriter->startElement('table:table');
     foreach ($shape->getRows() as $keyRow => $shapeRow) {
         // table:table-row
         $objWriter->startElement('table:table-row');
         $objWriter->writeAttribute('table:style-name', 'gr' . $this->shapeId . 'r' . $keyRow);
         //@todo getFill
         $numColspan = 0;
         foreach ($shapeRow->getCells() as $keyCell => $shapeCell) {
             if ($numColspan == 0) {
                 // table:table-cell
                 $objWriter->startElement('table:table-cell');
                 $objWriter->writeAttribute('table:style-name', 'gr' . $this->shapeId . 'r' . $keyRow . 'c' . $keyCell);
                 if ($shapeCell->getColspan() > 1) {
                     $objWriter->writeAttribute('table:number-columns-spanned', $shapeCell->getColspan());
                     $numColspan = $shapeCell->getColspan() - 1;
                 }
                 // text:p
                 $objWriter->startElement('text:p');
                 // text:span
                 foreach ($shapeCell->getParagraphs() as $shapeParagraph) {
                     foreach ($shapeParagraph->getRichTextElements() as $shapeRichText) {
                         if ($shapeRichText instanceof TextElement || $shapeRichText instanceof Run) {
                             // text:span
                             $objWriter->startElement('text:span');
                             if ($shapeRichText instanceof Run) {
                                 $objWriter->writeAttribute('text:style-name', 'T_' . $shapeRichText->getFont()->getHashCode());
                             }
                             if ($shapeRichText->hasHyperlink() === true && $shapeRichText->getHyperlink()->getUrl() != '') {
                                 // text:a
                                 $objWriter->startElement('text:a');
                                 $objWriter->writeAttribute('xlink:href', $shapeRichText->getHyperlink()->getUrl());
                                 $objWriter->text($shapeRichText->getText());
                                 $objWriter->endElement();
                             } else {
                                 $objWriter->text($shapeRichText->getText());
                             }
                             $objWriter->endElement();
                         } elseif ($shapeRichText instanceof BreakElement) {
                             // text:span
                             $objWriter->startElement('text:span');
                             // text:line-break
                             $objWriter->startElement('text:line-break');
                             $objWriter->endElement();
                             $objWriter->endElement();
                         }
                     }
                 }
                 // > text:p
                 $objWriter->endElement();
                 // > table:table-cell
                 $objWriter->endElement();
             } else {
                 // table:covered-table-cell
                 $objWriter->writeElement('table:covered-table-cell');
                 $numColspan--;
             }
         }
         // > table:table-row
         $objWriter->endElement();
     }
     // > table:table
     $objWriter->endElement();
     // > draw:frame
     $objWriter->endElement();
 }
Exemplo n.º 4
0
 /**
  * Write individual property
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param string $property
  * @param string $value
  * @return void
  *
  * @todo Handle other `$type`: double|date|dateTime|duration|boolean (4th arguments)
  */
 private function writeCustomProperty(XMLWriter $xmlWriter, $property, $value)
 {
     $xmlWriter->startElement('meta:user-defined');
     $xmlWriter->writeAttribute('meta:name', $property);
     // if ($type !== null) {
     //     $xmlWriter->writeAttribute('meta:value-type', $type);
     // }
     if (Settings::isOutputEscapingEnabled()) {
         $xmlWriter->text($value);
     } else {
         $xmlWriter->writeRaw($value);
     }
     $xmlWriter->endElement();
     // meta:user-defined
 }
 /**
  * Write note item.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Element\Footnote|\PhpOffice\PhpWord\Element\Endnote $element
  * @return void
  */
 protected function writeNote(XMLWriter $xmlWriter, $element)
 {
     $xmlWriter->startElement($this->elementNode);
     $xmlWriter->writeAttribute('w:id', $element->getRelationId());
     $xmlWriter->startElement('w:p');
     // Paragraph style
     $styleWriter = new ParagraphStyleWriter($xmlWriter, $element->getParagraphStyle());
     $styleWriter->setIsInline(true);
     $styleWriter->write();
     // Reference symbol
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:rPr');
     $xmlWriter->startElement('w:rStyle');
     $xmlWriter->writeAttribute('w:val', $this->refStyle);
     $xmlWriter->endElement();
     // w:rStyle
     $xmlWriter->endElement();
     // w:rPr
     $xmlWriter->writeElement($this->refNode);
     $xmlWriter->endElement();
     // w:r
     // Empty space after refence symbol
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:t');
     $xmlWriter->writeAttribute('xml:space', 'preserve');
     $xmlWriter->text(' ');
     $xmlWriter->endElement();
     // w:t
     $xmlWriter->endElement();
     // w:r
     $containerWriter = new Container($xmlWriter, $element);
     $containerWriter->write();
     $xmlWriter->endElement();
     // w:p
     $xmlWriter->endElement();
     // $this->elementNode
 }
Exemplo n.º 6
0
 /**
  * Write TOC Field.
  *
  * @param \PhpOffice\Common\XMLWriter $xmlWriter
  * @param \PhpOffice\PhpWord\Element\TOC $element
  * @return void
  */
 private function writeFieldMark(XMLWriter $xmlWriter, TOCElement $element)
 {
     $minDepth = $element->getMinDepth();
     $maxDepth = $element->getMaxDepth();
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:fldChar');
     $xmlWriter->writeAttribute('w:fldCharType', 'begin');
     $xmlWriter->endElement();
     $xmlWriter->endElement();
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:instrText');
     $xmlWriter->writeAttribute('xml:space', 'preserve');
     $xmlWriter->text("TOC \\o {$minDepth}-{$maxDepth} \\h \\z \\u");
     $xmlWriter->endElement();
     $xmlWriter->endElement();
     $xmlWriter->startElement('w:r');
     $xmlWriter->startElement('w:fldChar');
     $xmlWriter->writeAttribute('w:fldCharType', 'separate');
     $xmlWriter->endElement();
     $xmlWriter->endElement();
 }