Fix: CDU-PDF AssertionError Fallback + Kopfzeile vereinheitlicht + Fehler-Debug

This commit is contained in:
Dotty Dotter 2026-04-10 20:05:28 +02:00
parent 916b0ca643
commit 14140571d8
2 changed files with 17 additions and 4 deletions

View File

@ -649,7 +649,14 @@ def render_highlighted_page(programm_id: str, seite: int, query: str) -> Optiona
needle = (query or "").strip()[:200]
src = fitz.open(str(pdf_path))
try:
src = fitz.open(str(pdf_path))
except Exception:
# Manche PDFs (z.B. CDU Grundsatzprogramm 2007) lassen sich nicht
# mit PyMuPDF öffnen. Fallback: Original-PDF ohne Highlighting.
logger.exception("render_highlighted_page: kann %s nicht öffnen", pdf_path.name)
return pdf_path.read_bytes(), seite, False
try:
if seite < 1 or seite > len(src):
return None, 0, False
@ -689,7 +696,13 @@ def render_highlighted_page(programm_id: str, seite: int, query: str) -> Optiona
annot.update()
highlighted = bool(needle and rects)
return src.tobytes(), target_page_idx + 1, highlighted
try:
return src.tobytes(), target_page_idx + 1, highlighted
except (AssertionError, Exception):
# PyMuPDF kann manche PDFs nicht serialisieren (z.B. CDU 2007).
# Fallback: Original-PDF ohne Annotations zurückgeben.
logger.warning("render_highlighted_page: tobytes() failed für %s, sende Original", pdf_path.name)
return pdf_path.read_bytes(), target_page_idx + 1, False
finally:
src.close()

View File

@ -699,10 +699,10 @@
<button class="mode-btn active" onclick="showMode('browse')">📋 Durchsuchen</button>
<button class="mode-btn" onclick="showMode('tags')">🏷️ Tags</button>
<button class="mode-btn" onclick="showMode('upload')">📤 Prüfen</button>
<a href="/auswertungen" class="mode-btn" style="text-decoration: none;">📈 Auswertungen</a>
<a href="/quellen" class="mode-btn" style="text-decoration: none;">📚 Quellen</a>
<a href="/methodik" class="mode-btn" style="text-decoration: none;">🔍 Methodik</a>
<button id="auth-btn" class="mode-btn" style="border:none;cursor:pointer;font-size:0.85rem;">🔑 Anmelden</button>
<a href="/auswertungen" class="mode-btn" style="text-decoration: none;">📈 Auswertungen</a>
<button id="auth-btn" class="mode-btn" style="border:none;cursor:pointer;">🔑 Anmelden</button>
</div>
</header>