我有一个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.rb
从public
文件夹提供css文件真的很有帮助。
答案 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"