ODT-documentexport: Mermaid-diagram verschijnt als ontsnapte brontekst #2471
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2471
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?
Gebruikersprobleem
Een offerte met een Mermaid-flowchart exporteert naar .odt met regels als
flowchart LRenF1["1. Inventarisatie<br/>..."]in plaats van een leesbaar diagram. De ontvanger ziet implementatiebron en XML-entiteiten in een document dat klaar moet zijn voor verzending.Reproductie
Zet een Mermaid-codeblok in een document met onder meer:
Exporteer als ODT en open het bestand in LibreOffice. Controleer zowel de zichtbare pagina als content.xml in de ODT-ZIP.
Oorzaak op origin/main (
334604137)De ODT-tak in lib/services/document_export_service.dart:350-365 geeft geen renderMermaid-callback door. buildDocumentExportOdt in lib/services/odt/document_odt_export.dart:46-76 zet de geprojecteerde Markdown rechtstreeks om met markdownToOdtBody; er is geen Mermaid-detectie, rasterisatie of afbeeldingsentry. De converter behandelt
pre/codeals Preformatted_Text (lib/services/odt/markdown_to_odt.dart:409-425). DOCX heeft wél Mermaid-detectie en PNG-rasterisatie (lib/services/docx/document_docx_export.dart:181-240). Bovendien gebruikt de ODT-parser encodeHtml: true (markdown_to_odt.dart:74) en codebloktekst gaat daarna nog door xmlEscape; dat verklaart vermoedelijk waarom de zichtbare bron"/<kan bevatten. Bevestig dit met de aangeleverde reproductie.Oplossing
Geef de ODT-route dezelfde diagramsemantiek als de andere documentexports: herken fenced
mermaid, render met de bestaande themakleuren naar SVG en rasteriseer naar een scherp PNG of gebruik een ODT-compatibele vectorafbeelding. Plaats de afbeelding alsdraw:imagemet een Pictures/-entry en manifestregistratie, begrensd binnen tekstbreedte en met passende alternatieve beschrijving. Maak een mislukte render expliciet zichtbaar in het exportresultaat; lever niet stilweg een offerte met broncode als zogenaamd diagram. Repareer afzonderlijk de dubbele XML-escaping van gewone codeblokken, zonder XML-injectie mogelijk te maken. Houd de originele Markdown intact en respecteer de bestaande privacyprojectie.Acceptatie en regressietests
flowchart LR-bron of letterlijke"/<-entiteiten.<br/>en ampersand toont de bedoelde tekens één keer correct en levert geldige XML.