Как установить PDFKit? (Rails 3.2.1 и PDFKit 0.5.2)

Я пытаюсь использовать PDFKit.

Это выглядит довольно просто, поэтому я пытаюсь следить за кастом Ryan's Rails.

Поэтому я добавил драгоценный камень в свой GemFile и обновил свой application.rb с помощью:

config.middleware.use "PDFKit::Middleware"

После этого я установил wkhtmltopdf в Linux с помощью:

apt-get install wkhtmltopdf

И я убеждаюсь, что это работает:

[nicolas@Minto]%wkhtmltopdf www.google.com gogole.pdf
Loading page (1/2)
Printing pages (2/2)                                               
Done

Все выглядит хорошо, пока я не попытаюсь добавить .pdf на одну из своих страниц...

Сайт остается в состоянии загрузки навсегда. Когда я останавливаю сервер с помощью Ctrl - C в консоли, я получаю следующую ошибку:

RuntimeError (command failed: "/usr/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" "-" "-"):
  pdfkit (0.5.2) lib/pdfkit/pdfkit.rb:71:in `to_pdf'
  pdfkit (0.5.2) lib/pdfkit/middleware.rb:21:in `call'

Что я делаю неправильно?


person Nicolas Guillaume    schedule 18.03.2012    source источник
comment
Я думаю, вы используете Webrick в качестве веб-сервера HTTP. Можете ли вы попробовать использовать Thin?   -  person Vasiliy Ermolovich    schedule 18.03.2012
comment
@nash: Спасибо, что показали мне Thin (обычно я использую дворнягу, но я действительно использовал Webrick, позор мне :p). Во всяком случае, это делает то же самое с Thin :(   -  person Nicolas Guillaume    schedule 19.03.2012


Ответы (4)


Недавно я поигрался с PDFKit, заставил его работать в моем приложении rails и столкнулся с похожей проблемой.
Вам нужно сделать три шага:

  1. Вам нужно будет поместить gem "pdfkit" в свой GemFile.
  2. Поместите config.middleware.use PDFKit::Middleware в файл application.rb, который у вас уже есть.
  3. Попробуйте поместить следующий код в файл pdfkit.rb в папку 'config/initializers'.

    PDFKit.configure сделать |config|

    config.wkhtmltopdf = 'C:\software\utilities\wkhtmltopdf\wkhtmltopdf.exe' #Путь к вашему каталогу установки wkhtmltppdf

    config.root_url = "http://localhost" # Используйте, только если ваше внешнее имя хоста недоступно на сервере.

    конец

person Prashanth    schedule 18.03.2012
comment
Спасибо, я попробовал ваше решение, но мой путь уже был правильным! - person Nicolas Guillaume; 19.03.2012

Ok so,

Потратил несколько часов на гугление, но наконец нашел решение в другом вопросе о стеке: pdfkit неправильно отображается в rails 3.1

Спасибо за помощь.

person Nicolas Guillaume    schedule 18.03.2012

Я также следил за кастом Ryan's Rails.

PDFkit зависит от wkhtmltopdf.rb. Любая версия> 0.9.9 вызывала зависание процесса создания PDF непосредственно перед завершением, требуя Ctrl-C. Я использую OS X 10.6.8, а не Linux. Однако попробуйте:

wkhtmltopdf --version

Если он > 0.9.9, то откат до 0.9.9. Решил мою проблему. Мне потребовались часы, чтобы понять.

person Leo Ajc    schedule 07.08.2012

У нас есть связанная проблема: Формирование PDF зависает с использованием PDFKit и wkhtmotopdf

Цитирование решения из Beerlington:

Попробуйте удалить все теги включения javascript из вашего HTML и посмотрите, позволяет ли это хотя бы отображать PDF. Если это работает, то у вас по крайней мере есть отправная точка.

Я попробовал это, и это сработало для меня.

Я думаю, что это связано с такими активами, как javascript и таблицы стилей с относительным путем.

person Lucca Mordente    schedule 25.10.2012