我想指示Prawn截断表格单元格的内容而不是包裹它们。
我已尝试按如下方式设置样式,但它没有效果:
options = {
cell_style: {
overflow: :truncate
},
}
pdf.table(entries, options)
如果没有直接指定截断的方法,我需要一个解决方法。
请考虑以下事项:
答案 0 :(得分: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
正常工作。
答案 1 :(得分:0)
http://prawn.majesticseacreature.com/docs/0.11.1/Prawn/Text/Formatted.html
有一种方法可以在
的框中截断文本formatted_text_box(array, options={})
但它不是一张桌子。我不认为有任何方法可以使用表格,你必须使用文本框。