2010-10-17 15 views
5

Sto facendo una piccola sceneggiatura con ruby ​​che produce un file PDF di una settimana, usando Prawn come libreria PDF e sto lottando con lo styling del tavolo. Mi piacerebbe impostare una larghezza statica per tutte le colonne della tabella in modo che le larghezze non dipendano dal contenuto delle celle.Impostazione delle larghezze cella/colonna su una tabella di gamberi

Ho letto la documentazione (molto spazio per migliorare) dal sito del progetto Prawn e ho cercato su Google per alcune ore, ma mi sono perso a come impostare la larghezza per colonne o celle in una tabella, o come per modellare le colonne/le celle in qualsiasi modo. Tuttavia, ottengo un file PDF che ha un layout di griglia, ma le celle variano molto di dimensioni, il che non sembra così bello.

questo non ha funzionato:

Prawn::Document.generate(@filename, :page_size => 'A4', :page_layout => :landscape) do 
    table(course_matrix, :headers => HEADERS, :border_style => :grid, :row_colors => ['dddddd', 'eeeeee'], :column_widths => 50) 
end 

Ecco la versione corrente del mio metodo per generare PDF, ma non stilizzare le cellule sia:

def produce_pdf 
    course_matrix = DataParser.new.parse_for_pdf 

    Prawn::Document.generate(@filename, :page_size => 'A4', :page_layout => :landscape) do 
    table(course_matrix, :headers => HEADERS, :border_style => :grid, :row_colors => ['dddddd', 'eeeeee']) do |table| 
     table.cells.style { |cell| cell.width = 50 } 
    end 
    end 
end 
+2

Se non sei soddisfatto della documentazione di Prawn, contribuisci. – Tass

risposta

11

faccio qualcosa di simile :

pdf = Prawn::Document.new(
    :page_size => 'A4', 
    :page_layout => :landscape, 
    :margin => [5.mm]) 
    .... 
    .... 
    pdf.table(tbl_data) do 
    row(0).style(:background_color => 'dddddd', :size => 9, :align => :center, :font_style => :bold) 
    column(0).style(:background_color => 'dddddd', :size => 9, :padding_top => 20.mm, :font_style => :bold) 
    row(1).column(1..7).style(:size => 8, :padding => 3) 
    cells[0,0].background_color = 'ffffff' 
    row(0).height = 8.mm 
    row(1..3).height = 45.mm 
    column(0).width = 28.mm 
    column(1..7).width = 35.mm 
    row(1..3).column(6..7).borders = [:left, :right] 
    row(3).column(6..7).borders = [:left, :right, :bottom] 
    .... 
pdf.render() 

Ulteriori informazioni here.

0

Per impostare una larghezza statica per tutte le colonne che faccio qualcosa di simile:

REPORT_FIELDS = %w[DESCRIPTION PRICE DATE NOTE].freeze 
A4_SIZE = 200.freeze 

data = [] 
data << REPORT_FIELDS 
... things happen ... 
table(data, column_widths: (A4_SIZE/REPORT_FIELDS.size).mm)) 

In questo caso ho voluto preparare la tavola per adattarsi alla pagina intera e con le cellule con la stessa larghezza.

Problemi correlati