【问题标题】:Emailing a WickedPDF in landscape orientation横向发送 WickedPDF
【发布时间】:2013-09-20 21:36:59
【问题描述】:

我正在尝试通过电子邮件发送横向格式的 .pdf。我一直在使用 WickedPdf.new.pdf_from_string 方法来尝试这样做。即使我指定横向格式,通过电子邮件发送的 PDF 也是纵向的。

如果有人能告诉我实现这一点的方法,我将不胜感激。

邮寄者:

class ProjectMailer < ActionMailer::Base
  def email_mindmap_process(project, user, unused_list_items_column1, unused_list_items_column2)
    @project = project
    @user = user
    mail(:subject => "You've received a MindMap from #{@user.email}!", :to => @project.destination_email) do |format|
      format.pdf do
        attachments["#{@project.title}.pdf"] = WickedPdf.new.pdf_from_string(render_to_string(:pdf => "MindMap", :template => 'projects/show.pdf.html.erb', :orientation => 'Landscape', :locals => {:project => @project, :user => @user }))
      end
    end
  end
end

控制器:

def email_mindmap_process
  @project = Project.find(params[:id])
  @user = current_user
  begin
    ProjectMailer.email_mindmap_process(@project, @user, @unused_list_items_column1, @unused_list_items_column2).deliver
    flash[:notice] = "We have emailed your MindMap to #{@project.destination_email}"
  rescue Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
    flash[:error] = "There was a problem emailing #{@project.destination_email}. Please double-check the address"
  end
end

【问题讨论】:

    标签: ruby-on-rails pdf actionmailer wicked-pdf


    【解决方案1】:

    我联系了 WickedPDF gem 的创建者 Miles Sterrett,他推荐了以下方法,效果很好!

    attachments["#{@project.title}.pdf"] = WickedPdf.new.pdf_from_string(render_to_string(:pdf => "MindMap", :template => 'projects/show.pdf.html.erb',  :locals => {:project => @project, :user => @user }), {:orientation => 'Landscape'})
    

    非常感谢 Miles 的及时响应,并构建了如此有用的宝石!

    【讨论】:

      【解决方案2】:

      我想分享一个我发现没有使用render_to_string 的解决方案。我事先解析了 erb 文件,然后将该字符串作为pdf_from_string 中的第一个参数传递。

      示例

      parsed_content = File.read("#{Rails.root}/app/views/content.erb")
      render = ERB.new(parsed_content)
      content = render.result(binding)
      
      pdf = WickedPdf.new.pdf_from_string(
        content,
        :orientation => 'Landscape'
      )
      

      我希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 1970-01-01
        • 2015-01-18
        相关资源
        最近更新 更多