中国标致汽车之家

注册

 

返回列表 12345678» / 21
发新话题 回复该主题

[技术] FusionCharts自动导出图片方法 [复制链接]

1#
发现每天访问这篇文章的还真不少,有必要改成技术论坛了,呵呵;
如果有问题,可以在下面跟帖,我会尽量帮着解决;

最近做项目,需要做一个根据模板自动生成各种报表的功能(word格式),模板上待替换的标签包括日期、各类数字、表格、统计图等;

因为项目中的柱状图、折线图什么的都是用FusionCharts做的,为了保持统一,这里也需要用FusionCharts生成图片,然后插入到word中;

做之前在网上搜索了一下,网上有提到FusionCharts生成图片或pdf的方法,但都是通过flash的右键来触发的,不符合自动化的需求;

于是,我自己研究了,现总结如下:

FusionCharts在v3.0.7支持了导出jpeg和png,在v3.1支持了导出pdf,下面是右键菜单的图片


而导出的方式也支持多种(老外写的东西就是好),支持服务器端导出(存到服务器硬盘或输出文件流)、客户端导出、批量导出;


我这里用到的是服务器导出的硬盘的方法,要想使用该方法,需要把xm的chartl修改如下:

  1. exportEnabled='1' exportHandler='test.aspx' exportAtClient='0' exportAction='save'
复制代码


其中exportHandler是指用何种方式处理导出结果,我这里指定的是一个.net的url路径,官方有对应类的下载,包括php,jsp,.net的


这样设置后,就可以点击右键导出了,如下图:




其中进度条的提示效果,都可以自己修改或隐藏;

接下来我要用js来触发右键导出的事件,由于FusionCharts是在swf加载完毕才能导出的,否则导出的图片就不完整了,因此这里要加一个判断,具体代码如下:
***** 该内容需会员回复才可浏览 *****
在导出完图片后,我们还需要得到图片的路径,好把它插入到word中;FusionCharts也同样提供了该回调方法exportCallback,再次调整xml,最终代码如下:
  1. <chart caption='Monthly Unit Sales' xAxisName='Month' yAxisName='Units' showValues='0' decimals='0' formatNumberScale='0' exportEnabled='1' exportShowMenuItem='1' exportAtClient='0' exportHandler='test.aspx' exportAction='save' exportCallback='FC_Exported'>
复制代码
然后再定义回调方法就ok了,
***** 该内容需会员回复才可浏览 *****
这样基本的功能就实现了,为了实现自动,需要再在页面加一个定时器调用ExportMyChart();
后记:由于word中图片的自动插入过程是不需要给用户看FusionCharts生成的swf的,所以需要把它放一个用户看不到的div里,但是div不能用display:none;因为不可见的元素,是无法调用对应方法的
分享 转发
TOP
2#

erhrhe
TOP
3#

dsgsdg
TOP
4#

急需。。。。。。。。。
TOP
5#

dddddddddddddddddddddddddddddddddddddddddddddddddddd
TOP
6#

啥子好办法   瞧瞧。。。。
TOP
7#

看看
TOP
8#

急需呀,研究一下
TOP
9#

学习学习
TOP
10#

好东东,学习一下
TOP
发新话题 回复该主题