PDF-export toont tijdlijn als platte genummerde lijst, niet als visuele tijdlijn #1712
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1712
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Probleem
Bij het exporteren van een rapportage naar PDF wordt een tijdlijn met de
<!-- timeline -->-marker niet als visuele tijdlijn getekend, maar als een platte genummerde lijst met vetgedrukte tijdaanduidingen. Op het scherm (in de documentweergave) wél, in de PDF niet.Zie bijv. het incidentrapport
incidentrapport-rwm-onjuiste-maprechten-q-schijf-2026-07-31.md, sectie 3 "Feitenrelaas en tijdlijn": op het scherm verschijnt een tijdlijn met verticale rail, bolletjes, horizontale verbindingen naar kaarten met afgeronde hoeken en schaduw, en een eindmarkering. In de PDF-export staat dezelfde inhoud als een gewone genummerde lijst:Dat is semantisch dichterbij dan de vorige vorm (een kale tabel, #1680), maar visueel is het platte tekst — de tijdlijn-identiteit gaat verloren.
Reproductie
<!-- timeline -->-marker gevolgd door een tijdlijntabel (bijv. het incidentrapport hierboven).Verwacht gedrag
De PDF toont de tijdlijn met een visuele rail, bolletjes per gebeurtenis, en kaarten — vergelijkbaar met de documentweergave op het scherm (
_TimelineEventViewindocument_markdown_timeline.dart), geïnterpreteerd binnen de mogelijkheden vanpackage:pdf.Huidig gedrag
De PDF toont een genummerde lijst (
PdfListBlockmetordered: true) met vetgedrukte tijdaanduiding per punt. Dit was de oplossing voor #1680, die de tijdlijn van een kale tabel naar "de dichtstbijzijnde bestaande blokvorm" bracht — een tussenstap, niet het einddoel.Technische analyse
Wat er nu gebeurt
In
lib/services/pdf/markdown_to_pdf_blocks.dart(functie_protectTimelines, regels 211-253) wordt een gemarkeerde tijdlijn herkend en omgezet in eenPdfListBlock(items, ordered: true)met per punt een alinea met vetgedrukte marker + gebeurtenistekst + optionele metadata. De renderer tekent dat als een gewone genummerde lijst.De blok-typen in
lib/services/pdf/document_pdf_blocks.dartkennen geen toegewijd tijdlijn-blok:PdfHeadingBlock,PdfParagraphBlock,PdfListBlock,PdfQuoteBlock,PdfCodeBlock,PdfTableBlock,PdfImageBlock,PdfPageBreakBlock,PdfTocBlock,PdfVerbatimBlock. De tijdlijn wordt in eenPdfListBlockgeperst omdat dat de dichtstbijzijnde bestaande vorm is.Wat op het scherm gebeurt
lib/widgets/reader/parts/document_markdown_timeline.dart(_TimelineEventView) tekent per gebeurtenis:Oplossingsrichting
Nieuw blok-type: Voeg een
PdfTimelineBlocktoe aandocument_pdf_blocks.dartdie de gestructureerde tijdlijn-data draagt (per gebeurtenis: marker, event-tekst alsPdfSpans, optionele metadata met koptekst, en de tabel-headers voor marker/event/metadata). Dit maakt de beslissing toetsbaar: een test leest de blokken en ziet eenPdfTimelineBlockin plaats van eenPdfListBlock.Produceren in de converter: Laat
_protectTimelinesinmarkdown_to_pdf_blocks.darteenPdfTimelineBlockproduceren in plaats van eenPdfListBlock. De data is al beschikbaar viaanalyzeMarkedTimeline— alleen de uitvoervorm verandert.Renderer: Voeg een tak voor
PdfTimelineBlocktoe in de PDF-renderer (document_pdf_renderer.dart/document_pdf_widgets.dart) die metpackage:pdf-primitieven een visuele tijdlijn tekent:package:pdfondersteunt lijnen, cirkels, afgeronde rechthoeken en schaduwen, dus dit is haalbaar. De vorm kan eenvoudiger zijn dan op het scherm (bijv. zonder schaduw of met een dunmere rail) zolang de tijdlijn-identiteit behouden blijft.Test: Een eenheidstest die verifieert dat
_protectTimelineseenPdfTimelineBlockoplevert (geenPdfListBlock), en een render-integratietest die controleert dat de PDF een tijdlijn-structuur bevat en niet een genummerde lijst.Scope en grenzen
markdown_to_latex.dart) gebruikt eendescription-lijst en valt buiten dit issue — LaTeX heeft zijn eigen typografische conventies.<!-- timeline -->-marker) verandert niet.PdfBlock-subtype toe aan een interne tussenvorm, raakt geen bestandsformaat, opslag, afhankelijkheid of publieke belofte. Het brengt de PDF-export in lijn met wat de documentweergave op het scherm al belooft.Relatie met #1680
#1680 loste op dat de PDF een tijdlijn als kale tabel tekende. De oplossing was een genummerde lijst — "de dichtstbijzijnde bestaande blokvorm". Dit issue is de volgende stap: een toegewijd tijdlijn-blok met visuele rendering.
Ook voor andere modaliteiten (HTML en LaTeX) is de weergave belangrijk. Dit is de kernfeature immers.
Uit de bredere scherm/exportcontrole blijkt dat de doorlopende HTML-tijdlijn al een rail, bolletjes en kaarten heeft, maar nog achterloopt op de huidige schermweergave uit #1711:
FaseenBesluitin een tabelFase | Besluit | Eigenaar); alleen de derde kop wordt als metadatalabel gebruikt;Dit hoort bij dezelfde tijdlijnpariteit als de PDF in dit issue en krijgt daarom geen duplicerend los ticket. Neem bij de oplossing één gedeeld rendercontract als bron en borg PDF én doorlopende HTML tegen dezelfde kolomkoppen en visuele identiteit. LaTeX blijft een bewerkbare bronexport en valt buiten deze visuele eindproductscope.
Opgepakt. Tak: fix/document-pdf-parity-1712-1716. Verwachte reikwijdte: lib/services/pdf/, lib/services/marp_html/, tests en bestaande documentatie.