Estoy usando PDFKit (que usa wkhtmltopdf) en un intento de representar una vista como PDF dentro de una aplicación de Rails 3.PDFKit (wkhtmltopdf) Broken Pipe, OS X y Rails 3
PDFKit hace con Errno::EPIPE (Broken pipe)
apuntando a send_data(kit.to_pdf, :filename => "generated.pdf", :type => 'application/pdf')
en mi controlador de acción Mostrar:
# Controller
def show
respond_to do |format|
format.html { render }
format.pdf do
html = render_to_string(:layout => false , :action => "show.html.haml")
kit = PDFKit.new(html)
send_data(kit.to_pdf, :filename => "invoice.pdf", :type => 'application/pdf')
return # to avoid double render call
end
end
end
# Gemfile
...
gem 'pdfkit'
gem 'wkhtmltopdf'
...
Sé wkhtmltopdf no es el origen de este error como wkhtmltopdf public/404.html tmp/404.pdf
desde dentro Rails.root
funciona como se espera.
Estoy usando un example from jonathanspies.com después de haber fallado el middleware de la misma manera.
# config/application.rb
require 'pdfkit'
config.middleware.use PDFKit::Middleware
Después de probarlo en unos rieles frescas 3 aplicación, me sale el siguiente error:
command failed: "~/.rvm/gems/[email protected]/bin/wkhtmltopdf" "--page-size" "Letter" "--margin-right" "0.75in" "--margin-top" "0.75in" "--margin-bottom" "0.75in" "--encoding" "UTF-8" "--margin-left" "0.75in" "--quiet" "-" "-"
Al ejecutar el comando manualmente y se muestra el uso de la pantalla, mirando a la opción --quiet es fácil para ver que se supone que es --tit
Cambie /lib/pdfkit/pdfkit.rb:35 a lo siguiente y todo funciona como se espera (con middleware también).
args << '--quit'
Así, una vez más, he resuelto mi problema en el hecho de escribir la pregunta para obtener ayuda (siempre vale la pena incluir el detalle). Envié un pull request que corrige el error de ortografía (siempre un error tonto que pasa desapercibido). Espero que a nadie le importe publicar de todos modos.
¡Gracias por publicar esto! –
Es posible que desee publicar su solución como una respuesta y aceptarla. Solo para hacer que el SO sea feliz. :) –