这篇文章已经没有什么意义了,新版的HIghcharts提供Java图片导出解决方案,你需要做的就是下个Maven,bulid一个war就Ok了。---addedy on 2012-11-15
多说一句废话:我觉得这个功能其实对于大多数应用场景来说是多余的。
Highcharts是一个纯JSWeb图表绘制解决方案,它的功能之丰富,使用之简单可能是目前开源领域排名比较考前的优秀解决方案,它对个人使用是免费的。
它的默认版本也有图片导出功能,不过导出服务器是Highcharts官方服务器,我开发的过程试了一下,好像特别慢,图片导出服务用自己的对商业用户来说也有“便利之处”。
官方的下载页面推荐的Java图片导出方案是one2team/highcharts-serverside-export,这个方案是基于apache的batik包的,也有人直接采用batik包开发了图片导出Servlet代码 (这个代码没好像没有解决中文问题)。我是比较轴的那种人,本来one2team和上面这个代码核心是一样,我还是研究了一下怎么使用这个官方推荐的导出框架。说实话,官方推荐的这个框架不是很好用,它采用JDK6的泛型特性,项目的编译器兼容性必须提高到1.6,否则编译会出错。其次这个框架的主HighchartsExporter类的功能是转换以Json数据或者Java语言对象为数据源的导出功能,而Highchart导出服务器是要转换Highchart图表post的SVG数据。所以需要对One2Team的框架稍加改造才能使用。One2team的框架的OO设计比较复杂,我就不画具体的UML图了。只列出需要引进的几个类:
首先继承SVGRendererInternal抽象类,重写callJavascript方法,这个方法的实际作用是把其他格式的数据源转换成SVG数据,我不是很明白为什么SVG数据生成非要在Java里面调用JavaScript来做,难道为了和浏览器的高度一致?&#