Refactor Word2007/Element to identify the same properties
This commit is contained in:
parent
a2294b4b1e
commit
2328e34e64
|
|
@ -115,6 +115,16 @@ abstract class AbstractElement
|
||||||
$this->pageBreakBefore = (bool)$value;
|
$this->pageBreakBefore = (bool)$value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write ending
|
||||||
|
*/
|
||||||
|
protected function endElementP()
|
||||||
|
{
|
||||||
|
if (!$this->withoutP) {
|
||||||
|
$this->xmlWriter->endElement(); // w:p
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert text to valid format
|
* Convert text to valid format
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,6 @@ class CheckBox extends Text
|
||||||
$xmlWriter->endElement(); // w:t
|
$xmlWriter->endElement(); // w:t
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,6 @@ class Field extends Text
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
$xmlWriter->endElement(); // w:fldSimple
|
$xmlWriter->endElement(); // w:fldSimple
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,6 @@ class Footnote extends Text
|
||||||
$xmlWriter->endElement(); // w:$referenceType
|
$xmlWriter->endElement(); // w:$referenceType
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ class Image extends AbstractElement
|
||||||
private function writeImage(XMLWriter $xmlWriter, ImageElement $element)
|
private function writeImage(XMLWriter $xmlWriter, ImageElement $element)
|
||||||
{
|
{
|
||||||
$rId = $element->getRelationId() + ($element->isInSection() ? 6 : 0);
|
$rId = $element->getRelationId() + ($element->isInSection() ? 6 : 0);
|
||||||
|
|
||||||
$style = $element->getStyle();
|
$style = $element->getStyle();
|
||||||
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
|
|
@ -59,23 +60,25 @@ class Image extends AbstractElement
|
||||||
$xmlWriter->startElement('w:p');
|
$xmlWriter->startElement('w:p');
|
||||||
$styleWriter->writeAlignment();
|
$styleWriter->writeAlignment();
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlWriter->startElement('w:r');
|
$xmlWriter->startElement('w:r');
|
||||||
$xmlWriter->startElement('w:pict');
|
$xmlWriter->startElement('w:pict');
|
||||||
$xmlWriter->startElement('v:shape');
|
$xmlWriter->startElement('v:shape');
|
||||||
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
||||||
|
|
||||||
$styleWriter->write();
|
$styleWriter->write();
|
||||||
|
$styleWriter->writeW10Wrap();
|
||||||
|
|
||||||
$xmlWriter->startElement('v:imagedata');
|
$xmlWriter->startElement('v:imagedata');
|
||||||
$xmlWriter->writeAttribute('r:id', 'rId' . $rId);
|
$xmlWriter->writeAttribute('r:id', 'rId' . $rId);
|
||||||
$xmlWriter->writeAttribute('o:title', '');
|
$xmlWriter->writeAttribute('o:title', '');
|
||||||
$xmlWriter->endElement(); // v:imagedata
|
$xmlWriter->endElement(); // v:imagedata
|
||||||
$styleWriter->writeW10Wrap();
|
|
||||||
$xmlWriter->endElement(); // v:shape
|
$xmlWriter->endElement(); // v:shape
|
||||||
$xmlWriter->endElement(); // w:pict
|
$xmlWriter->endElement(); // w:pict
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
$this->endElementP(); // w:p
|
||||||
$xmlWriter->endElement(); // w:p
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Write watermark element
|
* Write watermark element
|
||||||
|
|
@ -83,23 +86,29 @@ class Image extends AbstractElement
|
||||||
private function writeWatermark(XMLWriter $xmlWriter, ImageElement $element)
|
private function writeWatermark(XMLWriter $xmlWriter, ImageElement $element)
|
||||||
{
|
{
|
||||||
$rId = $element->getRelationId();
|
$rId = $element->getRelationId();
|
||||||
|
|
||||||
$style = $element->getStyle();
|
$style = $element->getStyle();
|
||||||
$style->setPositioning('absolute');
|
|
||||||
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
$xmlWriter->startElement('w:p');
|
$xmlWriter->startElement('w:p');
|
||||||
|
|
||||||
$xmlWriter->startElement('w:r');
|
$xmlWriter->startElement('w:r');
|
||||||
$xmlWriter->startElement('w:pict');
|
$xmlWriter->startElement('w:pict');
|
||||||
$xmlWriter->startElement('v:shape');
|
$xmlWriter->startElement('v:shape');
|
||||||
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
||||||
|
|
||||||
|
$style->setPositioning('absolute');
|
||||||
$styleWriter->write();
|
$styleWriter->write();
|
||||||
|
|
||||||
$xmlWriter->startElement('v:imagedata');
|
$xmlWriter->startElement('v:imagedata');
|
||||||
$xmlWriter->writeAttribute('r:id', 'rId' . $rId);
|
$xmlWriter->writeAttribute('r:id', 'rId' . $rId);
|
||||||
$xmlWriter->writeAttribute('o:title', '');
|
$xmlWriter->writeAttribute('o:title', '');
|
||||||
$xmlWriter->endElement(); // v:imagedata
|
$xmlWriter->endElement(); // v:imagedata
|
||||||
|
|
||||||
$xmlWriter->endElement(); // v:shape
|
$xmlWriter->endElement(); // v:shape
|
||||||
$xmlWriter->endElement(); // w:pict
|
$xmlWriter->endElement(); // w:pict
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
$xmlWriter->endElement(); // w:p
|
$xmlWriter->endElement(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,12 +41,15 @@ class Line extends AbstractElement
|
||||||
$styleWriter = new LineStyleWriter($xmlWriter, $style);
|
$styleWriter = new LineStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
$elementId = $element->getElementIndex();
|
$elementId = $element->getElementIndex();
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
if (!$this->withoutP) {
|
||||||
$xmlWriter->startElement('w:p');
|
$xmlWriter->startElement('w:p');
|
||||||
$styleWriter->writeAlignment();
|
$styleWriter->writeAlignment();
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlWriter->startElement('w:r');
|
$xmlWriter->startElement('w:r');
|
||||||
$xmlWriter->startElement('w:pict');
|
$xmlWriter->startElement('w:pict');
|
||||||
|
|
||||||
// Shapetype could be defined for each line separately, but then a unique id would be necessary
|
// Shapetype could be defined for each line separately, but then a unique id would be necessary
|
||||||
if ($elementId == 1) {
|
if ($elementId == 1) {
|
||||||
$xmlWriter->startElement('v:shapetype');
|
$xmlWriter->startElement('v:shapetype');
|
||||||
|
|
@ -67,18 +70,20 @@ class Line extends AbstractElement
|
||||||
$xmlWriter->endElement(); // o:lock
|
$xmlWriter->endElement(); // o:lock
|
||||||
$xmlWriter->endElement(); // v:shapetype
|
$xmlWriter->endElement(); // v:shapetype
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlWriter->startElement('v:shape');
|
$xmlWriter->startElement('v:shape');
|
||||||
$xmlWriter->writeAttribute('id', sprintf('_x0000_s1%1$03d', $elementId));
|
$xmlWriter->writeAttribute('id', sprintf('_x0000_s1%1$03d', $elementId));
|
||||||
$xmlWriter->writeAttribute('type', '#_x0000_t32'); //type should correspond to shapetype id
|
$xmlWriter->writeAttribute('type', '#_x0000_t32'); //type should correspond to shapetype id
|
||||||
|
|
||||||
$styleWriter->write();
|
$styleWriter->write();
|
||||||
$styleWriter->writeStroke();
|
|
||||||
$styleWriter->writeW10Wrap();
|
$styleWriter->writeW10Wrap();
|
||||||
|
$styleWriter->writeStroke();
|
||||||
|
|
||||||
$xmlWriter->endElement(); // v:shape
|
$xmlWriter->endElement(); // v:shape
|
||||||
|
|
||||||
$xmlWriter->endElement(); // w:pict
|
$xmlWriter->endElement(); // w:pict
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
$this->endElementP(); // w:p
|
||||||
$xmlWriter->endElement(); // w:p
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,6 @@ class Link extends Text
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
$xmlWriter->endElement(); // w:hyperlink
|
$xmlWriter->endElement(); // w:hyperlink
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ class Object extends AbstractElement
|
||||||
$rIdImage = $element->getImageRelationId() + ($element->isInSection() ? 6 : 0);
|
$rIdImage = $element->getImageRelationId() + ($element->isInSection() ? 6 : 0);
|
||||||
$shapeId = md5($rIdObject . '_' . $rIdImage);
|
$shapeId = md5($rIdObject . '_' . $rIdImage);
|
||||||
$objectId = $element->getRelationId() + 1325353440;
|
$objectId = $element->getRelationId() + 1325353440;
|
||||||
|
|
||||||
$style = $element->getStyle();
|
$style = $element->getStyle();
|
||||||
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
$styleWriter = new ImageStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
|
|
@ -48,20 +49,27 @@ class Object extends AbstractElement
|
||||||
$xmlWriter->startElement('w:p');
|
$xmlWriter->startElement('w:p');
|
||||||
$styleWriter->writeAlignment();
|
$styleWriter->writeAlignment();
|
||||||
}
|
}
|
||||||
|
|
||||||
$xmlWriter->startElement('w:r');
|
$xmlWriter->startElement('w:r');
|
||||||
$xmlWriter->startElement('w:object');
|
$xmlWriter->startElement('w:object');
|
||||||
$xmlWriter->writeAttribute('w:dxaOrig', '249');
|
$xmlWriter->writeAttribute('w:dxaOrig', '249');
|
||||||
$xmlWriter->writeAttribute('w:dyaOrig', '160');
|
$xmlWriter->writeAttribute('w:dyaOrig', '160');
|
||||||
|
|
||||||
|
// Icon
|
||||||
$xmlWriter->startElement('v:shape');
|
$xmlWriter->startElement('v:shape');
|
||||||
$xmlWriter->writeAttribute('id', $shapeId);
|
$xmlWriter->writeAttribute('id', $shapeId);
|
||||||
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
$xmlWriter->writeAttribute('type', '#_x0000_t75');
|
||||||
$xmlWriter->writeAttribute('style', 'width:104px;height:67px');
|
$xmlWriter->writeAttribute('style', 'width:104px;height:67px');
|
||||||
$xmlWriter->writeAttribute('o:ole', '');
|
$xmlWriter->writeAttribute('o:ole', '');
|
||||||
|
|
||||||
$xmlWriter->startElement('v:imagedata');
|
$xmlWriter->startElement('v:imagedata');
|
||||||
$xmlWriter->writeAttribute('r:id', 'rId' . $rIdImage);
|
$xmlWriter->writeAttribute('r:id', 'rId' . $rIdImage);
|
||||||
$xmlWriter->writeAttribute('o:title', '');
|
$xmlWriter->writeAttribute('o:title', '');
|
||||||
$xmlWriter->endElement(); // v:imagedata
|
$xmlWriter->endElement(); // v:imagedata
|
||||||
|
|
||||||
$xmlWriter->endElement(); // v:shape
|
$xmlWriter->endElement(); // v:shape
|
||||||
|
|
||||||
|
// Object
|
||||||
$xmlWriter->startElement('o:OLEObject');
|
$xmlWriter->startElement('o:OLEObject');
|
||||||
$xmlWriter->writeAttribute('Type', 'Embed');
|
$xmlWriter->writeAttribute('Type', 'Embed');
|
||||||
$xmlWriter->writeAttribute('ProgID', 'Package');
|
$xmlWriter->writeAttribute('ProgID', 'Package');
|
||||||
|
|
@ -70,10 +78,10 @@ class Object extends AbstractElement
|
||||||
$xmlWriter->writeAttribute('ObjectID', '_' . $objectId);
|
$xmlWriter->writeAttribute('ObjectID', '_' . $objectId);
|
||||||
$xmlWriter->writeAttribute('r:id', 'rId' . $rIdObject);
|
$xmlWriter->writeAttribute('r:id', 'rId' . $rIdObject);
|
||||||
$xmlWriter->endElement(); // o:OLEObject
|
$xmlWriter->endElement(); // o:OLEObject
|
||||||
|
|
||||||
$xmlWriter->endElement(); // w:object
|
$xmlWriter->endElement(); // w:object
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
if (!$this->withoutP) {
|
|
||||||
$xmlWriter->endElement(); // w:p
|
$this->endElementP(); // w:p
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,6 @@ class PreserveText extends Text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,8 @@ class Shape extends AbstractElement
|
||||||
}
|
}
|
||||||
|
|
||||||
$style = $element->getStyle();
|
$style = $element->getStyle();
|
||||||
|
$styleWriter = new ShapeStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
$type = $element->getType();
|
$type = $element->getType();
|
||||||
if ($type == 'rect' && $style->getRoundness() !== null) {
|
if ($type == 'rect' && $style->getRoundness() !== null) {
|
||||||
$type = 'roundrect';
|
$type = 'roundrect';
|
||||||
|
|
@ -62,16 +64,13 @@ class Shape extends AbstractElement
|
||||||
}
|
}
|
||||||
|
|
||||||
// Child style
|
// Child style
|
||||||
$styleWriter = new ShapeStyleWriter($xmlWriter, $style);
|
|
||||||
$styleWriter->write();
|
$styleWriter->write();
|
||||||
|
|
||||||
$xmlWriter->endElement(); // v:$type
|
$xmlWriter->endElement(); // v:$type
|
||||||
$xmlWriter->endElement(); // w:pict
|
$xmlWriter->endElement(); // w:pict
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
$this->endElementP(); // w:p
|
||||||
$xmlWriter->endElement(); // w:p
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ class Text extends AbstractElement
|
||||||
$xmlWriter->endElement();
|
$xmlWriter->endElement();
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -78,18 +78,6 @@ class Text extends AbstractElement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Write ending
|
|
||||||
*/
|
|
||||||
protected function writeClosingWP()
|
|
||||||
{
|
|
||||||
$xmlWriter = $this->getXmlWriter();
|
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
|
||||||
$xmlWriter->endElement(); // w:p
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write ending
|
* Write ending
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ class TextBox extends AbstractElement
|
||||||
if (!$element instanceof \PhpOffice\PhpWord\Element\TextBox) {
|
if (!$element instanceof \PhpOffice\PhpWord\Element\TextBox) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$style = $element->getStyle();
|
$style = $element->getStyle();
|
||||||
$styleWriter = new TextBoxStyleWriter($xmlWriter, $style);
|
$styleWriter = new TextBoxStyleWriter($xmlWriter, $style);
|
||||||
|
|
||||||
|
|
@ -48,7 +49,9 @@ class TextBox extends AbstractElement
|
||||||
$xmlWriter->startElement('w:pict');
|
$xmlWriter->startElement('w:pict');
|
||||||
$xmlWriter->startElement('v:shape');
|
$xmlWriter->startElement('v:shape');
|
||||||
$xmlWriter->writeAttribute('type', '#_x0000_t0202');
|
$xmlWriter->writeAttribute('type', '#_x0000_t0202');
|
||||||
|
|
||||||
$styleWriter->write();
|
$styleWriter->write();
|
||||||
|
|
||||||
$xmlWriter->startElement('v:textbox');
|
$xmlWriter->startElement('v:textbox');
|
||||||
$styleWriter->writeInnerMargin();
|
$styleWriter->writeInnerMargin();
|
||||||
|
|
||||||
|
|
@ -64,8 +67,6 @@ class TextBox extends AbstractElement
|
||||||
$xmlWriter->endElement(); // w:pict
|
$xmlWriter->endElement(); // w:pict
|
||||||
$xmlWriter->endElement(); // w:r
|
$xmlWriter->endElement(); // w:r
|
||||||
|
|
||||||
if (!$this->withoutP) {
|
$this->endElementP(); // w:p
|
||||||
$xmlWriter->endElement(); // w:p
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,14 @@ class TextBreak extends Text
|
||||||
if (!$this->withoutP) {
|
if (!$this->withoutP) {
|
||||||
$hasStyle = $element->hasStyle();
|
$hasStyle = $element->hasStyle();
|
||||||
$this->writeOpeningWP();
|
$this->writeOpeningWP();
|
||||||
|
|
||||||
if ($hasStyle) {
|
if ($hasStyle) {
|
||||||
$xmlWriter->startElement('w:pPr');
|
$xmlWriter->startElement('w:pPr');
|
||||||
$this->writeFontStyle();
|
$this->writeFontStyle();
|
||||||
$xmlWriter->endElement(); // w:pPr
|
$xmlWriter->endElement(); // w:pPr
|
||||||
}
|
}
|
||||||
$this->writeClosingWP();
|
|
||||||
|
$this->endElementP(); // w:p
|
||||||
} else {
|
} else {
|
||||||
$xmlWriter->writeElement('w:br');
|
$xmlWriter->writeElement('w:br');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,6 @@ class TextRun extends Text
|
||||||
$containerWriter = new Container($xmlWriter, $element);
|
$containerWriter = new Container($xmlWriter, $element);
|
||||||
$containerWriter->write();
|
$containerWriter->write();
|
||||||
|
|
||||||
$this->writeClosingWP();
|
$this->endElementP(); // w:p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue