PDFKit gives me 406 and creates an empty pdf

  • Rails 3
  • PDFKit 0.5.0
  • windows 7 with wkhtmltopdf installed

    #/config/initializers/pdfkit.rb require 'rbconfig' PDFKit.configure do |config| if !((Config::CONFIG['host_os'] =~ /mswin|mingw/).nil?)#if windows environment this is the path to wkhtmltopdf otherwise use gem binaries config.wkhtmltopdf = "C:/Program\ Files\ (x86)/wkhtmltopdf/wkhtmltopdf.exe" end end #show action I am working with def show @work_order = WorkOrder.find_by_id(params[:id]) respond_to do |format| format.pdf #pdfkit handles this format.html { render :partial => "show" } if request.xhr? end end #config/initializers/mime_types.rb Mime::Type.register "application/pdf", :pdf 

And with all this, I get an empty Pdf sent to the browser, and the log output says it

 Started GET "/work_orders/6.pdf" for 127.0.0.1 at 2011-05-17 15:51:31 -0400 Processing by WorkOrdersController#show as HTML Parameters: {"id"=>"6"} User Load (3.0ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` = 1) LIMIT 1 SQL (6.0ms) describe `roles_users` Role Load (3.0ms) SELECT `roles`.* FROM `roles` WHERE (`roles`.`id` = 980190962) LIMIT 1 WorkOrder Load (4.0ms) SELECT `work_orders`.* FROM `work_orders` WHERE (`work_orders`.`id` = 6) LIMIT 1 Completed 406 Not Acceptable in 265ms 

I hope you help me.

EDIT: I removed everything from the show action only

 def show @work_order = WorkOrder.find_by_id(params[:id]) end 

and now I get 200, but the page still makes it blank

 Started GET "/work_orders/6.pdf" for 127.0.0.1 at 2011-05-17 17:15:26 -0400 Processing by WorkOrdersController#show as HTML Parameters: {"id"=>"6"} User Load (19.0ms) SELECT `users`.* FROM `users` WHERE (`users`.`id` = 1) LIMIT 1 SQL (34.0ms) describe `roles_users` Role Load (17.0ms) SELECT `roles`.* FROM `roles` WHERE (`roles`.`id` = 980190962) LIMIT 1 WorkOrder Load (9.0ms) SELECT `work_orders`.* FROM `work_orders` WHERE (`work_orders`.`id` = 6) LIMIT 1 Rendered work_orders/show.html.erb within layouts/application (10.0ms) Completed 200 OK in 741ms (Views: 58.0ms | ActiveRecord: 79.0ms) 

EDIT2: I displayed without a layout now, and the page is no longer empty, but the characters are all excited

+4
source share
1 answer

If you want PDFKit to process everything automatically whenever the URL ends in .pdf , you also need to configure PDFKit middleware .

Source: https://github.com/jdpace/PDFKit

Middleware

PDFKit comes with middleware that allows users to get a PDF representation of any page on your site by adding .pdf to the URL. Middleware Setup

Rails Applications

 # in application.rb(Rails3) or environment.rb(Rails2) require 'pdfkit' config.middleware.use PDFKit::Middleware 

With PDFKit Options

 # options will be passed to PDFKit.new config.middleware.use PDFKit::Middleware, :print_media_type => true 
+1
source

All Articles