ruby-on-rails 样式表在Grover调试中呈现,但不在下载的PDF上

u4vypkhs  于 2023-10-21  发布在  Ruby
关注(0)|答案(2)|浏览(115)

我使用Grover来渲染和下载在我的应用程序中生成的文档的pdf副本,并且在应用css时遇到了麻烦。在grover的调试模式下(因此在Chromium中导出和渲染),CSS的渲染完全符合我的预期。然而,当我把它放在无头模式并下载为pdf时,似乎我的application.css没有被应用。

PDF正在使用以下方法生成:

def purchase_order_gen(the_purchase_order, request_host_with_port)
  puts "generating pdf"
  puts "Generating PDF for PO " + the_purchase_order.id.to_s
  puts "Host is " + request_host_with_port

  html = render_to_string({
                              partial: '/purchase_orders/display_purchase_order',
                              layout: '/layouts/pdf_layout.html.erb',
                              locals: { po: the_purchase_order }
                              })
  puts "html"
  ap html

  the_display_url = 'http://' + request_host_with_port
  grover = Grover.new(html, {format: 'A4' , display_url: the_display_url})
  pdf = grover.to_pdf
  puts "Back From Grover!"

  return pdf
end

我用下面的行引用css,放在我的布局的<head>中。

<%= stylesheet_link_tag '/assets/stylesheets/application.css'%>

如果要我猜的话,我会认为我搞砸了stylesheet_link_tag,调试版本能够从资产管道中拉取,而无头版本则不能。

xcitsw88

xcitsw881#

原来grover需要配置背景显示print_background: true。碰巧我只设置了backgrounds,然后意识到它不起作用,所以在我们的grover初始化器中将该参数设置为true就成功了。

dzhpxtsq

dzhpxtsq2#

谢谢@neanderslob这太棒了-我花了2个小时才弄明白到这里-它立即解决了它。
config/initializers/grover.rb

Grover.configure do |config|
  config.options = {
    print_background: true
  }
end

相关问题