【问题标题】:RAILS - Generate PDF from HTML with GROVERRAILS - 使用 GROVER 从 HTML 生成 PDF
【发布时间】:2021-05-16 07:01:23
【问题描述】:

我想使用 GROVER 从我的应用程序中将相同的 ERB/H​​TML 页面导出为 PDF。 它可以工作,但生成的 PDF 似乎缺少样式和格式,似乎没有处理任何 CSS。

这是我在控制器中的代码:

 html_string = render_to_string(
  {
     template: 'users/show.html.erb',
     locals: { id: params[:id] }
  })

pdf = Grover.new(html_string, format: 'A4').to_pdf

respond_to do |format|
  format.html
  format.pdf do
    send_data(pdf, disposition: 'inline', filename: "Show_ID_#{params[:id]}", type: 'application/pdf')
  end
end

我的问题是,如何说服 GROVER 也处理 CSS 文件?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 grover


    【解决方案1】:

    我的布局在没有 CSS 的情况下呈现时遇到了同样的问题。我可以通过在 Grover 中添加 display_url 选项来解决此问题。

    在本地开发中,例如:

    pdf = Grover.new(html_string, format: 'A4', display_url: "http://localhost:3000").to_pdf
    

    您需要根据您的环境更改您的display_url

    如果这不起作用,请确保您正在呈现的 html_string 实际上包含正确的标记。您可以将html_string 呈现为 HTML 以验证是否包含所有标记。

    【讨论】:

    • Jerry,这在您的开发环境中有效吗?由于我正在生成 PDF 以响应请求,因此这会在第一个请求期间触发对我的应用程序的请求(它是触发请求的请求),并且它只是挂在我的开发环境中,即使我与 2 个工人一起启动 puma 也是如此。
    • 它在我的开发环境中使用display_url: "http://localhost:3000"。很难评论您的具体设置。我必须做一些调整才能让 pupeteer 正确运行,你的日志中是否有任何错误?在我的情况下,我创建了一个负责 PDF 创建的后台作业。我将资源传递给作业,生成 html 视图(使用 render_to_string),然后 Grover 在后台作业中生成 PDF。这会是避免您的请求中出现任何竞争条件的解决方案吗?
    猜你喜欢
    • 2015-07-18
    • 2019-09-15
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2017-09-02
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多