我是Prawn生成PDF的新手,所以这可能是一个简单的问题,但它让我发疯了!
我有一个带有嵌套子表的表。我已经能够轻松地对主表进行样式化和格式化,但我似乎无法对嵌套的子表做同样的事情。我真正需要做的就是设置列宽并删除边框,但我似乎无法弄明白。
这是我到目前为止的代码:
def line_items
data = line_item_rows
table(data) do
row(0).font_style = :bold
columns(0).width = 160
columns(1).width = 300
columns(2).align = :right
columns(2).valign = :bottom
row(0).columns(2).valign = :top
row(0).columns(2).align = :left
self.header = true
end
end
def line_item_rows
[["Description", "Items" ,"Price ex GST"]] +
@line_items.map do |item|
[item.description, sub_item_rows(item), price(item.charge_ex_gst)]
end +
[["","Total", price(@project.charge_ex_gst)]]
end
def sub_item_rows(item)
item.sub_items.map do |sub_item|
["#{sub_item.quantity} x #{sub_item.name} #{price(sub_item.total_charge_ex_gst)}"]
end
end
关于如何将样式应用于子表的任何建议? 在此先感谢您的帮助。
干杯,马克
答案 0 :(得分:5)
好的,这是如何解决的。我需要使用“make_table”并在那里应用格式:
def line_items
move_down 15
data = line_item_rows
table(data) do
row(0).font_style = :bold
columns(0).width = 160
columns(1).width = 300
columns(2).align = :right
columns(2).valign = :bottom
row(0).columns(2).valign = :top
row(0).columns(2).align = :left
self.header = true
end
end
def line_item_rows
[["Description", "Items" ,"Price ex GST"]] +
@line_items.map do |item|
[item.description,
sub_items(item),
price(item.charge_ex_gst)]
end +
[["","Grand Total", price(@project.charge_ex_gst)]]
end
def sub_items(item)
sub_data = sub_item_rows(item)
make_table(sub_data) do
columns(0).width = 200
columns(1).width = 100
columns(1).align = :right
#columns(0).borders = []
end
end
def sub_item_rows(item)
item.sub_items.map do |sub_item|
["#{sub_item.quantity} x #{sub_item.name}", price(sub_item.total_charge_ex_gst)]
end +
[["","Total"]]
end