2016-08-17 3 views
0

Я пытаюсь загрузить динамический контент в формате pdf. PDF создается, но без содержания в нем, даже не простой текст (когда я тестирую его).Rails wicked_pdf gem генерирует пустой 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"); 
     } 
    }); 
}); 

Вот мой рубиновый код в контроллере:

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 

На самом деле не протестировали его, поэтому извиняйтесь, если он не работает.

Смежные вопросы