Yasuhiro Arakaki
04/12/2026, 10:19 AMpage.screenshot() is called before page.pdf(), which forces the browser to fully paint all canvas elements. The PDF-only path calls page.pdf() directly, and Chromium's print rendering pipeline unreliably captures canvas content.
I've filed an issue with the root cause analysis: #21950Yasuhiro Arakaki
04/12/2026, 10:27 PMJavi
04/13/2026, 7:26 AMcharts rendered with ECharts (Canvas) are intermittently blank in the generated PDFIn the past, this error was happening because the browser incorrectly thinks the chart finished loading, or timeout, or the charts has an animation (we need to diable those in minimal). It might not be related with pdf-only A quick fix, if you confirm it only happens with pdf-only is to always do the screenshot before the pdf.
Yasuhiro Arakaki
04/13/2026, 7:30 AMpage.pdf() is called without a prior page.screenshot(). The screenshot appears to force the browser to fully paint the canvas before the PDF is generated.
I'll submit a PR with the quick fix — taking a screenshot before page.pdf() in the PDF-only path to align it with the IMAGE+PDF path.
Regarding animations: are ECharts animations already disabled in the minimal page context? If not, that could also be contributing to the instability.Javi
04/13/2026, 8:23 AMYasuhiro Arakaki
04/13/2026, 11:21 PMminimal check for disabling animations — they only check `isInDashboard`:
ts
// Current (these 3 chart types)
animation: !isInDashboard,
// Should be (matching Cartesian, Pie, Sankey)
animation: !(isInDashboard || minimal),
Should I include this fix in the PR as well, along with the screenshot-before-PDF fix for the PDF-only path?Javi
04/14/2026, 11:05 AMYasuhiro Arakaki
04/14/2026, 3:27 PMpage.pdf() in the PDF-only path to force canvas painting
• #22010
◦ Disable ECharts animations in minimal mode for funnel, treemap, and gauge (same fix as #20987 for sankey)
On the second one — this is the third time this pattern has been missed for a chart type. Is there a good way to catch animation: !isInDashboard without minimal automatically? Something like a grep-based CI check or a unit test per config hook. Open to ideas.Javi
04/20/2026, 2:40 PM