rails 中使用fusionchart的图表导出功能

在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

大致的原理流程是:

  1. 在浏览器这端生成图表。
  2. 把图表的svg string 上传给export server
  3. export server 获取svg string 进行系统调用。通过调用linkscape 来把svg string 转成png,pdf,svg。 如果是要生成jpg,则通过imagemagick 来完成。
  4. 按照fusionchart中的配置内容,确定是保持在服务器,还是返回给浏览器,完成下载。

1.在mac Yosemite下安装

  1. 安装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
  2. 安装inkscape.

    • 安装 XQuartz
      brew install XQuartz
    • 安装inkscape
      brew install inkscape
    • 确认安装成功
      inkscape --version
  3. 配置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"
  4. 配置fusionchart的图表内容。使得下载功能指向自己的private export server
    • 生成的fusionchart中有关的配置内容如下:
      exportEnabled: "1",
      exportShowMenuItem: "1",
      exportHandler: "/export_chart",
      exportFormats: "PNG=保存成PNG ",
      exportAtClient: "0",
      exportAction: "download",
      exportFileName: "紫微路停车到达5分钟曲线"

相关的含义参考官方文档:
http://www.fusioncharts.com/dev/usage-guide/interactivity/exporting-as-image-and-pdf/configuring-export-feature.html
注意其中的 exportHandler 就是一个指向private export server 的生成图片的url

你可能感兴趣的:(Rails,FusionCharts,eport)