prawnto displaying tables that don't break when new page

后端 未结 4 746
面向向阳花
面向向阳花 2021-02-10 09:46

I have a variable number of tables with variable number of rows and I want to have them displaying one after the other but if a table doesn\'t fit on the current page put it on

4条回答
  •  盖世英雄少女心
    2021-02-10 10:12

    Thanks Igor

    I am currently setting the current page and then in the transaction after the new table has been rendered and before the roll back setting new_page variable. Then i can roll back and chek if the new page var > current page var and if it is start new page and print the table. See code below.

    The problem is now the pdf.start_new_page says error but if i just take the pdf.rollback line out it works. See error below.

    Any ideas any one or any easier ways, there must be one!!

    thanks rick

    @current_page = pdf.page_count
    
    pdf.transaction do 
      pdf.move_down 20
    
      pdf.table @data,
        :font_size  => 12, 
        :border_style => :grid,
        :horizontal_padding => 10,
        :vertical_padding   => 3,
        :border_width       => 2,
        :position           => :left,
        :row_colors => ["FFFFFF","DDDDDD"]
    
      @the_next_page = pdf.page_count
      pdf.rollback
    
    end 
    
    if @the_next_page > @current_page
    
      pdf.start_new_page
    
      pdf.table @data,
        :font_size  => 12, 
        :border_style => :grid,
        :horizontal_padding => 10,
        :vertical_padding   => 3,
        :border_width       => 2,
        :position           => :left,
        :row_colors => ["FFFFFF","DDDDDD"]
    end 
    

    The error

    > You have a nil object when you didn't expect it!
    The error occurred while evaluating nil.identifier
    
    Extracted source (around line #158): 
    
    155: end
    
    
    
    RAILS_ROOT: C:/InstantRails/rails_apps/Macrotec-Application
    
    Application Trace | Framework Trace | Full Trace 
    c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/prawn-core-0.7.1/lib/prawn/document.rb:302:in `go_to_page'
    c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/prawn-core-0.7.1/lib/prawn/document/internals.rb:128:in `finalize_all_page_contents'
    c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/prawn-core-0.7.1/lib/prawn/document/internals.rb:127:in `each'
    c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/prawn-core-0.7.1/lib/prawn/document/internals.rb:127:in `finalize_all_page_contents'
    c:/InstantRails/ruby/lib/ruby/gems/1.8/gems/prawn-core-0.7.1/lib/prawn/document.rb:344:in `render'
    C:/InstantRails/rails_apps/Macrotec-Application/app/views/quotations/show.pdf.prawn:158:in `_run_prawn_app47views47quotations47show46pdf46prawn'
    

提交回复
热议问题