рельсы 3 и PDFkit - PullRequest
       2

рельсы 3 и PDFkit

2 голосов
/ 23 сентября 2011

Я пытаюсь следовать этому учебнику .

Когда я добавляю .pdf к моему URL, это ничего не делает. Мой контроллер имеет:

respond_to :html, :pdf.

Мой тип пантомимы был объявлен.

Я тоже это пробовал:

respond_to do |format|
  format.html
  format.pdf {
    html = render_to_string(:layout => false , :action => "www.google.fr")
    kit = PDFKit.new(html)
    send_data(kit.to_pdf, :filename => "candidats.pdf", :type => 'application/pdf')
    return # to avoid double render call
  }
end

но это не работает, и я не получаю ошибок. Мой браузер продолжает ждать локального хоста, но ничего не происходит.

Итак, как мне попробовать использовать pdfkit?

изменить 2:

Согласно журналам моих рельсов, рельсы успешно отображают HTML. Я видел это в .log, rails не отправляет это ни webrick, ни моему браузеру. И мой браузер продолжает ждать и ждать, и ничего не происходит. У меня здесь только маленькие картинки.

edit 3: Мой сервер webrick, похоже, не может ответить на другой запрос, как только он начинает получать .pdf версию моего URL, есть идеи?

редактировать 4:

Я использую rails 3.1, wkhtmltopdf 0.9.5 (установщик Windows) и pdfkit 0.5.2

Ответы [ 2 ]

6 голосов
/ 28 сентября 2011

Я нашел лучший способ получить доступ к своим URL-адресам в формате PDF даже в режиме разработки.

# Enable threaded mode
config.threadsafe!

# Code is not reloaded between requests
#config.cache_classes = true

Config.cache_classes - комментарий, потому что у меня были некоторые проблемы, когда его не было. Таким образом, pdfkit прекрасно работает даже с рельсами 3.1. Но вы не перезагружаете код между запросами.

Это на самом деле не проблема, потому что вы сначала работаете над html и переключаете конфигурацию, чтобы проверить результат в формате pdf. Таким образом, вам не нужно беспокоиться о своей производственной базе данных.

3 голосов
/ 26 сентября 2011

Благодаря другому ответу о переполнении стека, я получил часть решения.

Это работает:

html = '<html><body>Toto de combats</body></html>'
@pdf = PDFKit.new(html)

send_data @pdf.to_pdf, :filename => "whatever.pdf",
                  :type => "application/pdf",
                  :disposition  => "attachement"

Вы можете заменить attachement на inline,, так что PDF отображается в вашемbrowser.

В ответе о переполнении стека, о котором я говорил (ссылка не помню), .to_pdf отсутствовал, но является обязательным.В противном случае программа чтения PDF не распознает ее.

Я пытаюсь получить эту работу с помощью URL-адреса .pdf.

Редактировать 3:

Моя проблема с URL-адресами .pdfрешеноизвестная проблема с рельсами 3.1, но Google не смог их найти.

объяснение: объяснение

Обходной путь (еще не пробовал). 1024 * Обойти *

...