エビのテーブルの動作をシミュレートしたいのですが、セル内に描画できるものに制限があるため、テーブルを使用できません。
そのため、各行内の要素のコンテキストを作成するためにバウンディングボックスを使用しています。私が抱えている問題は行に関係しています。
私はこれを試しています:
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
、ページ分割後も増加しているようです。
このソリューションを改善する方法について何か提案はありますか?