所以我用我的铁轨上的虾和一些会计数据来生成我的报告。我做我的虾创建一个 file.pdf.prawn 并将报告的布局放在那里,而不是来自模型。我需要这样我的报告在底部的每一页都有一个小计。这与从控制器生成的 all_total 不同。
我的意思是,就像我需要知道一页上将打印多少数据,然后我可以对这些数据求和。
感谢和尊重
所以我用我的铁轨上的虾和一些会计数据来生成我的报告。我做我的虾创建一个 file.pdf.prawn 并将报告的布局放在那里,而不是来自模型。我需要这样我的报告在底部的每一页都有一个小计。这与从控制器生成的 all_total 不同。
我的意思是,就像我需要知道一页上将打印多少数据,然后我可以对这些数据求和。
感谢和尊重
如果行的高度相等,您可以简单地测试其中有多少行适合您的纸张,然后自己计算。
如果您的行大小不相等,您可以尝试计算Table
与Cell
类类似的行的大小。您只需添加定义一行的条件:
# this code probably won't work because it's not tested
# I just typed it right here to show concept
module Prawn
class Cell
def custom_row_height(row_id)
each do |cell|
index = cell.send(:row)
if index == row_id do
result = cell.send(:height_ignoring_span)].compact.send(:max)
end
end
result
end
来自https://github.com/prawnpdf/prawn/blob/master/lib/prawn/table/cells.rb和https://github.com/prawnpdf/prawn/blob/master/lib/prawn/table/的代码细胞.rb:
module Prawn
class Cell
# Sum up a min/max value over rows or columns in the cells selected.
# Takes the min/max (per +aggregate+) of the result of sending +meth+ to
# each cell, grouped by +row_or_column+.
#
def aggregate_cell_values(row_or_column, meth, aggregate)
values = {}
each do |cell|
index = cell.send(row_or_column)
values[index] = [values[index], cell.send(meth)].compact.send(aggregate)
end
values.values.inject(0, &:+)
end
module Prawn
class Table
class Cell
# Returns the total height of all rows in the selected set.
def height
aggregate_cell_values(:row, :height_ignoring_span, :max)
end