如何将多个pdf添加到zip文件以便在rails

时间:2016-01-27 12:42:16

标签: ruby-on-rails ruby-on-rails-4 pdf zip

我有一个创建pdfs的控制器动作。 我希望能够获取所有pdf并将其保存在用户可以下载的zip文件中。

我的控制器目前只处理一个pdf的创建,我不知道如何

def showpdf
    respond_to do |format|
      format.html
      format.pdf do
        pdf = Prawn::Document.new(page_size:  "A4",margin: [0,0,0,0])

        #pdf creation stuff

        send_data pdf.render, filename: 'report.pdf', type: 'application/pdf'
      end
    end
end

我可以将其更改为生成多个pdf但我不知道在将它们压缩下载之前将它们存储在何处/如何存储...

1 个答案:

答案 0 :(得分:-1)

Prawn允许您使用

将生成的pdf保存到本地文件系统
pdf.render_file "foo.pdf"

我会在tmp文件夹(/ tmp或RAILS_ROOT / tmp)中创建一个目录,在该文件夹中构建所有必需的zip文件,然后压缩文件夹(使用gem或shell命令),然后执行send_data生成的zip文件。

我会将它包装在一个类方法中,用于为其生成pdf的类,以保持控制器清洁。