fix: PDF-Link mit #page=N-Hash — Browser-PDF-Viewer landet jetzt direkt auf der richtigen Seite

Browser-PDF-Reader (Chrome, Firefox) ignorieren das von /OpenAction-Eintrag im
PDF-Catalog (#88f9c7d) komplett. Der zuverlaessige Weg: URL-Hash-Anker '#page=N'.

Drei Stellen angepasst:
- redline_utils.build_pdf_href: haengt #page={seite} an die URL
- embeddings._build_zitat_url (rebind): analog
- v2/components/quote_card.html: bei alten DB-Eintraegen ohne Hash wird er
  on-the-fly aus dem 'seite='-Query-Param erzeugt

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-04-25 22:09:46 +02:00
parent 88f9c7db6c
commit 273d45ea36
3 changed files with 7 additions and 3 deletions

View File

@ -714,7 +714,7 @@ def _chunk_pdf_url(chunk: dict) -> Optional[str]:
# die URL bleibt bounded (sonst würden 500-Zeichen-Snippets in jeder # die URL bleibt bounded (sonst würden 500-Zeichen-Snippets in jeder
# Zitat-URL stehen und das HTML-Report-JSON aufblähen). # Zitat-URL stehen und das HTML-Report-JSON aufblähen).
q = urllib.parse.quote_plus(text[:200]) q = urllib.parse.quote_plus(text[:200])
return f"/api/wahlprogramm-cite?pid={prog_id}&seite={seite}&q={q}" return f"/api/wahlprogramm-cite?pid={prog_id}&seite={seite}&q={q}#page={seite}"
if seite: if seite:
return f"/static/referenzen/{pdf}#page={seite}" return f"/static/referenzen/{pdf}#page={seite}"

View File

@ -85,4 +85,6 @@ def build_pdf_href(zitat: dict, bundesland: str = "") -> str:
text = zitat.get("text", "") text = zitat.get("text", "")
q = " ".join(text.split()[:5]) q = " ".join(text.split()[:5])
return f"/api/wahlprogramm-cite?pid={pid}&seite={seite}&q={quote_plus(q)}" # #page=N als URL-Hash, damit der Browser-PDF-Viewer direkt zur Seite
# springt — OpenAction im PDF wird von Chrome/Firefox ignoriert.
return f"/api/wahlprogramm-cite?pid={pid}&seite={seite}&q={quote_plus(q)}#page={seite}"

View File

@ -27,7 +27,9 @@
{% endif %} {% endif %}
{{ source }} {{ source }}
{% if pdf_href %} {% if pdf_href %}
· <a href="{{ pdf_href }}" target="_blank" rel="noopener" style="color:var(--ecg-blue);border-bottom:1px solid rgba(0,157,165,0.35);">PDF öffnen</a> {# Falls pdf_href noch keinen #page=…-Anker hat, aus seite= im Query-String einen anhaengen — Browser-PDF-Viewer ignorieren PDF-OpenAction, der Hash-Anker funktioniert zuverlaessig. #}
{% set _href = pdf_href if '#page=' in pdf_href else (pdf_href ~ ('#page=' ~ (pdf_href.split('seite=')[1].split('&')[0] if 'seite=' in pdf_href else '1'))) %}
· <a href="{{ _href }}" target="_blank" rel="noopener" style="color:var(--ecg-blue);border-bottom:1px solid rgba(0,157,165,0.35);">PDF öffnen</a>
{% endif %} {% endif %}
</cite> </cite>
</div> </div>