Pdf Writer for Rails 3

时间:2011-01-22 18:44:09

标签: ruby-on-rails pdf gem

有没有人知道PDF编写器很容易并且适用于Rails 3?如果是这样,有人可以指向我,并指示如何配置它以使用Rails 3?

5 个答案:

答案 0 :(得分:2)

在Rails中主要有两种方法可以做pdf。

要么从头开始构建它,要么使用某些东西从html生成pdf。第二个更容易但如果你想要放在pdf中的内容更复杂,可能还不够。

如果您想要完全控制pdf,则必须从头开始构建它。为此,请使用prawnprawnto之间的组合。

对于更容易的第二个选项,您可以使用PDFKit,它使用wkhtmltopdf直接从html页面生成pdf。我建议从这个开始,看看它是否适合你的目的;那么,如果你认为你需要更多控制而这还不够,请使用prawn。

答案 1 :(得分:2)

对于那些和我一样的人来到这里寻找使PDF :: Writer在rails 3应用程序中工作的方法,也许迁移现有的Rails 2.x应用程序,我终于实现了pdf-writer ,版本1.1.8,在rails 3.2应用程序中工作。

Gemfile

gem 'pdf-writer'

我在config / initializers / pdfwriter_template.rb

中有这个
module ActionView
  module Template::Handlers
    class PDFWriter
      def call(template)
        require_engine 
        "pdf = ::PDF::Writer.new( :paper => 'A4' );" +
        "pdf.compressed = true if Rails.env.to_s == 'production';" +
        template.source + 
        ";pdf.render"
      end

      protected
      def require_engine
        @required ||= begin
          require 'pdf/writer'
          require 'pdf/simpletable'

          true
        end
      end
    end
  end
end

ActiveSupport.on_load(:action_view) do
  ActionView::Template.register_template_handler :rpdf, ActionView::Template::Handlers::PDFWriter.new 
end

然后在控制器动作中,我可以编写类似的内容:

def pdf_test
  @record = Record.find(params[:id])

  fileout = render_to_string :layout=>false
  send_data(fileout, :type => "application/pdf", :filename => 'test_record.pdf')
end

拥有模板文件 pdf_test.rpdf

pdf.text "Hello from record number #{@record.number}!!"

!!!!!当心:这不是目前在Rails中呈现PDF的最佳实践方式!!!!!!请改用PDFKit或Prawn !!!!!

答案 2 :(得分:1)

我会推荐虾。请在此链接http://prawn.majesticseacreature.com/

上找到有关它的更多详细信息

答案 3 :(得分:1)

发布了一个在Rails中使用prawn呈现PDF的小宝石https://github.com/rtsinani/gambas

答案 4 :(得分:0)

我建议您查看Railscasts PDF episodes,那里有足够的资源。