我所拥有的是响应html和pdf文件格式的控制器操作,如下所示:
def detail
@record = Model.find(params[:id])
respond_to do |format|
format.html # detail.html.erb
format.pdf { render :layout => false } #detail.pdf.prawn
end
end
但是当我收到文件时,它会附带名称:1.pdf
2.pdf
,具体取决于params[:id]
如何将文件名设置为myfile.pdf
- UPDATE -
我的detail.pdf.prawn
文件
pdf.font "Helvetica"
pdf.image open("http://localhost:3000/images/myImage.png"),:position => :left,:width=>100
pdf.text "some text"
pdf.table(someData,:cell_style => { :border_width => 0.1,:border_color=> 'C1C1C1' }) do |table|
table.row(0).style :background_color => 'D3D3D3'
table.column(0..1).style(:align => :left)
table.column(2..4).style(:align => :center)
table.column(0).width = 100
table.column(1).width = 250
table.column(3..4).width = 68
table.row(2).column(0..2).borders = []
table.row(2).column(3).style(:font_style => :bold, :align => :right)
end
并且控制器中的format.pdf { render :layout => false }
使用detail.pdf.prawn
答案 0 :(得分:4)
详细说明fl00r的答案,如果你使用prawnto,pdf setup params可以进入你的控制器,包括文件名。
def detail
@record = Model.find(params[:id])
prawnto :prawn => { :page_size => 'A4',
:left_margin => 50,
:right_margin => 50,
:top_margin => 80,
:bottom_margin => 50},
:filename => @record.name, :inline => true #or false
respond_to do |format|
format.html # detail.html.erb
format.pdf { render :layout => false } #detail.pdf.prawn
end
end
如果你用prawnto创建了很多不同的pdf,你可能会将配置移到它自己的方法中。但如果你只做一个,在控制器中就可以了。
注意:PDF网址仍会显示,例如1.pdf但是当他们保存PDF时,文件名参数将显示在保存框对话框中。
答案 1 :(得分:0)
prawnto :filename => "myfile", :prawn => {
...
}
答案 2 :(得分:0)
非常感谢,这篇文章真的有助于我的旧 pdf方式。还有另一种使用Rails prawn
的方法。你可以查看这个link。不是我的,但是制作它的好教程。只是说可能对任何仍然混淆如何制造它的人。
之前我正在使用此方法,然后我从该链接移动了方法。对它进行一些研究真的很有趣。