开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜