pdfkit неправильно рендерится в рельсах 3.1 - PullRequest
3 голосов
/ 05 ноября 2011

Я следовал следующему railscast о добавлении pdfkit в приложение, и у меня возникли некоторые проблемы с генерацией PDF-файлов. Вот следующие вещи, которые я сделал:

Я скачал wkhtmltopdf через менеджер пакетов homebrew

brew install wkhtmltopdf

Затем я добавил гем pdfkit в свой гемфайл и выполнил команду установки пакета. Я добавил следующее в мой файл config / application.rb

require 'pdfkit'
...
config.middleware.use PDFKit::Middleware, :print_media_type => true

Затем я изменил файл макета приложения, включив в него все типы таблиц стилей.

Если я запускаю промежуточное программное обеспечение rake, команда работает, и я вижу промежуточное программное обеспечение pdfkit

Когда я пытаюсь добавить pdf в конец моих маршрутов, приложение просто зависает, и мне приходится выходить из командной строки. Если я создаю ссылку на страницу, которую я хочу превратить в pdf, она изменяет всю разметку так, что она выглядит как поврежденный файл. (похоже, что вы открыли текстовый файл в текстовом процессоре или наоборот, я могу предоставить изображения, если это поможет). Если я пытаюсь внести изменения в CSS в моей таблице стилей, они не вступают в силу, когда я просматриваю их со ссылкой на pdf. Я предполагаю, что это как-то связано с новым конвейером активов в рельсах. Кто-нибудь еще сталкивался с этой проблемой?

1 Ответ

15 голосов
/ 05 ноября 2011

Таким образом, я был прав, предполагая, что моя ошибка как-то связана с конвейером ресурсов, после некоторых исследований похоже, что вам нужно создать новый инициализатор и добавить следующий код:

ActionController::Base.asset_host = Proc.new { |source, request|
  if request.env["REQUEST_PATH"].include? ".pdf"
    "file://#{Rails.root.join('public')}"
  else
    "#{request.protocol}#{request.host_with_port}"
  end
}
...