使用ruby on rails的PDF文件中的多线图

时间:2013-06-05 07:14:29

标签: ruby-on-rails ruby-on-rails-3

我想在我的应用程序中提供导出PDF文件的导出选项,它应该包含多行图。我怎样才能在轨道上的红宝石中做到这一点。

2 个答案:

答案 0 :(得分:1)

这取决于您的情况,以及您希望以何种方式呈现PDF的内容(如果有)。一些现有选项是:

  • PDFKit,可以根据您现有的HTML文档创建PDF
  • Prawn,这是一个用于创建PDF的轻量级Ruby API

某些选项(如上面的PDFKit以及Wicked PDF)将依赖于wkhtmltopdf之类的外部工具将现有HTML页面呈现为PDF,而其他选项(如Prawn)则更具Ruby原生性,所以这取决于你的情况你应该在你的申请中采取哪种方式。

至于您提到的图表,如果您已将其呈现为图像文件,则最简单的方法是使用HTML-to-PDF生成选项之一,但如果您想要将图表呈现为自定义在PDF上下文中并没有将它作为一个独立的图像,像Prawn这样的东西可能是最好的。

答案 1 :(得分:0)

在我的申请中,我使用Highcharts

我发现使用2个宝石的组合渲染charts to pdf非常成功:

wicked_pdf - https://github.com/mileszs/wicked_pdf

wkhtmltopdf-binary - https://github.com/zakird/wkhtmltopdf_binary_gem

第二个是wicked_pdf的二进制依赖。

它可以以pdf格式呈现您的rails视图。

修改

我也使用过PDFkit,下面是我的控制器方法代码:

点击"Download PDF"按钮:

      if params[:commit]=="Download PDF"
        html = render_to_string(:layout => false , :action => "controller_name/pdf_chart_erb_file.html.erb")
        kit = PDFKit.new(html)
        kit.stylesheets << "#{Rails.root}/app/assets/stylesheets/application.css"
        send_data(kit.to_pdf, :filename => "my_chart.pdf", :type => 'application/pdf', :disposition => 'inline')
        file = kit.to_file("#{Rails.root}/app/exe.pdf")
      end

您可以在graphs中使用或呈现pdf_chart_erb_file.html.erb,只需按照上面给出的代码转换所有html file to PDF文件。