在fusionchart 下面。可以使用图表的导出功能。只要在生成的json对象中 加入 exportEnabled = ‘1’ 这个属性,就可以在界面上出现一个导出的按钮。
但是,缺省的是通过fusionchart的服务器进行svg转图片的处理,然后下载。在天朝的环境下,速度可想而知。
不过,体贴的fusionchart可以建立自己的private export server。并且支持php,java,asp.net 和 ruby on rails 。 我自己使用的是ruby 2.2.1 和 rails 4.2.2环境。所以下面就在这个环境下进行搭建。
由于开发环境是mac os 10.10.4 ,生产机是 centos 6.4 .所以搭建的方法有所不同,分别描述。
fusionchart相关文档可以查看
http://www.fusioncharts.com/dev/usage-guide/interactivity/exporting-as-image-and-pdf/setup-private-export-server-ruby-on-rails.html
大致的原理流程是:
- 在浏览器这端生成图表。
- 把图表的svg string 上传给export server
- export server 获取svg string 进行系统调用。通过调用linkscape 来把svg string 转成png,pdf,svg。 如果是要生成jpg,则通过imagemagick 来完成。
- 按照fusionchart中的配置内容,确定是保持在服务器,还是返回给浏览器,完成下载。
1.在mac Yosemite下安装
安装imagemagick
- 安装libpng ,使得imagemagick 支持生png
brew link --overwrite --dry-run libpng
- 安装imagemagick
brew install imagemagick
- 安装imagemagick 的ghostscript,以便支持字体
brew install ghostscript
- 使用imagemagick的 命令来确定是否安装成功,并且可以使用字体。如果下面的命令 显示出字体列表,则说明安装成功
convert -list font
- 用行命令来生成一个png图片,并且查看是否可以显示中文,通过-font 参数来指定所用的中文字体
convert -pointsize 18 -font ./STLITI.ttf label:中文 label_utf8.png
- 安装libpng ,使得imagemagick 支持生png
安装inkscape.
- 安装 XQuartz
brew install XQuartz
- 安装inkscape
brew install inkscape
- 确认安装成功
inkscape --version
- 安装 XQuartz
- 配置fusionchart
- 在项目的Gemfile里面增加一个gem,并且安装
gem 'fusioncharts_exporter'
$ bundle install
$ rails generate fusioncharts_exporter:install'
$ rails generate fusioncharts_exporter:install
会生成
config/fusioncharts_exporter.yml
tmp/fusioncharts/
这样的1个文件 和 一个目录 - 进行配置
修改过 config/fusioncharts_exporter.yml 文件。
Set inkscape_path inkscape的执行文件
Set imagemagick_path 指向ImageMagick 执行文件.
Set save_path as the location on the server where the image will be saved.
我的项目配置是:
inkscape_path: "/usr/local/bin/Inkscape"
imagemagick_path: "/usr/local/bin/ImageMagick"
save_path: "public/fusioncharts"
- 增加路由
在route.rb 文件里面增加
mount FusionchartsExporter::Engine, at: "export_chart"
- 在项目的Gemfile里面增加一个gem,并且安装
- 配置fusionchart的图表内容。使得下载功能指向自己的private export server
- 生成的fusionchart中有关的配置内容如下:
exportEnabled: "1",
exportShowMenuItem: "1",
exportHandler: "/export_chart",
exportFormats: "PNG=保存成PNG ",
exportAtClient: "0",
exportAction: "download",
exportFileName: "紫微路停车到达5分钟曲线"
- 生成的fusionchart中有关的配置内容如下:
相关的含义参考官方文档:
http://www.fusioncharts.com/dev/usage-guide/interactivity/exporting-as-image-and-pdf/configuring-export-feature.html
注意其中的 exportHandler 就是一个指向private export server 的生成图片的url