2013-10-15 95 views
0

我想指示Prawn截斷表格單元格的內容而不是包裝它們。如何指定大蝦截斷表格單元格內容?

我已經嘗試設置樣式如下,但它沒有任何效果:

options = { 
    cell_style: { 
    overflow: :truncate 
    }, 
} 
pdf.table(entries, options) 

如果沒有指定截斷沒有直接的方法,我需要一個解決辦法配方。

請考慮以下幾點:

  • 我不能截斷字符串本身,因爲字體是不固定的寬度
  • 計算每個字符串的寬度是可以接受的,但我也需要一個方式來檢索列寬。

回答

2

可以使用固定高度,但只有在文本高度固定的情況下才可以使用。只有文本的第一行將被打印。

實施例:

pdf.table(entries, :cell_style => {:height => 25}) 

另一種選擇是使用定製包裝。詳情請看這裏:

https://github.com/prawnpdf/prawn/blob/master/lib/prawn/text/formatted/box.rb#L149

例子:

module MyWrap 
    def wrap(array) 
    initialize_wrap(array) 
    @line_wrap.wrap_line(:document => @document, 
            :kerning => @kerning, 
            :width => available_width, 
            :arranger => @arranger) 
    if enough_height_for_this_line? 
     move_baseline_down 
     print_line 
    end 
    @text = @printed_lines.join("\n") 
    @everything_printed = @arranger.finished? 
    @arranger.unconsumed 
    end 
end 

Prawn::Text::Formatted::Box.extensions << MyWrap 

entries = [ ["very long text here", "another very long text here"] ] 

Prawn::Document.generate("test.pdf") do 
    table entries, :cell_style => { :inline_format => true } 
end 

我只是複製原始wrap方法和刪除while循環,以只打印文本的第一行。

請注意,必須使用:inline_format => true才能使Prawn::Text::Formatted::Box正常工作。

相關問題