2010-10-17 8 views
5

Estoy haciendo un pequeño guión con ruby ​​que produce un archivo PDF de horario de semana, usando gambas como biblioteca de PDF y estoy luchando con el diseño de la tabla. Me gustaría establecer un ancho estático para todas las columnas en la tabla para que los anchos no dependan del contenido de las celdas.Configuración de anchos de celda/columna en una mesa de gambas

He leído la documentación (mucho margen de mejora allí) desde el sitio del proyecto de gambas y buscado en Google durante unas horas, pero estoy perdido en la forma de establecer el ancho de las columnas o celdas de una tabla, o cómo para diseñar las columnas/celdas de cualquier manera. Sin embargo, obtengo un archivo PDF que tiene un diseño de cuadrícula, las celdas varían mucho de tamaño, lo que no se ve tan bien.

esto no funcionó:

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 

Aquí está la versión actual de mi método para generar PDF, pero no estilizar la células, ya sea:

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

Si no está satisfecho con la documentación de la gamba, contribuya. – Tass

Respuesta

11

hago algo como esto :

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() 

Más información here.

0

Para establecer un ancho estático para todas las columnas que hago algo así:

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)) 

En este caso quería poner la mesa para ajustar la página completa y con las células con la misma anchura.