feat: affichage PDF avec TOC + frame-src CSP
CI / lint (push) Successful in 23s
CI / security (push) Successful in 14s
CI / test (push) Successful in 27s
CI / build (push) Successful in 8s
CI / e2e (push) Failing after 1m29s
Desktop Build / build-windows (push) Has been cancelled
Desktop Build / build-linux (push) Has been cancelled

- CSP: ajout frame-src 'self' http://127.0.0.1:* (permet iframe PDF)
- pdf_reader.py: extract_pdf_toc() — extrait les bookmarks/outline (pypdf + pymupdf)
- main.py: inclut pdf_toc dans la réponse /api/file pour les PDF
- viewer.js: sidebar TOC avec liens vers les pages (si bookmarks présents)
- style.css: layout .pdf-body flex + .pdf-toc sidebar 240px
This commit is contained in:
2026-07-27 12:32:11 -04:00
parent 1dd14e0bfd
commit 2ba7138881
5 changed files with 99 additions and 4 deletions
+40
View File
@@ -8498,6 +8498,46 @@ body.popup-mode .content-area {
border: none;
min-height: 70vh;
}
.pdf-body {
display: flex;
flex: 1;
min-height: 0;
}
.pdf-toc {
width: 240px;
flex-shrink: 0;
overflow-y: auto;
padding: 12px;
border-right: 1px solid var(--border);
background: var(--surface2);
font-size: 0.85rem;
}
.pdf-toc h3 {
margin: 0 0 8px 0;
font-size: 0.9rem;
color: var(--text-dim);
}
.pdf-toc ul {
list-style: none;
padding: 0;
margin: 0;
}
.pdf-toc li {
padding: 2px 0;
}
.pdf-toc a {
color: var(--text);
text-decoration: none;
}
.pdf-toc a:hover {
color: var(--accent);
text-decoration: underline;
}
.toc-page {
color: var(--text-dim);
font-size: 0.75rem;
margin-left: 4px;
}
/* ── PaneManager — Split View ── */
.pane-grid {