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