最近做项目需要打印各种图表,目前项目用的lodop打印控件
ECharts一个纯 Javascript 的图表库,它提供了绘制各种图形的方法方法,几乎囊括了所有的二维图形,用起来也很是方便。还提供了图片下载的功能。但是在和lodop集成时候发现打印不出图表。于是就设想echarts自动生成图片的base64码渲染到IMG标签里,然后在用LODOP.ADD_PRINT_HTM打印。
代码如下:用到了echarts的 myChart.getImage() 该方法反会了一个图表的base64码
// 图片base64编码
var jlcgImgBase64;
// 基于准备好的dom,初始化echarts实例
onload = function(){
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts打印示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
animation: false,
series: [{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
jlcgImgBase64 = myChart.getDataURL();
//动态的渲染到打印html的标签上
document.getElementById('jlcg').setAttribute('src',jlcgImgBase64)
}
利用lodop 的LODOP.ADD_PRINT_HTM方法打印
最终效果如下