使用wicked_pdf创建pdf集合

时间:2014-09-04 08:21:56

标签: ruby-on-rails ruby wicked-pdf

我收集了pdfs文件并将其保存到文件中。我为show动作创建了这个,所以当我克隆链接时它生成pdf并将它们存储在公共文件夹中:

def show
    add_breadcrumb "Inovice details"
    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "file_name", :save_to_file => Rails.root.join('public', "Invoice no. #{@invoice.format_id}.pdf")
      end
      format.csv {send_data Invoice.where(id: @invoice.id).to_csv,
        filename: "Invoice no. #{@invoice.format_id}.csv"}
    end
  end

现在我想创建相同的功能,但是要收集对象。例如,我有10张发票,我想要所有这些发票生成pdf并将其保存到公共文件夹。我正在尝试这样的事情:

def index
      @invoices = @company.invoices
    respond_to do |format|
      format.html
      format.js
      format.csv { send_data @invoices.to_csv }
      format.pdf do
        @invoices.each do |invoice|
          render :pdf => "file_name", :save_to_file => Rails.root.join('public', "Invoice no. #{invoice.format_id}.pdf")
        end
      end
    end
    authorize @invoices
  end

但它没有用。我不知道如何解决这个问题。我会感激你的每一个帮助。

1 个答案:

答案 0 :(得分:3)

您无法在同一请求中发送多个PDF。

我认为最好的解决方案是在后台作业中生成PDF(https://github.com/mileszs/wicked_pdf/wiki/Background-PDF-creation-via-delayed_job-gem)并显示一个HTML页面,其中包含指向所有PDF的链接。

如果这对你不起作用,你可以将所有内容合并到一个大的PDF文件中。