Я использую PDFKit (который использует wkhtmltopdf) в попытке сделать представление в формате pdf в приложении Rails 3.
PDFKit отображает с Errno::EPIPE (Broken pipe)
, указывающим на send_data(kit.to_pdf, :filename => "generated.pdf", :type => 'application/pdf')
в моем действии show show:
# 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'
...
Я знаю, что wkhtmltopdf не является источником этой ошибки, поскольку wkhtmltopdf public/404.html tmp/404.pdf
из Rails.root
работает как ожидалось.
Я использую пример из jonathanspies.com после того, как использование промежуточного программного обеспечения завершилось неудачно таким же образом.
# config/application.rb
require 'pdfkit'
config.middleware.use PDFKit::Middleware
Попробовав его в новом приложении Rails 3, я получаю следующую ошибку:
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" "-" "-"
Выполняется запуск команды вручную, а экран использования отображается, глядя на параметр --quiet. Легко видеть, что он должен быть --quit
Измените /lib/pdfkit/pdfkit.rb:35 на следующее, и все работает так, как ожидалось (с промежуточным программным обеспечением тоже).
args << '--quit'
Итак, еще раз, я решил свою проблему в процессе написания вопроса, чтобы получить помощь (всегда платит, чтобы включить детали). Я отправил запрос , который исправляет орфографическую ошибку (всегда глупая ошибка, которая остается незамеченной). Надеюсь, никто не возражает, что я отправляю в любом случае.