mirror of
https://github.com/PeWu/topola-viewer.git
synced 2026-08-31 23:31:47 +00:00
* Fix PDF export sizing chart to zoomed viewport downloadPdf() read the PDF page size from getSvgDimensions(), which returns the live #chartSvg width/height attributes. Those carry the on-screen zoomed size (chart_wrapper.ts writes size * scale on every d3-zoom event), not the true chart size. The SVG drawn into the page instead carried the true dimensions (getStrippedSvg divides by the zoom scale), so the PDF page and its contents mismatched: zooming in produced a giant page with the tree in one corner, zooming out produced a truncated strip. See issues #260 and #18. Fix: have getSvgContentsWithInlinedImages() return the chart's true width and height (read from the single stripped SVG clone it already builds), and have downloadPdf() consume those for both the jsPDF page format and the draw target. downloadSvg()/downloadPng() were already correct and only need to destructure contents from the new return shape. The buggy helper getSvgDimensions() is removed. * Add regression test for PDF export page size Zooms the chart, exports a PDF and asserts the PDF MediaBox matches the chart's true (unscaled) dimensions and not the live zoomed ones. Verified to fail on the pre-fix code (pdfW == liveW) and pass after the fix (pdfW == trueW). * Apply prettier formatting to chart_export.spec.ts
3.3 KiB
3.3 KiB