Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I render to the browser a PDF using PDFKit?

I have the following link_to path:

http://localhost:3000/letters/showpdf/3

I have the following custom action in my letters controller:

 def showpdf

 @letter = Letter.find(params[:id])
 @redcloth_letter = " <style type='text/css'>  </style>"

 @redcloth_letter = @redcloth_letter << RedCloth.new(@letter.body).to_html

 pdf = PDFKit.new(@redcloth_letter)
 pdf.stylesheets << "#{RAILS_ROOT}/public/stylesheets/compiled/pdf.css"

 send_data(pdf.to_pdf, :filename => "pdf.pdf")

 end

I currently get nothing returning to the browser.

EDIT: This is what I see in the ruby logs:

Processing LettersController#showpdf (for 127.0.0.1 at 2011-02-18 15:10:31) [GET]
  Parameters: {"action"=>"showpdf", "id"=>"3", "controller"=>"letters"}
  Letter Load (1.5ms)   SELECT * FROM "letters" WHERE ("letters"."id" = 3) 
Sending data pdf.pdf
Completed in 1917ms (View: 6, DB: 2) | 200 OK [http://localhost/letters/showpdf/3]
like image 434
Satchel Avatar asked Feb 13 '26 11:02

Satchel


1 Answers

This is what I use in my controller with PDFkit.

send_data @pdf, :filename => "whatever.pdf",
                :type => "application/pdf",
                :disposition  => "inline" # either "inline" or "attachment"

Hope this helps

like image 182
David Barlow Avatar answered Feb 15 '26 05:02

David Barlow