fix: guide - bouton telechargement icone seule, diagramme Architecture rendu en image dans le PDF, emoji couleur (Noto) (#105)
CI / lint (push) Successful in 1m39s
CI / security (push) Successful in 1m5s
CI / test (push) Successful in 3m25s
CI / build (push) Successful in 1m18s
CI / e2e (push) Successful in 11m43s

This commit is contained in:
2026-09-18 15:01:14 -04:00
parent 99a5b735c8
commit b8054665bc
23 changed files with 212 additions and 36 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

+21 -2
View File
@@ -13,6 +13,7 @@ quand les bibliothèques natives GTK manquent (Windows).
from __future__ import annotations
import datetime
import hashlib
import html
import json
import logging
@@ -26,6 +27,17 @@ ROOT = Path(__file__).resolve().parent.parent
INDEX_HTML = ROOT / "frontend" / "index.html"
LOCALES_DIR = ROOT / "frontend" / "locales"
VERSION_FILE = ROOT / "VERSION"
DIAGRAMS_DIR = ROOT / "backend" / "assets" / "guide_diagrams"
def diagram_png_for(code: str) -> Path | None:
"""Chemin du PNG pré-rendu (scripts/build_guide_diagrams.py) pour un code
Mermaid, ou None. Le hash doit rester synchrone avec le script de build :
sha1(unescape(code).strip())[:16]."""
normalized = html.unescape(code).strip()
sha = hashlib.sha1(normalized.encode("utf-8")).hexdigest()[:16]
png = DIAGRAMS_DIR / (sha + ".png")
return png if png.exists() else None
# Éléments décoratifs exclus des exports
_SKIP_CLASSES = {"help-hero-visual", "editor-modal", "help-nav"}
@@ -388,8 +400,15 @@ def _html_block(node: Node | str, out: list[str], loc: dict[str, str]) -> None:
tag = node.tag
if tag == "pre":
raw = html.escape(_pre_text(node), quote=False)
out.append(f"<pre><code>{raw}</code></pre>")
raw = _pre_text(node)
classes = _pre_classes(node)
if "language-mermaid" in classes:
png = diagram_png_for(raw)
if png is not None:
url = "file:///" + str(png).replace("\\", "/").lstrip("/")
out.append(f'<img src="{url}" style="max-width: 100%" />')
return
out.append(f"<pre><code>{html.escape(raw, quote=False)}</code></pre>")
return
kids = _resolve_i18n(node, loc)
+1 -1
View File
@@ -43,7 +43,7 @@ def build_pdf_html(body_html: str, title: str, theme: str = "light") -> str:
<head><meta charset="utf-8"><title>{title}</title>
<style>
body {{
font-family: Georgia, "Times New Roman", serif;
font-family: Georgia, "Times New Roman", serif, "Noto Color Emoji";
max-width: 720px;
margin: 40px auto;
padding: 0 20px;