簡體   English   中英

如何在 Ruby on Rails 中設置 prawn pdf 文件名?

[英]How to set prawn pdf filename in Ruby on Rails?

我所擁有的是響應 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

- 更新 -

我的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上的說明呈現 de pdf 文件

要詳細說明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時,文件名參數將顯示在保存框對話框中。

真的很感謝,這篇文章真的有助於我的 pdf方式。 還有另一種使用Rails prawn的方法。 你可以查看哦這個鏈接 不是我的,但是制作它的好教程。 只是說可能對任何仍然混淆如何制作它的人。

之前我正在使用這種方法,然后我從該鏈接移動了方法。 對它進行一些研究真的很有趣。

prawnto :filename => "myfile", :prawn => {
  ...
}

如果 prawn-rails 或 prawn_plus 您可以在控制器中執行以下操作。

headers["Content-Disposition"] = "attachment; filename=\"myfile.pdf\""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM