Rails PDFKit command failed
I'm trying to use PDFKit as middleware in a rails 3 app.
I can use wkhtmltopdf from the command line just fine, but my app keeps throwing me this error
command failed: "/Users/bobby/.rvm/gems/ruby-1.9.2-p0/bin/wkhtmltopdf" "--page-size" "Letter" "--margin-top" "0.75in" "--margin-right" "0.75in" "--margin-bottom" "0.75in" "--margin-left" "0.75in" "--encoding" "UTF-8" "--print-media-type" "--quiet" "-" "-"
If i run this in terminal, it waits for my input, so I type some HTML, then press Ctrl-d and it spits what appears to be some PDF... but no luck in rails.
Here's what I have:
application.rb
require File.expand_path('../boot', __FILE__)
require 'rails/all'
require 'pdfkit'
Bundler.require(:default, Rails.env) if defined?(Bundler)
module Mpr
class Application < Rails::Application
YEARS_ARRAY = (2006..2012).map {|y| [y,y]}.unshift(["Year",nil])
MONTHS_ARRAY = (1..12).map{|m| [ Date::MONTHNAMES[m], m]}.unshift(["All months",nil])
开发者_开发百科 config.middleware.use "PDFKit::Middleware", :print_media_type => true
PDFKit.configure do |config|
config.wkhtmltopdf = '/Users/bobby/.rvm/gems/ruby-1.9.2-p0/bin/wkhtmltopdf'
end
end
end
in my controller (first line)
respond_to :html, :pdf
I think I've gone through all threads on SO, Github and Google, but no luck.
Can anyone help or point me in the right direction?
thanks, P.
Run and copy the path
which wkhtmltopdf
Create config/initializers/pdfkit.rb
:
PDFKit.configure do |config|
config.wkhtmltopdf = '/path/to/wkhtmltopdf'
end
Someone solved the problem and kindly posted their solution.
The wkhtmltopdf
that comes as a gem is quite old. Uninstall this gem and try to the following wkhtmltopdf binary file. Download, unzip and move it to /usr/local/bin/
. It should help.
Why does the error start with
/Users/bobby/...yet your config starts with
/Users/pierrelapree/...
Edit:
Another difference between your code and the example in the README: https://github.com/pdfkit/PDFKit is that they show config.middleware.use
taking a class or module argument, not a string.
Try changing this
config.middleware.use "PDFKit::Middleware", :print_media_type => true
to this
config.middleware.use PDFKit::Middleware, :print_media_type => true
精彩评论