Почему PDFKit / wkhtmltopdf зависает, но отображает PDF, как и ожидалось, когда приложение Rails убито?
После прочтения мне показалось, чтоПрон вне иwkhtmltopdf находится в. Также кажется, чтоPDFKit а такжеwicked_pdf Драгоценные камни для Rails - это новое круто. Так что я нашел скринкастРайан накак использовать PDFKit, Я установил все, протестировал wkhtmltopdf на CLI без проблем, поиграл с настройками Rails, чтобы запустить несколько процессов, чтобы конвейер ресурсов работал, и все выглядело хорошо, за исключением того, что я все еще застрял в самом конце процесса (фактически получая PDF ответ с сервера).
QuestionWhen I request a .pdf
version of my view (I'm using the PDFKit Middleware option) my browser just sits there waiting for a response, but as soon as I kill the Rails process the PDF I expected to get only then pops up in my browser window. What gives?
wkhtmltopdf -V
it says 0.10.0_rc2)
qt: 4.8.2
What I've Done
used the PDFKit middleware by loading config.middleware.use "PDFKit::Middleware"
in my application.rb
file.
included gem 'pdfkit'
in my Gemfile and installed it with Bundler
set the .pdf
mime-type in my mime_types.rb
initializer with Mime::Type.register_alias "application/pdf", :pdf
added config.threadsafe!
to config/environments/development.rb
for multiple threads so asset pipeline doesn't conflict with PDF engine
tested wkhtmltopdf http://www.google.com google.pdf
and it generated a PDF of the Google homepage as expected
tried swapping PDFKit for wicked_pdf and encountered the same problem (hanging, but when Rails process is killed the PDF renders as expected)
What it Looks Like
Это обычная html-страница, отображаемая Rails (я размыл детали клиента):
Это вывод CLI Rails, когда я пытаюсь перейти кlocalhost:3000/some/path.pdf
, (приложение зависает в ожидании ответа):
Когда я наконец убью процесс Rails сctrl-c
PDF-файл наконец-то отображается в браузере, как я и ожидал (CSS и HTML отображаются правильно, поэтому ресурсы загружаются нормально):
Замена PDFKit на wicked_pdf и получение тех же результатов, похоже, заставляет меня думать, что проблема не в этих библиотеках, а в моей среде разработки. Но wkhtmltopdf отлично работает из командной строки, поэтому я думаю, что он и QT делают свою работу. Проблема должна быть в Rails. Может быть, я не настраиваю что-то правильно?
Plea for HelpКак мне определитьwhat именно проблема и как мне это исправить?
Я буду любить тебя, если ты сможешь мне помочь & lt; 3
UpdateЯ также пытался использовать альтернативный метод рендеринга PDF (с.to_pdf
) без промежуточного программного обеспечения следующим образом (делая это, я закомментировалconfig.middleware.use "PDFKit::Middleware"
от моегоapplication.rb
файл):
respond_to do |format|
format.html
format.pdf do
html = '<html><body>This is a test.</body></html>'
@pdf = PDFKit.new(html)
send_data @pdf.to_pdf,
:filename => 'whatever.pdf',
:type => 'application/pdf',
:disposition => 'attachment'
end
end