关于在windows,利用java语言,phantomJS,highcharts实现服务器端自动生成图表

相关文章

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.必要的文件,见下图:

关于在windows,利用java语言,phantomJS,highcharts实现服务器端自动生成图表_第1张图片

2.配置

highcharts-convert.js

如果需要生成地图,则需要在highmaps下配置地图js文件,如下图

关于在windows,利用java语言,phantomJS,highcharts实现服务器端自动生成图表_第2张图片

版本问题需要注意,比如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}: {point.percentage:.1f}%'
  },
  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即可

你可能感兴趣的:(highcharts)