canvas - 在页面上将 Highcharts Canvas 渲染为 PNG

标签 canvas png render highcharts

我正在使用 HighCharts 库生成一些动态图表。但是,我想将 HighCharts Canvas 元素渲染为 PNG 图像,以便用户可以将图表复制并粘贴到电子邮件等中,而无需使用导出功能。

具体来说,我正在尝试创建一个包含图表的 HTML 电子邮件模板,并希望用户能够选择全部 > 复制/粘贴到他们的电子邮件客户端中,而不是复制/粘贴、导出图像,然后查找一种将其插入电子邮件的方法。

我发现了这个:Capture HTML Canvas as gif/jpg/png/pdf? ,但代码似乎没有将图像渲染到文档中。

最佳答案

Here's a hack如果您决心使用 HighCharts。它使用 canvg将 SVG 解析为 Canvas ,然后将 Canvas 转换为 PNG。

chart = new Highcharts.Chart({
    
    chart: {
        renderTo: 'container'
    },
    
    title: {
        text: ''
    },
    
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    
    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
    }],
    
    navigation: {
        buttonOptions: {
            align: 'center'
        }
    }
});

canvg(document.getElementById('canvas'), chart.getSVG())
    
var canvas = document.getElementById("canvas");
var img = canvas.toDataURL("image/png");

document.write('<img src="'+img+'"/>');

关于canvas - 在页面上将 Highcharts Canvas 渲染为 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995177/

相关文章:

javascript - HTML5 Canvas - 在不转换上下文的情况下相对于对象的中心进行缩放

javascript - EaselJS 通过事件传递参数

javascript - Canvas 动画显示所有先前的帧

flash - "Export Movie"是否可以在 Flash CS4 中作为带有 ActionScript 动画的电影的 PNG 序列?

html - 是否可以在静态 html5 页面中呈现部分内容

java - 使用 "id"而不是 "android:id"会导致 NullPointerException

linux - 如何基于 .png 文件创建像素图?

javascript - 如何在网站上使用 svg 元素制作 block 的屏幕截图?

r - 开发sliderInput的最小值/最大值的 react 性变化

javascript - 为什么useSelector里面的选择器会运行两次?