Merge pull request #1924 from sven-ahrens/feature/parse-shapes
Feature Request: Read shape node values
This commit is contained in:
commit
c391b90823
|
|
@ -292,6 +292,19 @@ abstract class AbstractPart
|
||||||
$parent->addTextBreak();
|
$parent->addTextBreak();
|
||||||
} elseif ($node->nodeName == 'w:tab') {
|
} elseif ($node->nodeName == 'w:tab') {
|
||||||
$parent->addText("\t");
|
$parent->addText("\t");
|
||||||
|
} elseif ($node->nodeName == 'mc:AlternateContent') {
|
||||||
|
if ($node->hasChildNodes()) {
|
||||||
|
// Get fallback instead of mc:Choice to make sure it is compatible
|
||||||
|
$fallbackElements = $node->getElementsByTagName('Fallback');
|
||||||
|
|
||||||
|
if ($fallbackElements->length) {
|
||||||
|
$fallback = $fallbackElements->item(0);
|
||||||
|
// TextRun
|
||||||
|
$textContent = htmlspecialchars($fallback->nodeValue, ENT_QUOTES, 'UTF-8');
|
||||||
|
|
||||||
|
$parent->addText($textContent, $fontStyle, $paragraphStyle);
|
||||||
|
}
|
||||||
|
}
|
||||||
} elseif ($node->nodeName == 'w:t' || $node->nodeName == 'w:delText') {
|
} elseif ($node->nodeName == 'w:t' || $node->nodeName == 'w:delText') {
|
||||||
// TextRun
|
// TextRun
|
||||||
$textContent = htmlspecialchars($xmlReader->getValue('.', $node), ENT_QUOTES, 'UTF-8');
|
$textContent = htmlspecialchars($xmlReader->getValue('.', $node), ENT_QUOTES, 'UTF-8');
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,46 @@ use PhpOffice\PhpWord\Element\TrackChange;
|
||||||
*/
|
*/
|
||||||
class ElementTest extends AbstractTestReader
|
class ElementTest extends AbstractTestReader
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Test reading of alternate content value
|
||||||
|
*/
|
||||||
|
public function testReadAlternateContent()
|
||||||
|
{
|
||||||
|
$documentXml = '<w:p>
|
||||||
|
<w:r>
|
||||||
|
<mc:AlternateContent>
|
||||||
|
<mc:Choice Requires="wps"></mc:Choice>
|
||||||
|
<mc:Fallback>
|
||||||
|
<w:pict>
|
||||||
|
<v:rect>
|
||||||
|
<v:textbox>
|
||||||
|
<w:txbxContent>
|
||||||
|
<w:p>
|
||||||
|
<w:pPr>
|
||||||
|
<w:jc w:val="center"/>
|
||||||
|
</w:pPr>
|
||||||
|
<w:r>
|
||||||
|
<w:t>Test node value</w:t>
|
||||||
|
</w:r>
|
||||||
|
</w:p>
|
||||||
|
</w:txbxContent>
|
||||||
|
</v:textbox>
|
||||||
|
</v:rect>
|
||||||
|
</w:pict>
|
||||||
|
</mc:Fallback>
|
||||||
|
</mc:AlternateContent>
|
||||||
|
</w:r>
|
||||||
|
</w:p>';
|
||||||
|
|
||||||
|
$phpWord = $this->getDocumentFromString(array('document' => $documentXml));
|
||||||
|
|
||||||
|
$elements = $phpWord->getSection(0)->getElements();
|
||||||
|
$this->assertInstanceOf('PhpOffice\PhpWord\Element\TextRun', $elements[0]);
|
||||||
|
$this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $elements[0]->getElement(0));
|
||||||
|
$text = $elements[0];
|
||||||
|
$this->assertEquals('Test node value', trim($text->getElement(0)->getText()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test reading of textbreak
|
* Test reading of textbreak
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ abstract class AbstractTestReader extends \PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
private $parts = array(
|
private $parts = array(
|
||||||
'styles' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Styles', 'xml' => '<w:styles xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:docDefaults><w:rPrDefault><w:rPr><w:sz w:val="24"/></w:rPr></w:rPrDefault></w:docDefaults>{toReplace}</w:styles>'),
|
'styles' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Styles', 'xml' => '<w:styles xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:docDefaults><w:rPrDefault><w:rPr><w:sz w:val="24"/></w:rPr></w:rPrDefault></w:docDefaults>{toReplace}</w:styles>'),
|
||||||
'document' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Document', 'xml' => '<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{toReplace}</w:body></w:document>'),
|
'document' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Document', 'xml' => '<w:document xmlns:v="urn:schemas-microsoft-com:vml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{toReplace}</w:body></w:document>'),
|
||||||
'footnotes' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Footnotes', 'xml' => '<w:footnotes xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:footnotes>'),
|
'footnotes' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Footnotes', 'xml' => '<w:footnotes xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:footnotes>'),
|
||||||
'endnotes' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Endnotes', 'xml' => '<w:endnotes xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:endnotes>'),
|
'endnotes' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Endnotes', 'xml' => '<w:endnotes xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:endnotes>'),
|
||||||
'settings' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Settings', 'xml' => '<w:comments xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:comments>'),
|
'settings' => array('class' => 'PhpOffice\PhpWord\Reader\Word2007\Settings', 'xml' => '<w:comments xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{toReplace}</w:comments>'),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue