【问题标题】:Download multiple pdf using Wicked pdf使用 Wicked pdf 下载多个 pdf
【发布时间】:2018-12-08 07:43:20
【问题描述】:

如何使用 Wicked-pdf 下载多个 pdf

下面是我在这里使用的代码行,

@awb_orders = Spree::Order.where('created_at >= ? AND created_at <= ?', DateTime.now-1.month, DateTime.now).where(:state => 'complete').order("created_at DESC")
@awb_orders.each do |order|
  @order = order
  respond_to do |format|
    format.html
    format.pdf do
      render pdf: "file_name_#{DateTime.now}",
        save_to_file: Rails.root.join('public', "invoice_#{DateTime.now}.pdf")
     end
   end
 end

我得到以下结果

在此操作中多次调用渲染和/或重定向......“redirect_to(...) and return”。

谁能帮我解决我哪里出错了?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5 wicked-pdf wicked-gem


    【解决方案1】:

    在普通的 Rails 控制器中,您不能多次调用任何render 方法,在这里您可以执行任意数量的命令。

    相反,我认为您需要重新组织数据,以便在单个 pdf 模板中生成所有发票,或者您在 respond_to/render 循环之外生成单独的 pdf,然后将它们合并到一个单个 PDF 或包含所有文件的 zip 文件。

    以下是其外观的大致轮廓:

    @awb_orders = Spree::Order.where('created_at >= ? AND created_at <= ?', DateTime.now-1.month, DateTime.now).where(:state => 'complete').order("created_at DESC")
    respond_to do |format|
      format.html
      format.pdf do
        cpdf = CombinePDF.new
        @awb_orders.each do |order|
          pdfdata = render_to_string(pdf: "order_#{order.id}"
          cpdf << CombinePDF.parse(pdfdata)
        end
        send_data cpdf.to_pdf, filename: "combined.pdf", type: "application/pdf"
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多