Wicked_pdf样式表不适用于Heroku

时间:2013-12-11 17:04:18

标签: css ruby-on-rails pdf heroku wicked-pdf

我有一个Rails应用程序,我使用wicked_pdf生成PDF文件。这一切都很好并在本地工作,但是当推送到heroku时,PDF会渲染,但不会应用样式表。

特别是对于PDF渲染,我有一个CSS文件:app/assets/stylesheets/pdf.css.scss。并在form.pdf.haml中加载样式表,如下所示:

  !!!
  %html{lang: "en", "xml:lang" => "en", xmlns: "http://www.w3.org/1999/xhtml"}
    %head
      %meta{content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
      = wicked_pdf_stylesheet_link_tag "pdf"

如上所述,它在本地运行良好,但当推送到heroku时,我收到此错误:

ActionView::Template::Error (No such file or directory - /app/public/pdf.css)

我需要做些什么才能在heroku上工作?

编辑:我找到了这个Gihub repo https://github.com/jordan-brough/heroku-pdf,这是一个在heroku上使用wicked_pdf的示例应用程序。在请求PDF时,通过调整environment.rbpublic文件夹提供css文件真的很有帮助。

3 个答案:

答案 0 :(得分:6)

我有类似的问题,我花了一段时间才解决。我最终使用了wkhtmltopdf-heroku gem和以下设置,除了正确处理调试选项外,还可以在本地和heroku上运行:

控制器中:

respond_to do |format|
  format.html
  format.pdf do
    render pdf: @profile.name + Date.today.to_s(:number),
           background: true,
           encoding: 'utf8',
           :show_as_html => params[:debug].present?
  end
end

show.pdf.erb

<% if params[:debug].present? %>
  <%= stylesheet_link_tag 'documents' %>
<% else %>
  <%= wicked_pdf_stylesheet_link_tag 'documents' %>
<% end %>
... rest of view ...

config / environments / production.rb

config.assets.precompile += ['documents.css.scss.erb']

config / initializers / assets.rb

Rails.application.config.assets.precompile += %w( documents.css )

希望这会对某人有所帮助。

答案 1 :(得分:0)

我尝试了this解决方案,wicked_pdf正常工作。但是评论:

  

“激活运行时编译不是解决方案,因为   性能打击我们采取“@David Tuite

并在this评论中找到non-stupid-digest-assets gem的答案,并且效果很好。

答案 2 :(得分:-1)

wkhtmltopdf二进制文件有一个GEM可以在heroku上运行,而无需在自己的存储库中安装任何二进制文件。它还包含用于开发的OSX(darwin)二进制文件。它适用于PDFKit,也可能与WickedPDF一起使用

https://github.com/bradphelan/wkhtmltopdf-heroku

  or in your Gemfile as
    gem "wkhtmltopdf-heroku"