【问题标题】:How do I specify to prawn to truncate table cell content?如何指定对虾截断表格单元格内容?
【发布时间】:2013-10-15 09:33:56
【问题描述】:

我想指示 Prawn 截断表格单元格的内容,而不是包装它们。

我试过设置样式如下,但是没有效果:

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

如果没有直接指定截断的方法,我需要一个解决方法。

请考虑以下几点:

  • 我不能自己截断字符串,因为字体不是固定宽度的
  • 计算每个字符串的宽度是可以接受的,但我还需要一种方法来检索列宽。

【问题讨论】:

    标签: ruby pdf-generation prawn


    【解决方案1】:

    可以使用固定高度,但前提是文本的高度是固定的。只会打印文本的第一行。

    例子:

    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 =&gt; true 才能使 Prawn::Text::Formatted::Box 正常工作。

    【讨论】:

      【解决方案2】:

      http://prawn.majesticseacreature.com/docs/0.11.1/Prawn/Text/Formatted.html

      这有一种方法可以截断框中的文本

      formatted_text_box(array, options={})
      

      但这不是一张桌子。我不认为有任何方法可以使用表格,您必须使用文本框。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多