PDF-export: de kolombreedtefix van #1727 dekt een tabel met zeven kolommen niet #1794
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#1794
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?
Vervolg op #1727. Die issue is gesloten en de fix (
836197ca9, PR #1728) zit in v0.4.10. Toch vertoont een verse export met OciDeck 0.4.10 het probleem onverminderd zodra een tabel zeven kolommen heeft.Waarom dit niet "oude build" is
De fix ging in op 22-08-2026, toen
pubspec.yamlnogversion: 0.4.8+22droeg. De versie werd pas0.4.10bij3f2b51ef3, en836197ca9is aantoonbaar voorouder daarvan:Elke build die zich "OciDeck 0.4.10" noemt, draagt de fix dus. De onderzochte PDF is op 26-08-2026 geëxporteerd en meldt in de metadata
Producer: OciDeck 0.4.10.Werkelijk gedrag
In
Incidentrapport-RWM-aanval-op-de-externe-werkomgeving-RDWebRD-Gateway-volledig.pdf, §18 Aanbevelingenregister (7 kolommen, 17 rijen, pagina's 55–61):Veiligheidsvraagstukstaat alsVeiligheidsvraagstu/k,GeadresseerdealsGeadresseer/de,PrioriteitalsPriori/teit,RichttermijnalsRichtter/mijn;Kritie/k,Midd/el,bij afrondin/g onderzo/ek,verantwoordeli/jken,restrisicobeoor/deling,MFA/rollenove/rzicht;R-01over drie regels valt:R/-0/1.Ter vergelijking: de vier- en vijfkoloms tabellen in hetzelfde document (§11.2, §11.3, §15.3, §16.1) renderen sinds de fix wél netjes. De grens ligt ergens tussen vijf en zeven kolommen.
Waarom de huidige aanpak hier niet toereikend is
pdfTableColumnWidthsverdeelt de flex-ruimte evenredig met de breedte van het langste woord per kolom. Dat werkt zolang de som van die langste woorden op het blad past. Bij zeven kolommen met prozacellen is dat niet zo, en de doc-comment van de functie erkent dat ook:Meer rekenwerk aan de kolomverdeling lost dit dus niet op. Zeven prozakolommen passen niet op A4-staand — dat is een eigenschap van het blad, niet van de verdeelsleutel.
Richting voor een oplossing
Niet één van deze, maar een keuze:
De eerste twee helpen de auteur die niets verandert; de derde is de eerlijkste. Mogelijk alle drie: verklein waar het kan, waarschuw waar het niet kan.
Nevenwaarneming: rendertijd
Bij een poging deze tabel los te renderen (
buildDocumentPdfop alleen de tabelregels van §18) draaideflutter_testermeer dan twaalf minuten op 136% CPU zonder te voltooien. Bij de vier- en vijfkoloms tabellen uit hetzelfde document treedt dat niet op. Dit is een losse waarneming uit een wegwerptest, geen afgeronde diagnose — maar het is de moeite waard om na te gaan of de kolomverdeling bij overloop in een herhaalpoging blijft hangen.Opgepakt, samen met #1789 — beide zitten in
pdfTableColumnWidths. Takfix/pdf-tabelbreedte-1789-1794.Let op:
lib/services/pdf/document_pdf_widgets.darttelt 1025 regels tegen een plafond van 1026, dus er is één regel lucht. De kolombreedte-logica (regels 847-1025) gaat daarom eerst alspartnaar een eigen bestand; dat verlaagt het plafond en maakt ruimte voor de fix.Opgelost in
aa6d43bf2(PR #1795). De letter van een tabel krimpt nu tot elke kolom haar langste woord op één regel draagt — dat maakt élk langste woord evenredig smaller en herstelt de pasvorm zonder aan de verdeelsleutel te tornen.Twee dingen die het meten leerde:
_charWidthFactormeet in kleine letters (een kapitale G telt als 0,55 em in plaats van ~0,72) en is geijkt op een schreefloze letter, terwijl een rapport vaak een schreefletter zet. Zonder marge kwam elke kolom één teken tekort en brak er alsnog een woord af.De nevenwaarneming over de rendertijd is niet gereproduceerd: de zeven-koloms tabel rendert in de toetsen binnen een seconde. Wat ik toen zag was vermoedelijk de bedorven testcache na een afgebroken run, niet de tabel.