我正在尝试以横向格式发送.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
答案 0 :(得分:13)
我联系了WickedPDF宝石的创建者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迅速做出回应,并建立了这样一个有用的宝石!
答案 1 :(得分:0)
我想分享一个我发现没有使用render_to_string
的解决方案。我正在解析erb文件,然后将该字符串作为pdf_from_string
中的第一个arg传递。
示例强>
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'
)
我希望这对某人有帮助。