3

エビのテーブルの動作をシミュレートしたいのですが、セル内に描画できるものに制限があるため、テーブルを使用できません。

そのため、各行内の要素のコンテキストを作成するためにバウンディングボックスを使用しています。私が抱えている問題は行に関係しています。

私はこれを試しています:

require 'prawn'

Prawn::Document.generate("test.pdf") do
  move_down 50
  bounding_box [0, cursor], width: bounds.width do
    20.times do |i|
      stroke_bounds && start_new_page if (i+1) % 11 == 0
      bounding_box [0, cursor], width: bounds.width, height: 50 do
        fill_color "cccccc"
        fill_rectangle [0, bounds.height], bounds.width, bounds.height
      end
    end
    stroke_bounds
  end
end

しかし、これは非常にハッキーで最適ではないと感じています。これは、start_new_pageの後に含まれているbounding_boxを再配置できないため(少し上から開始したい)、ページの場所を手動で指定する必要があるためです。ブレークが発生します(この場合、11番目の要素ごと)。bounds.parent.heightカーソルを使ってカーソルを使って最後に到達したかどうかを確認してみましたがbounds.height、ページ分割後も増加しているようです。

このソリューションを改善する方法について何か提案はありますか?

4

0 に答える 0