From 7e69ea97eda24c936f0ec4677949df719bad8932 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Mon, 1 Sep 2025 10:25:33 -0500 Subject: [PATCH 1/4] Fix Header.php registerFont() registerFont() registered fonts and colors from sections, but not from subparts of sections, such as textruns. --- src/PhpWord/Writer/RTF/Part/Header.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/PhpWord/Writer/RTF/Part/Header.php b/src/PhpWord/Writer/RTF/Part/Header.php index 97644fe4ac..06f1a62df7 100644 --- a/src/PhpWord/Writer/RTF/Part/Header.php +++ b/src/PhpWord/Writer/RTF/Part/Header.php @@ -204,6 +204,14 @@ private function registerFont(): void if (method_exists($element, 'getFontStyle')) { $style = $element->getFontStyle(); $this->registerFontItems($style); + } elseif (method_exists($element, 'getElements')) { + $textRuns = $element->getElements(); + foreach ($textRuns as $textRun) { + if (method_exists($textRun, 'getFontStyle')) { + $style = $textRun->getFontStyle(); + $this->registerFontItems($style); + } + } } } } From dd9111c34f6ac6cb4d3ee3ca34d7b2d8ec1dc1b4 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Mon, 1 Sep 2025 22:07:49 -0500 Subject: [PATCH 2/4] Update Header.php - Fix formatting --- src/PhpWord/Writer/RTF/Part/Header.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpWord/Writer/RTF/Part/Header.php b/src/PhpWord/Writer/RTF/Part/Header.php index 06f1a62df7..d1f44fd67f 100644 --- a/src/PhpWord/Writer/RTF/Part/Header.php +++ b/src/PhpWord/Writer/RTF/Part/Header.php @@ -204,7 +204,7 @@ private function registerFont(): void if (method_exists($element, 'getFontStyle')) { $style = $element->getFontStyle(); $this->registerFontItems($style); - } elseif (method_exists($element, 'getElements')) { + } elseif (method_exists($element, 'getElements')) { $textRuns = $element->getElements(); foreach ($textRuns as $textRun) { if (method_exists($textRun, 'getFontStyle')) { From 85cfe103ebd6e2ee20773179cb8b5b7dcd685f9f Mon Sep 17 00:00:00 2001 From: rasamassen Date: Tue, 2 Sep 2025 19:45:03 -0500 Subject: [PATCH 3/4] Update Header.php - Fix binary operation error At the point of errors, the variable must be an object because it passed the method_exists() test, but because the php static analysis tests didn't like the chance that it might return a string, let's explicitly cast the variable as an object. --- src/PhpWord/Writer/RTF/Part/Header.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PhpWord/Writer/RTF/Part/Header.php b/src/PhpWord/Writer/RTF/Part/Header.php index d1f44fd67f..a8e5757cec 100644 --- a/src/PhpWord/Writer/RTF/Part/Header.php +++ b/src/PhpWord/Writer/RTF/Part/Header.php @@ -202,13 +202,13 @@ private function registerFont(): void $this->registerBorderColor($section->getStyle()); foreach ($elements as $element) { if (method_exists($element, 'getFontStyle')) { - $style = $element->getFontStyle(); + $style = (object)$element->getFontStyle(); $this->registerFontItems($style); } elseif (method_exists($element, 'getElements')) { - $textRuns = $element->getElements(); - foreach ($textRuns as $textRun) { - if (method_exists($textRun, 'getFontStyle')) { - $style = $textRun->getFontStyle(); + $subElements = $element->getElements(); + foreach ($subElements as $subElement) { + if (method_exists($subElement, 'getFontStyle')) { + $style = (object)$subElement->getFontStyle(); $this->registerFontItems($style); } } From 9f8b784c551121e07bc8be5f663267431c4dcf55 Mon Sep 17 00:00:00 2001 From: rasamassen Date: Tue, 2 Sep 2025 19:50:20 -0500 Subject: [PATCH 4/4] Update Header.php - Try again --- src/PhpWord/Writer/RTF/Part/Header.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/PhpWord/Writer/RTF/Part/Header.php b/src/PhpWord/Writer/RTF/Part/Header.php index a8e5757cec..9399b8be0b 100644 --- a/src/PhpWord/Writer/RTF/Part/Header.php +++ b/src/PhpWord/Writer/RTF/Part/Header.php @@ -201,14 +201,14 @@ private function registerFont(): void $elements = $section->getElements(); $this->registerBorderColor($section->getStyle()); foreach ($elements as $element) { - if (method_exists($element, 'getFontStyle')) { - $style = (object)$element->getFontStyle(); + if (is_object($element) && method_exists($element, 'getFontStyle')) { + $style = $element->getFontStyle(); $this->registerFontItems($style); - } elseif (method_exists($element, 'getElements')) { + } elseif (is_object($element) && method_exists($element, 'getElements')) { $subElements = $element->getElements(); foreach ($subElements as $subElement) { - if (method_exists($subElement, 'getFontStyle')) { - $style = (object)$subElement->getFontStyle(); + if (is_object($subElement) && method_exists($subElement, 'getFontStyle')) { + $style = $subElement->getFontStyle(); $this->registerFontItems($style); } }