Rails 3 - команда wkhtmltopdf завершилась неудачно при использовании PDFKit для создания PDF-документов - PullRequest
5 голосов
/ 12 августа 2010

Я установил PDFKit в своем приложении на Rails 3, используя RVM (пришлось вручную скопировать двоичный файл wkhtmltopdf). Когда я пытаюсь отобразить PDF-версию страницы, я получаю эту ошибку:

RuntimeError in AgenciesController#show

command failed: ["lib/wkhtmltopdf/wkhtmltopdf", "--disable-smart-shrinking", "--page-size", "Letter", "--margin-top", "0.75in", "--margin-right", "0.75in", "--margin-bottom", "0.75in", "--margin-left", "0.75in", "--encoding", "UTF-8", "--quiet", "\n.......\n", "-"]

В моем приложении: rb:

    config.middleware.use "PDFKit::Middleware"
    PDFKit.configure do |config|
    config.wkhtmltopdf = 'lib/wkhtmltopdf/wkhtmltopdf' 

    end

А идеи, почему это происходит? как я могу это исправить?

В консоли я заметил это сообщение:

 (sometimes it will work just to ignore this error with --ignore-load-errors)

Где я могу активировать этот переключатель? wkhtmltopdf работает нормально в командной строке, я могу сделать что-то вроде "./wkhtmltopdf http://www.google.com google.pdf" и сгенерировать PDF.

Спасибо за вашу помощь,

Peter

Ответы [ 6 ]

5 голосов
/ 12 августа 2010

Судя по исходному коду, вы можете установить параметры в pdfkit.Я думаю, что будет работать следующее:

PDFKit.configure do |config|
  config.default_options[:ignore_load_errors] = true
end

(хотя я не проверял это)

4 голосов
/ 11 марта 2013

Я искал его в Google и нашел ответ в блоге.

Решение здесь:

Установка зависимостей

$sudo aptitude install openssl build-essential xorg libssl-dev

Для 64-битных ОС.одна из следующих команд:

$ sudo wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$ sudo tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2
$ sudo mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf 
$ sudo chmod +x /usr/local/bin/wkhtmltopdf

Наконец, перейдите в папку rails app/config/initializer, создайте новый файл pdfkit.rb и вставьте в него следующий код:

PDFKit.configure do |config|
   config.wkhtmltopdf = '/usr/local/bin/wkhtmltopdf' if Rails.env.production?
end

Вот и все.Теперь ваш файл PDF будет загружен.Также посетите для получения дополнительной информации: http://www.stormconsultancy.co.uk/blog/development/generating-pdfs-in-rails-with-pdfkit-and-deploying-to-a-server/

Спасибо.

2 голосов
/ 11 октября 2011

вы можете проверить этот плагин

1 голос
/ 02 января 2013

Я столкнулся с подобной проблемой на моем Ubuntu OS.Но затем переустановил wkhtmltopdf с помощью инструкции в https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF.

Загруженный двоичный файл из http://code.google.com/p/wkhtmltopdf/downloads/detail?name=wkhtmltopdf-0.9.9-static-i386.tar.bz2&can=2&q= и поместил его в каталог / usr / local / bin /, что решило проблему для меня.

1 голос
/ 21 сентября 2010

Я использовал этот хак.

config.wkhtmltopdf = `which wkhtmltopdf`.gsub(/\n/, '')

команда which возвращает новую строку в конце.

0 голосов
/ 22 апреля 2011

Поскольку у вас уже установлен wkhtmltopdf и он работает, возможно, стоит попробовать wicked_pdf. Это прекрасно работает в моем приложении Ruby 1.9 Rails 3. Это так же просто, но дает вам немного больше контроля над тем, что может быть отображено в формате PDF, если вы явно используете render :pdf => 'my_template', когда вы хотите PDF. Конечно, вы можете поместить это в блок responseds_to, если хотите.

ps Если мне неясно, wicked_pdf также использует wkhtmltopdf.

...