样式表在 grover 调试中呈现,但不在下载的 pdf 上呈现

问题描述 投票:0回答:2

我正在使用 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
并且调试版本能够从资产管道中提取,而无头版本则不能。

css ruby-on-rails ruby-on-rails-5 asset-pipeline
2个回答
1
投票

事实证明,grover 需要配置才能显示背景

print_background: true
。碰巧的是,我在意识到它不起作用之前只设置了背景,因此在 grover 初始值设定项中将该参数设置为
true
就成功了。


0
投票

谢谢@neanderslob 这太棒了 - 我花了 2 个小时才找到这里 - 它立即解决了问题。

config/初始化程序/grover.rb

Grover.configure do |config|
  config.options = {
    print_background: true
  }
end
© www.soinside.com 2019 - 2024. All rights reserved.