Skip to content

Commit dfd3413

Browse files
committed
Final (I hope) Changes for Sample11
RTF now works. In the process of saving, ODText creates a lot of new styles. Because it was being done before RTF and HTML in the samples, it was masking problems in the other formats. It is now changed to happen after the other formats.
1 parent 54906ba commit dfd3413

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

samples/Sample_Header.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@
3131
}
3232

3333
// Set writers
34-
$writers = ['Word2007' => 'docx', 'ODText' => 'odt', 'RTF' => 'rtf', 'HTML' => 'html', 'PDF' => 'pdf', 'EPub3' => 'epub'];
34+
$writers = [
35+
'Word2007' => 'docx',
36+
'RTF' => 'rtf',
37+
'HTML' => 'html',
38+
'PDF' => 'pdf',
39+
'EPub3' => 'epub',
40+
'ODText' => 'odt', // creates a lot of extra style - do it last
41+
];
3542

3643
// Set PDF renderer
3744
if (null === Settings::getPdfRendererPath()) {

src/PhpWord/Writer/RTF/Element/AbstractElement.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ protected function getStyles(): void
107107
$this->fontStyle = $element->getFontStyle();
108108
if (is_string($this->fontStyle)) {
109109
$this->fontStyle = Style::getStyle($this->fontStyle);
110+
} elseif ($this->fontStyle !== null && is_string($this->fontStyle->getStyleName())) {
111+
$temp = Style::getStyle($this->fontStyle->getStyleName());
112+
if ($temp instanceof FontStyle) {
113+
$this->fontStyle = $temp;
114+
}
110115
}
111116
}
112117

src/PhpWord/Writer/RTF/Part/Header.php

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,22 @@ private function registerFont(): void
205205
$elements = $section->getElements();
206206
$this->registerBorderColor($section->getStyle());
207207
foreach ($elements as $element) {
208-
if (method_exists($element, 'getFontStyle')) {
209-
$style = $element->getFontStyle();
210-
$this->registerFontItems($style);
208+
$this->anythingToRegister($element);
209+
}
210+
}
211+
}
212+
213+
/** @param mixed $element */
214+
private function anythingToRegister($element): void
215+
{
216+
if (is_object($element)) {
217+
if (method_exists($element, 'getFontStyle')) {
218+
$style = $element->getFontStyle();
219+
$this->registerFontItems($style);
220+
}
221+
if (method_exists($element, 'getElements')) {
222+
foreach ($element->getElements() as $subElement) {
223+
$this->anythingToRegister($subElement);
211224
}
212225
}
213226
}

tests/PhpWordTests/Writer/RTF/Sample11Test.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ public function testSample11(): void
3232
$phpWord = IOFactory::load($source);
3333
$writer = new RTF($phpWord);
3434
$content = $writer->getContent();
35-
$expected = '{\colortbl;\red255\green0\blue0;\red0\green0\blue0;\red0\green0\blue255;}';
35+
$expected = '{\colortbl;\red255\green0\blue0;\red0\green0\blue0;\red0\green0\blue255;\red0\green176\blue80;\red255\green255\blue0;}';
36+
self::assertStringContainsString($expected, $content);
37+
$expected = '\highlight5 highlighted';
38+
self::assertStringContainsString($expected, $content);
39+
$expected = '\strike even ';
3640
self::assertStringContainsString($expected, $content);
3741
}
3842
}

0 commit comments

Comments
 (0)