feat(verbale): logo Gepafin SVG ufficiale nel verbale PDF

Carlo ha fornito il logo Gepafin ufficiale (SVG vettoriale, colore #4A644E verde
istituzionale, 118x50 viewbox). Sostituito il placeholder testuale
<span class="hdr__logo">GEPAFIN</span> con il logo reale.

Implementazione:
- app/static/gepafin-logo.svg — logo copiato dal repo FE Gepafin (8.7KB SVG)
- verbale.py: aggiunto STATIC_DIR + LOGO_FILE_URL con path file:// assoluto
  (weasyprint risolve file:// localmente senza HTTP fetch)
- template passa logo_path nel contesto Jinja
- verbale_istruttoria.html: CSS .hdr__logo-img (altezza 38pt) sostituisce
  .hdr__logo testuale

Verificato: PDF da 23KB -> 32KB (incluso SVG), XObject embedded OK,
header PDF-1.7 valido.

Nel PDF il logo appare in alto a destra dell'header accanto al sottotitolo
'Finanziaria regionale dell\'Umbria'.
This commit is contained in:
BFLOWS
2026-04-18 22:15:24 +02:00
parent 8950633481
commit a3f863ecdb
3 changed files with 8 additions and 3 deletions

View File

@@ -23,6 +23,9 @@ router = APIRouter(prefix="/api/remission-practices/instructor", tags=["verbale"
TEMPLATES_DIR = Path(__file__).resolve().parent.parent / "templates_jinja"
STATIC_DIR = Path(__file__).resolve().parent.parent / "static"
# URL file:// assoluto per weasyprint (che non fa HTTP fetch ma risolve file://)
LOGO_FILE_URL = f"file://{STATIC_DIR.resolve()}/gepafin-logo.svg"
# ---------- Jinja env & filters ----------
@@ -244,6 +247,7 @@ def _build_context(db: Session, practice: RemissionPractice, user: AuthUser) ->
"custom_checks_merged": custom_checks_merged,
"previous_tranches": previous_tranches,
"max_tranches_snapshot": max_tranches_snapshot,
"logo_path": LOGO_FILE_URL,
}