From e740deb7b12fa019756ff9708082a769b0f62782 Mon Sep 17 00:00:00 2001 From: oleibman <10341515+oleibman@users.noreply.github.com> Date: Thu, 6 Feb 2025 00:19:49 -0800 Subject: [PATCH] Html Writer Duplicate Header Styles in Style Tags Nominally redundant, but makes things easier for Html Reader. --- src/PhpWord/Writer/HTML/Element/Title.php | 18 +++++++++++++++--- tests/PhpWordTests/Shared/HtmlHeadingsTest.php | 16 +++++++++++++--- tests/PhpWordTests/Writer/HTML/PartTest.php | 6 +++--- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/PhpWord/Writer/HTML/Element/Title.php b/src/PhpWord/Writer/HTML/Element/Title.php index e759bfdcd6..2456a0a601 100644 --- a/src/PhpWord/Writer/HTML/Element/Title.php +++ b/src/PhpWord/Writer/HTML/Element/Title.php @@ -19,7 +19,9 @@ namespace PhpOffice\PhpWord\Writer\HTML\Element; use PhpOffice\PhpWord\Element\Title as PhpWordTitle; +use PhpOffice\PhpWord\Style; use PhpOffice\PhpWord\Writer\HTML; +use PhpOffice\PhpWord\Writer\HTML\Style\Font; use PhpOffice\PhpWord\Writer\HTML\Style\Paragraph; /** @@ -52,13 +54,23 @@ public function write() $text = $writer->write(); } $css = ''; + $write1 = $write2 = $write3 = ''; + $style = Style::getStyle('Heading_' . $this->element->getDepth()); + if ($style !== null) { + $styleWriter = new Font($style); + $write1 = $styleWriter->write(); + } if (is_object($paragraphStyle)) { $styleWriter = new Paragraph($paragraphStyle); - $write = $styleWriter->write(); - if ($write !== '') { - $css = " style=\"$write\""; + $write3 = $styleWriter->write(); + if ($write1 !== '' && $write3 !== '') { + $write2 = ' '; } } + $css = "$write1$write2$write3"; + if ($css !== '') { + $css = " style=\"$css\""; + } $content = "<{$tag}{$css}>{$text}{$tag}>" . PHP_EOL; diff --git a/tests/PhpWordTests/Shared/HtmlHeadingsTest.php b/tests/PhpWordTests/Shared/HtmlHeadingsTest.php index 8ecc95b773..331935fbae 100644 --- a/tests/PhpWordTests/Shared/HtmlHeadingsTest.php +++ b/tests/PhpWordTests/Shared/HtmlHeadingsTest.php @@ -40,7 +40,7 @@ public function testRoundTripHeadings(): void $section = $originalDoc->addSection(); $expectedStrings = []; $section->addTitle('Title 1', 1); - $expectedStrings[] = '