From 54e7c6dd5a8199c8408dcfec8246eae4b5f6a17d Mon Sep 17 00:00:00 2001 From: troosan Date: Sun, 30 Dec 2018 00:45:45 +0100 Subject: [PATCH] don't default styles to false this allows us to for instance make part of a Heading not bold, which would otherwise be the default. --- samples/resources/Sample_11_ReadWord2007.docx | Bin 63388 -> 63832 bytes src/PhpWord/Style/Font.php | 18 ++--- .../Writer/Word2007/Style/AbstractStyle.php | 15 ++++ src/PhpWord/Writer/Word2007/Style/Font.php | 20 ++--- tests/PhpWord/Reader/Word2007/PartTest.php | 72 ++++++++++++++++++ tests/PhpWord/Reader/Word2007Test.php | 2 +- 6 files changed, 107 insertions(+), 20 deletions(-) diff --git a/samples/resources/Sample_11_ReadWord2007.docx b/samples/resources/Sample_11_ReadWord2007.docx index 406cf1e1ebf296f563f7a05ef4c7c6aaaffd148b..f6526360fd363431b222687b47a6d57ecde007af 100644 GIT binary patch delta 11300 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 !== null, 'w:szCs', 'w:val', $size * 2); // Bold, italic - $xmlWriter->writeElementIf($style->isBold(), 'w:b'); - $xmlWriter->writeElementIf($style->isBold(), 'w:bCs'); - $xmlWriter->writeElementIf($style->isItalic(), 'w:i'); - $xmlWriter->writeElementIf($style->isItalic(), 'w:iCs'); + $xmlWriter->writeElementIf($style->isBold() !== null, 'w:b', 'w:val', $this->writeOnOf($style->isBold())); + $xmlWriter->writeElementIf($style->isBold() !== null, 'w:bCs', 'w:val', $this->writeOnOf($style->isBold())); + $xmlWriter->writeElementIf($style->isItalic() !== null, 'w:i', 'w:val', $this->writeOnOf($style->isItalic())); + $xmlWriter->writeElementIf($style->isItalic() !== null, 'w:iCs', 'w:val', $this->writeOnOf($style->isItalic())); // Strikethrough, double strikethrough - $xmlWriter->writeElementIf($style->isStrikethrough(), 'w:strike'); - $xmlWriter->writeElementIf($style->isDoubleStrikethrough(), 'w:dstrike'); + $xmlWriter->writeElementIf($style->isStrikethrough() !== null, 'w:strike', 'w:val', $this->writeOnOf($style->isStrikethrough())); + $xmlWriter->writeElementIf($style->isDoubleStrikethrough() !== null, 'w:dstrike', 'w:val', $this->writeOnOf($style->isDoubleStrikethrough())); // Small caps, all caps - $xmlWriter->writeElementIf($style->isSmallCaps(), 'w:smallCaps'); - $xmlWriter->writeElementIf($style->isAllCaps(), 'w:caps'); + $xmlWriter->writeElementIf($style->isSmallCaps() !== null, 'w:smallCaps', 'w:val', $this->writeOnOf($style->isSmallCaps())); + $xmlWriter->writeElementIf($style->isAllCaps() !== null, 'w:caps', 'w:val', $this->writeOnOf($style->isAllCaps())); //Hidden text - $xmlWriter->writeElementIf($style->isHidden(), 'w:vanish'); + $xmlWriter->writeElementIf($style->isHidden(), 'w:vanish', 'w:val', $this->writeOnOf($style->isHidden())); // Underline $xmlWriter->writeElementIf($style->getUnderline() != 'none', 'w:u', 'w:val', $style->getUnderline()); @@ -139,7 +139,7 @@ class Font extends AbstractStyle $xmlWriter->writeElementIf($style->getKerning() !== null, 'w:kern', 'w:val', $style->getKerning() * 2); // noProof - $xmlWriter->writeElementIf($style->isNoProof() !== false, 'w:noProof'); + $xmlWriter->writeElementIf($style->isNoProof() !== null, 'w:noProof', $this->writeOnOf($style->isNoProof())); // Background-Color $shading = $style->getShading(); diff --git a/tests/PhpWord/Reader/Word2007/PartTest.php b/tests/PhpWord/Reader/Word2007/PartTest.php index 31a492b8..6b7d9294 100644 --- a/tests/PhpWord/Reader/Word2007/PartTest.php +++ b/tests/PhpWord/Reader/Word2007/PartTest.php @@ -160,4 +160,76 @@ class PartTest extends AbstractTestReader $this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $endnote->getElement(0)); $this->assertEquals('This is an endnote', $endnote->getElement(0)->getText()); } + + public function testReadHeadingWithOverriddenStyle() + { + $documentXml = ' + + + + + This is a bold + + + + + + heading + + + but with parts not in bold + + '; + + $stylesXml = ' + + + + + + + + + + + + + + + + + + + + + + + + + '; + + $phpWord = $this->getDocumentFromString(array('document' => $documentXml, 'styles' => $stylesXml)); + + $elements = $phpWord->getSection(0)->getElements(); + $this->assertInstanceOf('PhpOffice\PhpWord\Element\Title', $elements[0]); + /** @var \PhpOffice\PhpWord\Element\Title $title */ + $title = $elements[0]; + $this->assertEquals('Heading1', $title->getStyle()); + + /** @var \PhpOffice\PhpWord\Element\Text $text */ + $text = $title->getText()->getElement(0); + $this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $text); + $this->assertEquals('This is a bold ', $text->getText()); + + /** @var \PhpOffice\PhpWord\Element\Text $text */ + $text = $title->getText()->getElement(1); + $this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $text); + $this->assertEquals('heading', $text->getText()); + $this->assertFalse($text->getFontStyle()->isBold()); + + /** @var \PhpOffice\PhpWord\Element\Text $text */ + $text = $title->getText()->getElement(2); + $this->assertInstanceOf('PhpOffice\PhpWord\Element\Text', $text); + $this->assertEquals(' but with parts not in bold', $text->getText()); + } } diff --git a/tests/PhpWord/Reader/Word2007Test.php b/tests/PhpWord/Reader/Word2007Test.php index e4ea62de..6d660ce5 100644 --- a/tests/PhpWord/Reader/Word2007Test.php +++ b/tests/PhpWord/Reader/Word2007Test.php @@ -62,7 +62,7 @@ class Word2007Test extends \PHPUnit\Framework\TestCase $this->assertEquals(100, $phpWord->getSettings()->getZoom()); $doc = TestHelperDOCX::getDocument($phpWord); - $this->assertFalse($doc->elementExists('/w:document/w:body/w:p/w:r[w:t/node()="italics"]/w:rPr/w:b')); + $this->assertEquals('0', $doc->getElementAttribute('/w:document/w:body/w:p/w:r[w:t/node()="italics"]/w:rPr/w:b', 'w:val')); } /**