Pregunta

Estoy tratando de utilizar PDFKit como middleware en una aplicación Rails 3.

Me puede utilizar wkhtmltopdf desde la línea de comandos muy bien, pero mi aplicación me mantiene lanzar este 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" "-" "-"

Si corro en este terminal, que espera a mi entrada, por lo escribo algo de HTML, a continuación, pulse Ctrl-D y escupe lo que parece ser un poco de PDF ... pero no hubo suerte en los carriles.

Esto es lo que tengo:

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

en mi controlador (primera línea)

respond_to :html, :pdf

Creo que he pasado por todas las discusiones sobre SO, Github y Google, pero no hubo suerte.

¿Alguien puede ayudar o me punto en la dirección correcta?

gracias, P.

¿Fue útil?

Solución

Someone solved the problem and kindly posted their solution.

Otros consejos

Run and copy the path

which wkhtmltopdf

Create config/initializers/pdfkit.rb:

 PDFKit.configure do |config|
   config.wkhtmltopdf = '/path/to/wkhtmltopdf'
 end

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top