2015-04-07 2 views
3

Я пытаюсь использовать wicked pdf для рендеринга html-страницы в формате pdf.Rails 4 wicked pdf Выпуск

mime_types.rb

Mime::Type.register "application/pdf", :pdf 

метод контроллера

def invoice  
    respond_to do |format| 
     format.html 
     format.pdf do 
     render pdf: "invoice" 
     end 
    end 
end 

wicked_pdf.rb

:exe_path => '/usr/local/bin/wkhtmltopdf' 

invoice.pdf.erb

<div id="test_pdf"> 
    test data 
</div> 

Я добавил вышеуказанные коды и добавил в свой проект следующие драгоценные камни.

gem 'wicked_pdf' 
gem 'wkhtmltopdf-binary' 

Когда я пытаюсь сделать страницу, я получаю Template is missing ошибку. Если я переименую invoice.pdf.erb в invoice.html.erb, я могу обойти эту ошибку, но я буду получать html-страницу вместо pdf.

Пропустить что-нибудь?

ответ

3

Как указано в документе wicked_pdf, вы можете использовать его следующим образом. Его объяснение. Не забудьте создать «PDFs» Каталог

# or from your controller, using views & templates and all wicked_pdf options as normal 
    pdf = render_to_string pdf: "some_file_name", template: "templates/pdf.html.erb", encoding: "UTF-8" 

# then save to a file 
save_path = Rails.root.join('pdfs','filename.pdf') 
File.open(save_path, 'wb') do |file| 
    file << pdf 
end 

send_file save_path, :type=>'text/pdf 
+0

Большое спасибо archit. Это сработало .. –

+0

работал на меня тоже .. спасибо –

1

Этот код будет более чем достаточно, если вы просто хотите, чтобы сделать PDF:

def show 
    respond_to do |format| 
    format.html 
    format.pdf do 
     render pdf: 'file_name', 
      template: 'example/pdf_view.pdf.erb', 
      layout: 'layouts/application.pdf.erb' 
    end 
    end 
end 

Если вы хотите сохранить как PDF:

def save 
    pdf = WickedPdf.new.pdf_from_string(
         render_to_string(
          template: 'example/pdf_view.pdf.erb', 
          layout: 'layouts/application.pdf.erb')) 
    send_data(pdf, 
      filename: 'file_name.pdf', 
      type: 'application/pdf', 
      disposition: 'attachment') 
end 
Смежные вопросы