2016-08-17 61 views
0

我想下載我的動態內容作爲pdf文件。 PDF正在生成,但沒有內容,甚至沒有一個簡單的文本(當我測試的時候)。Rails wicked_pdf寶石生成空的pdf

因爲我需要大量的數據,我需要計算和發送參數而不刷新頁面,所以我通過Ajax請求來完成它。

$("#download_pdf").click(function() { 
    report_type = $("#report_type").val(); 
    start_date = $("#start_date").val(); 
    end_date = $("#end_date").val(); 
    date_type = $("#date_type").val(); 

    $.ajax({ 
    data: { report_type: report_type, start_date: start_date, end_date: end_date, date_type: date_type }, 
    url: '/reports/generate_pdf.pdf', 
     success: function(data) { 
      var blob=new Blob([data]); 
      var link=document.createElement('a'); 
      link.href=window.URL.createObjectURL(blob); 
      link.download="Report_"+new Date()+".pdf"; 
      link.click(); 
      console.log("pdf printed"); 
     } 
    }); 
}); 

這裏是控制我的Ruby代碼:

def generate_pdf 

    @results = get_report_result_by_datetype(params[:report_type], params[:start_date], params[:end_date], params[:date_type]) 
    @type = params[:report_type].to_i 


    @start_date = params[:start_date] 
    @end_date = params[:end_date] 

    respond_to do |format| 
     format.html 
     format.pdf do 
     render pdf: "report", 
      layout:    'pdf_layout', 
      template:   'reports/generate_pdf.html.erb', 
      encoding:   'UTF8', 
      print_media_type: true, 
      disposition:   'attachment', 
      page_size:   'letter', 
      orientation:   'landscape', 
      lowquality:   'false', 
      debug:    true 
     end 
    end 
end 

有在我獲取數據沒有問題。

注意:我注意到最奇怪的是,當計算的數組很小時,生成的pdf有一頁,如果它很大,生成的pdf將顯示多頁。

如果有人指出我出錯的地方,我會非常感激。

在此先感謝!

回答

0

雖然我不知道如何解決您的wicked_pdf代碼,我可以推薦使用寶石prawn(這是不特定的軌道,並刪除了一些Rails的魔法從方程)如下:

format.pdf do 
    pdf_path = Rails.root.join("tmp", "my_file_name.pdf") 
    template_path = Rails.root.join("app", "views", "reports", "generate_pdf.html.erb") 
    this = binding 
    Prawn::Document.generate(pdf_path) do 
    text Erb.new(template_path).result(this) 
    end 
    render file: pdf_path  
end 

實際上沒有對它進行測試,所以如果不起作用,我們表示抱歉。