0

表のセルをラップするのではなく、内容を切り捨てるように Prawn に指示したいと思います。

スタイルを次のように設定しようとしましたが、効果がありません。

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

切り捨てを直接指定する方法がない場合は、回避策が必要です。

次の点を考慮してください。

  • フォントが固定幅ではないため、文字列自体を切り捨てることはできません
  • 各文字列の幅を計算することは問題ありませんが、列の幅を取得する方法も必要です。
4

2 に答える 2

2

固定の高さを使用できますが、テキストの高さが固定されている場合に限ります。テキストの最初の行のみが印刷されます。

例:

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

もう 1 つのオプションは、カスタム ラッパーを使用することです。詳細はこちら:

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

于 2013-10-23T20:24:57.207 に答える