From b7503e0272162bd7a0710bfb9b268e5d21bf3d84 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Wed, 3 Jun 2026 17:15:20 +0200
Subject: [PATCH] fixes doc generation and renderers 3
---
.../serviceGeneration/renderers/rendererDocx.py | 4 +++-
.../serviceGeneration/renderers/rendererPdf.py | 10 ++++------
.../serviceGeneration/renderers/rendererPptx.py | 3 ++-
.../serviceGeneration/renderers/rendererXlsx.py | 4 +++-
tests/unit/services/test_renderer_pdf_smoke.py | 3 ++-
5 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererDocx.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererDocx.py
index 9d7b24ff..28e6fd65 100644
--- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererDocx.py
+++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererDocx.py
@@ -120,9 +120,11 @@ class RendererDocx(BaseRenderer):
doc = Document()
self.logger.debug(f"_generateDocxFromJson: Document created in {time.time() - start_time:.2f}s")
- # Apply unified style (always provided by mainServiceGeneration.renderReport)
style_start = time.time()
self.logger.debug("_generateDocxFromJson: About to get style set")
+ if not unifiedStyle:
+ from modules.serviceCenter.services.serviceGeneration.styleDefaults import resolveStyle
+ unifiedStyle = resolveStyle(None)
styleSet = self._convertUnifiedStyleToInternal(unifiedStyle)
self._unifiedStyle = unifiedStyle
self._styleSet = styleSet
diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py
index fc6bd51b..425da644 100644
--- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py
+++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPdf.py
@@ -229,11 +229,9 @@ class RendererPdf(BaseRenderer):
# memory simultaneously. Collected here, deleted after the build.
self._tempImageFiles = []
try:
- self._unifiedStyle = unifiedStyle
- if unifiedStyle:
- styles = self._convertUnifiedStyleToInternal(unifiedStyle)
- else:
- styles = self._convertUnifiedStyleToInternal({})
+ from modules.serviceCenter.services.serviceGeneration.styleDefaults import resolveStyle
+ self._unifiedStyle = unifiedStyle or resolveStyle(None)
+ styles = self._convertUnifiedStyleToInternal(self._unifiedStyle)
for level in range(1, 7):
hKey = f"heading{level}"
if hKey not in styles:
@@ -934,7 +932,7 @@ class RendererPdf(BaseRenderer):
code = _normalizePdfMonospaceText(code)
elements = []
fs = code_style_def.get("font_size", 9)
- mono = code_style_def.get("font", "Courier")
+ mono = _resolveFontFamily(code_style_def.get("font", "Courier"))
textColorFallback = styles.get("colors", {}).get("primary", "#24292e")
diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py
index 7064ea1e..112f1bf0 100644
--- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py
+++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererPptx.py
@@ -92,7 +92,8 @@ class RendererPptx(BaseRenderer):
import re
if not style:
- style = {}
+ from modules.serviceCenter.services.serviceGeneration.styleDefaults import resolveStyle
+ style = resolveStyle(None)
internalStyle = self._convertUnifiedStyleToInternal(style)
styles = internalStyle
self._styles = styles
diff --git a/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py b/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py
index 0b544dd8..44d491d7 100644
--- a/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py
+++ b/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py
@@ -136,7 +136,9 @@ class RendererXlsx(BaseRenderer):
self.services.utils.debugLogToFile(f"EXCEL JSON CONTENT TYPE: {type(jsonContent)}", "EXCEL_RENDERER")
self.services.utils.debugLogToFile(f"EXCEL JSON CONTENT KEYS: {list(jsonContent.keys()) if isinstance(jsonContent, dict) else 'Not a dict'}", "EXCEL_RENDERER")
- # Store unified style for use by inline-run helpers
+ if not style:
+ from modules.serviceCenter.services.serviceGeneration.styleDefaults import resolveStyle
+ style = resolveStyle(None)
self._unifiedStyle = style
# Convert unified style to internal format
diff --git a/tests/unit/services/test_renderer_pdf_smoke.py b/tests/unit/services/test_renderer_pdf_smoke.py
index 33324572..60c1a2ef 100644
--- a/tests/unit/services/test_renderer_pdf_smoke.py
+++ b/tests/unit/services/test_renderer_pdf_smoke.py
@@ -232,8 +232,9 @@ def test_normalize_pdf_monospace_replaces_box_drawing():
def test_pdf_heading_font_sizes_strictly_decrease():
"""H3 must not fall back to H1 styles (previous bug: ## smaller than ###)."""
+ from modules.serviceCenter.services.serviceGeneration.styleDefaults import resolveStyle
renderer = RendererPdf(services=_fakeServices())
- styles = renderer._getDefaultStyleSet()
+ styles = renderer._convertUnifiedStyleToInternal(resolveStyle(None))
assert styles["heading1"]["font_size"] > styles["heading2"]["font_size"] > styles["heading3"]["font_size"]
assert renderer._defaultHeadingStyleDef(2)["font_size"] > renderer._defaultHeadingStyleDef(3)["font_size"]
if REPORTLAB_AVAILABLE: