diff --git a/app/embeddings.py b/app/embeddings.py index e3e44a5..ea798c7 100644 --- a/app/embeddings.py +++ b/app/embeddings.py @@ -797,8 +797,7 @@ def render_highlighted_page(programm_id: str, seite: int, query: str) -> Optiona target_page_idx = i break - # Volles PDF mit Highlight-Annotation. Der Browser öffnet das - # vollständige Wahlprogramm; das Frontend hängt #page=N an die URL. + # Volles PDF mit Highlight-Annotation. page = src[target_page_idx] if needle and rects: for rect in rects: @@ -807,6 +806,16 @@ def render_highlighted_page(programm_id: str, seite: int, query: str) -> Optiona annot.set_colors(stroke=(1.0, 0.93, 0.0)) # gelb annot.update() + # PDF-OpenAction setzen, damit der Reader direkt auf der richtigen + # Seite startet (statt Seite 1) — sonst sieht der User „PDF öffnet, + # aber falsche Seite". /Fit = passt-zur-Größe. + try: + page_xref = page.xref + catalog_xref = src.pdf_catalog() + src.xref_set_key(catalog_xref, "OpenAction", f"[{page_xref} 0 R /Fit]") + except Exception: + logger.exception("render_highlighted_page: OpenAction-Setzen fehlgeschlagen") + highlighted = bool(needle and rects) try: return src.tobytes(), target_page_idx + 1, highlighted diff --git a/app/static/v2/v2.css b/app/static/v2/v2.css index 2360001..318cb6b 100644 --- a/app/static/v2/v2.css +++ b/app/static/v2/v2.css @@ -75,12 +75,13 @@ body.v2 :focus-visible { line-height: 1.2; color: var(--ecg-dark); } -.v2-topbar > *, -.v2-topbar button, -.v2-topbar select { - padding-top: 2px; - padding-bottom: 2px; +.v2-topbar select, +.v2-topbar button { + padding-top: 1px; + padding-bottom: 1px; + margin: 0; } +.v2-topbar a { padding: 0; } .v2-topbar-spacer { flex: 1;