downloadChartImage.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ChartRef as G2Chart } from '@berryv/g2-react';
  2. const getChartCanvas = (chart: G2Chart) => {
  3. if (!chart) return;
  4. const chartContainer = chart.getContainer();
  5. const canvasNode = chartContainer.getElementsByTagName('canvas')[0];
  6. return canvasNode;
  7. };
  8. /** 获得 g2 Chart 实例的 dataURL */
  9. function toDataURL(chart: G2Chart) {
  10. const canvasDom = getChartCanvas(chart);
  11. if (canvasDom) {
  12. const dataURL = canvasDom.toDataURL('image/png');
  13. return dataURL;
  14. }
  15. }
  16. /**
  17. * 图表图片导出
  18. * @param chart chart 实例
  19. * @param name 图片名称
  20. */
  21. export function downloadImage(chart: G2Chart, name: string = 'Chart') {
  22. const link = document.createElement('a');
  23. const filename = `${name}.png`;
  24. setTimeout(() => {
  25. const dataURL = toDataURL(chart);
  26. if (dataURL) {
  27. link.addEventListener('click', () => {
  28. link.download = filename;
  29. link.href = dataURL;
  30. });
  31. const e = document.createEvent('MouseEvents');
  32. e.initEvent('click', false, false);
  33. link.dispatchEvent(e);
  34. }
  35. }, 16);
  36. }