2011-01-22 5 views
4

누구나 쉽게 Rails 3에서 잘 작동하는 PDF 작성기를 알고 있습니까? 그렇다면 누군가가 나를 가리켜 레일스 3에서 작동하도록 구성하는 방법을 설명 할 수 있습니까?PDF Writer for Rails 3

답변

2

레일즈에서 pdf를 수행하는 데 주로 두 가지 방법이 있습니다.

처음부터 다시 만들거나 HTML에서 pdf를 생성하는 방법을 사용하십시오. 두 번째 것은 더 쉽지만 pdf에 넣으려고하는 것이 더 복잡하면 충분하지 않을 수 있습니다.

pdf를 완벽하게 제어하려면 처음부터 다시 빌드해야합니다. 이를 위해서는 prawnprawnto 사이의 조합을 사용하십시오.

더 쉬운 두 번째 옵션 인 PDFKit을 사용하면 wkhtmltopdf를 사용하여 HTML 페이지에서 바로 PDF를 생성 할 수 있습니다. 나는 이것으로 시작해서 그것이 당신의 목적에 맞는 지보기를 권합니다. 그렇다면, 더 많은 통제가 필요하다고 생각하면 충분하지 않습니다. 새우를 사용하십시오.

2

필자는 저와 같이 몇 시간 전에 PDF : Writer가 레일스 3 응용 프로그램에서 작업 할 수있는 방법을 찾고 있습니다. 아마도 기존 레일스를 마이그레이션 할 것입니다. 2.x 응용 프로그램에서 필자는 pdf-writer 1.1.8 버전을 레일 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를 렌더링하는 현재의 모범 사례 방법이 아니다 !!!!!! 대신 PDFKit 또는 새우를 사용하십시오 !!!!!