【问题标题】:Prawn PDF with Rails mailer?带有Rails邮件程序的虾PDF?
【发布时间】:2010-04-28 21:43:33
【问题描述】:

我已成功创建了一封在创建 Kase 时发送的电子邮件,但现在我需要附加一个由 Prawn 和 Prawno 即时创建的 PDF。基本上,当您访问诸如 application.com/kase/1 之类的 kase 时,您只需在 URL 后面附加 .pdf 即 application.com/kase/1。

我花了很长时间让 PDF 工作并查看我想要的方式,但我不知道如何将 PDF 添加到自动发送的电子邮件中 ​​- 主要是因为我不知道如何给它一个链接,因为它是自动的生成。

有没有人设法让它工作?

谢谢,

丹尼

【问题讨论】:

    标签: ruby-on-rails email pdf prawn


    【解决方案1】:

    我想如果您将生成的 pdf 存储在某处会更好 - 用于缓存等目的。 但是在当前配置下,您可以使用Net::HTTP 读取生成的页面并附加响应:

    require 'net/http'
    
    def your_mailer_method(record)
      #...
      attachment "application/pdf" do |a|
        a.body = Net::HTTP.get('yourdomain.com', "/kase/#{record.id}.pdf")
        a.filename="your_pdf_name.pdf"
      end  
    end
    

    【讨论】:

    • 这是我不明白的一点。在您拥有 /kase/1.psd 的位置,数字 1 是每次都会更改的 Kase ID。有没有办法解决这个问题?
    • 将您的记录作为参数传递给邮件方法并使用它的 id。请参阅编辑后的答案。
    【解决方案2】:

    你真的应该考虑不使用 Prawnto,并创建一个 Prawn::Document 的子类来做你需要的事情。然后,在您的控制器和邮件程序代码中,它应该是:

    MyReport.new.render

    请参阅 Prawn 文档:

    http://wiki.github.com/sandal/prawn/using-prawn-in-rails

    【讨论】:

      【解决方案3】:

      对于较新的,你真的不需要再次发送请求,只要你可以::

      mail.attachments["invoice.pdf"] = {:mime_type => "application/pdf" , :content => pdf_generator}
      

      而不是这样做 ::

      send_data pdf.render , :filename => file_name_here , :type => "application/pdf"
      

      只要这样做::

      pdf.render , :filename => file_name_here , :type => "application/pdf"
      

      不要send_data,只需在您的电子邮件附件中呈现该pdf,如第一个sn-p中所述。

      其实我只是在github上写了一个Gist。

      【讨论】:

        【解决方案4】:

        此代码适用于我

        def send_file(file, subject, text, to_email)
              @subject = subject
              @text = text
              attachments["#{invoice.invoice_number}.pdf"] = file
              from_email = abc@xyz.com      
        mail(:to => to_email, :from => from_email, :subject=> subject)
          end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-09
          • 1970-01-01
          相关资源
          最近更新 更多