相关文章
http://www.highcharts.com/articles/2-news/52-serverside-generated-charts#post-param
http://www.highcharts.com/docs/export-module/render-charts-serverside
http://www.peng8.net/2014/07/21/render-charts-serverside/
主要目的:不依赖于前端请求,定时自动化生成图表文件,并且这样做可以保持与web端图片一致(但静态图片缺少交互性)
具体操作:
1.必要的文件,见下图:
2.配置
highcharts-convert.js
如果需要生成地图,则需要在highmaps下配置地图js文件,如下图
版本问题需要注意,比如jq1.9.1要与路径下真正的jq对应,且此配置文件中写的资源文件都是相对路径
3.编写模板json文件,建议图表输出的时候通过复制模板文件,替换数据,这样子比较方便。
如下为样例json模板文件,真正生成的时候用真实的数据替换#datajson#即可
{
chart: {
height: 350,
width: 500,
plotBackgroundColor: null,
plotBorderWidth: 0,
plotShadow: false
},
credits: {
enabled: false
},
title: {
text: '本周报告',
align: 'center',
style: {
"fontSize": "25px",
"fontFamily": "microsoft yahei",
"color": "#9a9a9a"
},
verticalAlign: 'middle',
y: -25
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
borderWidth: 5,
dataLabels: {
enabled: true,
distance: -30,
style: {
fontWeight: 'bold',
color: 'white',
textShadow: '0px 1px 2px black'
},
format: '{y}'
},
cursor: 'pointer',
showInLegend: true
}
},
series: [
{
type: 'pie',
name: null,
innerSize: '58%',
data:#datajson#
}
]
}
4,.java执行,代码如下
Runtime rt = Runtime.getRuntime(); Process p = null; try { p = rt.exec("${phantomJSPath} ${convertJSPath} -infile ${testJSONPath} -outfile ${chartImg}"); } catch (Exception e) { System.out.println("Error my exec "); }
命令例子如:phantomjs.exe highcharts-convert.js -infile in.json -outfile out..png
注意:
如果是生成地图,需要加上-constr Map
路径都要用绝对路径
如果生成的图表中文乱码,可能是json文件编码的问题,所以在创建json文件时,需要执行编码格式,一般为UTF-8即可