从 Rails 视图生成 PDF 文件

Generate PDF file from Rails view

我在 SO 上看到很多问题,详细说明如何使用 prawn 在浏览器中显示 PDF,但我想创建一个 PDF 文件以用作电子邮件中的附件。

目前我正在使用 Rails ActionMailer 向我们的商家发送 HTML 格式的发票。我们被要求改为生成发票的 PDF 并将其作为附件发送,以便他们可以保留文件以供内部记录。

我希望能够使用发送电子邮件时使用的同一个 erb 模板(这是关键部分),而不是输出 PDF。这可能使用 Prawn(或其他任何东西)吗?

我最终决定按照对我的问题的评论中的建议使用 wicked_pdf。我可以这样使用它

mail subject: "Order #{order.id}" do |format|
  format.text
    format.html do
      attachments["receipt #{Time.now}.pdf"] = WickedPdf.new.pdf_from_string(
        render_to_string pdf: 'receipt', template: 'order_mailer/order_receipt.html.erb'
      )
      render 'order_receipt'
    end
  end
end

这仍然会以 HTML 和文本形式呈现电子邮件,但还会将 PDF 附加到使用与邮件程序相同模板的电子邮件中 ​​