Support multiple elements (w:t, w:delText, w:tab) in w:r.
This commit is contained in:
parent
0869bdc8f7
commit
8a2cba2292
@ -241,14 +241,18 @@ abstract class AbstractPart
|
||||
if ($xmlReader->elementExists('w:br', $domNode)) {
|
||||
$parent->addTextBreak();
|
||||
}
|
||||
if ($xmlReader->elementExists('w:t', $domNode) || $xmlReader->elementExists('w:tab', $domNode)) {
|
||||
if ($xmlReader->elementExists('w:t', $domNode) || $xmlReader->elementExists('w:tab', $domNode) || $xmlReader->elementExists('w:delText', $domNode)) {
|
||||
// TextRun
|
||||
if ($xmlReader->elementExists('w:tab', $domNode)) {
|
||||
$textContent = "\t";
|
||||
} elseif ($domNode->parentNode->nodeName == 'w:del') {
|
||||
$textContent = $xmlReader->getValue('w:delText', $domNode);
|
||||
} else {
|
||||
$textContent = $xmlReader->getValue('w:t', $domNode);
|
||||
$textContent = '';
|
||||
$nodes = $xmlReader->getElements('w:t|w:delText|w:tab', $domNode);
|
||||
foreach ($nodes as $node) {
|
||||
if ($node->nodeName == 'w:t') {
|
||||
$textContent .= $node->nodeValue;
|
||||
} elseif ($node->nodeName == 'w:delText') {
|
||||
$textContent .= $node->nodeValue;
|
||||
} elseif ($node->nodeName == 'w:tab') {
|
||||
$textContent .= "\t";
|
||||
}
|
||||
}
|
||||
/** @var AbstractElement $element */
|
||||
$element = $parent->addText($textContent, $fontStyle, $paragraphStyle);
|
||||
|
||||
@ -91,7 +91,9 @@ class ElementTest extends AbstractTestReader
|
||||
{
|
||||
$documentXml = '<w:p>
|
||||
<w:r>
|
||||
<w:t>One</w:t>
|
||||
<w:tab/>
|
||||
<w:t>Two</w:t>
|
||||
</w:r>
|
||||
</w:p>';
|
||||
|
||||
@ -99,6 +101,6 @@ class ElementTest extends AbstractTestReader
|
||||
|
||||
$elements = $this->get($phpWord->getSections(), 0)->getElements();
|
||||
$this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $elements[0]);
|
||||
$this->assertEquals("\t", $elements[0]->getText());
|
||||
$this->assertEquals("One\tTwo", $elements[0]->getText());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user