Как установить prawn pdf имя файла в Ruby on Rails? - PullRequest
4 голосов
/ 19 апреля 2011

То, что у меня есть, это действие контроллера, реагирующее на 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 } в контроллере отображает файл de pdf с инструкциями на detail.pdf.prawn

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Чтобы уточнить ответ fl00r, если вы используете prawnto, параметры настройки pdf могут быть введены в ваш контроллер, включая имя файла.

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

Если вы создаете множество различных PDF-файлов с помощью prawnto, вы, вероятно, перенесете конфигурацию в свой собственный метод. но если вы делаете только один, в контроллере все в порядке.

ПРИМЕЧАНИЕ. URL-адрес PDF по-прежнему будет отображаться, например. 1.pdf Но когда они сохраняют PDF-файл, в диалоге сохранения будет отображаться имя файла.

0 голосов
/ 29 октября 2013

Действительно спасибо, этот пост действительно помогает моему старому способу pdf. Есть еще один способ использования prawn Rails. Вы можете проверить эту ссылку . Не мое, но хороший урок по его созданию. Просто скажу, наверное, для тех, кто все еще путает, как это сделать.

Я использовал этот метод раньше, затем я перешел на метод из этой ссылки. На самом деле весело провести некоторое исследование об этом.

0 голосов
/ 19 апреля 2011
prawnto :filename => "myfile", :prawn => {
  ...
}
...