Highcharts 是一个用纯JavaScript编写的一个图表库。能够很简单便捷的在web网站或是web应用程序添加有交互性的图表。所以Highcharts图表的出现必然有强大的前端浏览器做为其强大的支撑。
但是问题来了,如果要单纯的依赖后台生成图表呢?此时必须要依赖phantomjs。PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准:DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS 可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。可以这么理解PhantomJS 就是存在于后端的一个浏览器。
因为项目是部署在Linux下,所以当初写测试Demo的时候是在window下进行了,其实无论是在哪个系统下,区别是真的不大哟.可以去PhantomJS 官网上下载相应的文件http://phantomjs.org/download.html。下载下来安装一下就可以了,我记得windows下直接可以用,Linux下需要安装。
对了,除了highchart必须用的JS文件,还有一个非常重要的JS的文件叫做highchart-convert.js,这个文件现在在网上很难找,当时是找了一天啊。下图是所需文件目录:
以下是chart.json定义的是highchart生成图表的模板文件,经常玩highchart的一看就知道是什么了。
{chart:{type:'spline'},credits:{enabled:false},title:{text:'',x:0},xAxis:{tickInterval:256,title:{text:'Wavelength(nm)'},categories},yAxis:{title:{text:'QE Percentage'},plotLines:[{value:0,width:1,color:'#808080'}]},tooltip:{valueSuffix:''},legend:{layout:'vertical',align:'right',verticalAlign:'middle',borderWidth: 0},series:[{name:'point',data}]};
phantomjs是Linux下使用的,phantomjs.exe是windows下使用的。总的来说两个系统不同的地方就是执行的命令有那么一点点不一样。windows比如:
Runtime rt = Runtime.getRuntime();
// phantomjs.exe的路径
String phantomjsExePath = "phantomjsExePath ";
// highcharts-convert.js的路径
String hConvertPath = "hConvertPath";
// 你定义的highchart模板文件的路径
String chartJsonPath = "chartJsonPath";
// 图片存放路径
String savePath = "savaPath";
// 执行命令
rt.exec("phantomjsExePath hConvertPath -infile chartJsonPath outfile savePath");
那么Linux下只用把phantomjs.exe的路径替换成phantomjs的路径就可以了。