2011-01-22 53 views
4

有誰知道PDF編寫器很容易,而且Rails 3可以很好地工作嗎?如果有的話可以有人指向我,並指導如何配置它與Rails 3一起工作?Pdf Writer for Rails 3

回答

2

主要有兩種方法可以在Rails中執行pdf。

要麼你從頭開始構建它,要麼使用某些東西來從html生成pdf。第二個比較容易,但如果你想要把PDF放在pdf中更復雜,可能還不夠。

如果你想完全控制你的pdf,你必須從頭開始構建它。爲此,請使用prawnprawnto之間的組合。

對於第二個選項,這更容易,您可以使用PDFKit,它使用wkhtmltopdf直接從html頁面生成pdf。我建議從這個開始,看看它是否適合你的目的;那麼,如果你認爲你需要更多的控制,這還不夠,請使用prawn。

2

對於那些像我以前一樣的人來說,在這裏尋找使PDF :: Writer在rails 3應用程序中工作的方式,可能會遷移現有的Rails 2.x應用程序,我終於實現了pdf-writer,版本1.1.8,在rails 3.2應用程序中工作。

的Gemfile

gem 'pdf-writer' 

我有這樣的配置/初始化/ 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}!!" 

!!!!!請注意:這不是當前的最佳實踐的方式來呈現PDF Rails中!!!!!!改用PDFKit或Prawn !!!!!