【摘要】
Echarts,江湖人称一个纯 Javascript 的图表库,图形种类星罗棋布且个个颜值爆表,可以轻松驾驭 PC 和移动设备,与绝大部分浏览器都可称兄道弟,而且已然众多拥趸,还有不少报表对它采取了嫁接技术。
这么棒的图标库如何能在报表工具里导出和打印呢?Echarts 图形是由 Javascript 亲自在前端网页上绘制的,需要从浏览器中截取图形才能导出和打印,而报表工具的导出功能是在后台实现的。所以这就有一定难度了,快去乾学院看个究竟:如何才能导出和打印 Echarts 图形?!
地球人都知道,报表工具一般都有导出和打印的功能,不仅可以将图形在页面上显示,还可以导出到 WORD、PDF 等文件中提高逼格,或者直接打印出来以供参考。So,每个 baby 都希望被集成的 Echarts 图形也可以,也可以和报表工具本身的那些美腻图形一样被导出打印。
但是,没那么简单!Echarts 图形是由 Javascript 亲自在前端网页上绘制的,需要从浏览器中截取图形才能导出和打印,而报表工具的导出功能是在后台实现的。噢?这就麻烦啦,还需要把浏览器画出来的图形取下来再啃吃啃吃传递给后台服务器。而且,万一报表有很多页呢,万一页面上不全部显示呢,那导出时还没呈现的图就无法截取了;打印也是类似地,一般报表工具的打印是用 Applet、FLASH 或导出成 PDF 等方式,都不 care 浏览器的,没法执行 Javascript 画图命令的。
那么问题来了,到底怎么才能实现 Echarts 图形的导出与打印呢?
当当当当,润乾报表来了,用新版本直接搞定,而且还是那个白菜价哈,10000 一套!
实现方案是这样滴:
第一步:部署环境
1,在服务器端安装 SlimerJS 和 Firefox。
SlimerJS 是服务器端的 JavaScriptAPI 工具。也就是没有界面的可编程操作的浏览器。这样,润乾报表就可以用 Javascript脚本操纵网页,实现对页面图形的、网络监控等一系列操作了。
由于 SlimerJS 基于火狐的 Gecko 内核,因此使用 SlimerJS 时还需要安装与它匹配的 FireFox 浏览器版本。然后在报表服务器端可以利用 SlimerJS 返回的 API 程序,把网页中画出的 Echarts 统计图转换成一张图片,然后加载到报表单元格里进行打印、导出。
目前 SlimerJS 只能支持 Firefox 38-52 或者更低版本,所以不要下载安装 Firefox 最新版本。
SlimerJS 已经被加入润乾报表安装包中,放在润乾报表【安装根目录】\report\web\webapps\demo\raqsoft\slimerjs-0.10.3.zip;
也可以从 SlimerJS 官方网站https://slimerjs.org/download.html下载。
2,添加环境变量,设置变量名为 SLIMERJSLAUNCHER,变量值为 firefox 的安装路径。
3,WEB 应用配置
在 WEB-INF/raqsoftConfig.xml 中增加了两项配置。
// slimerjsDir 配置SlimerJS的安装目录。未配置此项,应用就不具备打印和导出Echarts的功能
<property name="slimerjsDir" value="e:\\\\\slimerjs-0.10.3"></property>
<property name="echartsJSUrlPrefix" value="http://localhost:6868/demo/raqsoft"></property>
// slimerjsDir 配置SlimerJS的安装目录。未配置此项,应用就不具备打印和导出Echarts的功能
<property name="slimerjsDir" value="e:\\\slimerjs-0.10.3"></property>
<property name="echartsJSUrlPrefix" value="http://localhost:6868/demo/raqsoft"></property>
第二步:制作包含 Echarts 图形的报表
第三步:导出与打印
现在点击报表呈现界面上方的菜单栏按钮就可以进行导出和打印操作了。
导出:润乾报表可将带有统计图的报表文件输出为完全不失真的 Excel 文件、PDF 文件、WORD 文件。
打印:润乾报表可将带有统计图的报表文件进行 Applet 打印、Flash 打印、PDF 打印。
明白人都看出来了吧,这个办法也适用于其他类型的 Javascript 图形,润乾报表目前已集成了多种第三方开源图形包,包括:echarts、chart.js、D3 等等。导出与打印的使用方法和上述的 Echarts 图形是一样一样地,在下图所示的 JavaScript 代码区域中直接写入所使用的图表脚本即可。
嗯,就这么简单。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。