2010-10-17 60 views
5

我正在製作一個帶有紅寶石的小腳本,它會生成一個星期的時間表PDF文件,使用Prawn作爲PDF庫,並且我正在爲樣式化表格掙扎。我想爲表格中的所有列設置一個靜態寬度,以便寬度不依賴於單元格的內容。設置對蝦桌上的單元格/列的寬度

我已經閱讀蝦項目網站的文檔(有很大的改進空間),並搜索了幾個小時,但我迷失在如何設置表格中的列或單元格的寬度,或者如何以任何方式設置列/單元格的樣式。我確實得到了一個有格子布局的PDF文件,但單元格的大小差別很大,看起來並不那麼整齊。

這不起作用:

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 

這裏是我的方法來生成PDF的最新版本,但它並沒有程式化的細胞之一:

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

如果您對Prawn的文檔不滿意,請做出貢獻。 – Tass 2014-01-23 14:59:06

回答

11

我做這樣的事情:

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

更多信息here

0

要爲所有我做這樣的事情列設置靜態寬度:

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

在這種情況下,我想設置爲適合整頁的表格,並用相同的寬度細胞。