Add support for reading <w:tab/> element in runs. Internaly encoding it as "\t".

This commit is contained in:
Damjan Cvetko 2018-03-01 01:24:59 +01:00
parent 7fe32e6ac1
commit 0869bdc8f7
2 changed files with 22 additions and 2 deletions

View File

@ -241,9 +241,11 @@ abstract class AbstractPart
if ($xmlReader->elementExists('w:br', $domNode)) {
$parent->addTextBreak();
}
if ($xmlReader->elementExists('w:t', $domNode)) {
if ($xmlReader->elementExists('w:t', $domNode) || $xmlReader->elementExists('w:tab', $domNode)) {
// TextRun
if ($domNode->parentNode->nodeName == 'w:del') {
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);

View File

@ -83,4 +83,22 @@ class ElementTest extends AbstractTestReader
$this->assertEquals('bold', $listElements[2]->getText());
$this->assertTrue($listElements[2]->getFontStyle()->getBold());
}
/**
* Test reading of tab
*/
public function testReadTab()
{
$documentXml = '<w:p>
<w:r>
<w:tab/>
</w:r>
</w:p>';
$phpWord = $this->getDocumentFromString($documentXml);
$elements = $this->get($phpWord->getSections(), 0)->getElements();
$this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $elements[0]);
$this->assertEquals("\t", $elements[0]->getText());
}
}