3

我想在 Prawn 中模拟表格的行为,但由于我可以在单元格内绘制的东西的限制,不能使用表格。

所以我使用边界框来为每行内的元素创建上下文。我遇到的问题与行有关。

我正在尝试这个:

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

但我觉得这是非常 hacky 并且不是最优的,因为包含 bounding_box 不能在 start_new_page 之后重新定位(我希望它开始更高一点),而且我必须手动指定页面的位置break 发生(在这种情况下,每 11 个元素)。我尝试使用并使用光标检查它是否到达末尾,但即使在分页符之后bounds.parent.height似乎也会增加。bounds.height

您对如何改进此解决方案有任何建议吗?

4

0 回答 0