我正在使用 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/