[我正在Rails应用程序中使用Prawn来生成切片对象的PDF-类似于邮件合并标签的页面。
我已经在pdf文档中设置了一个网格,但是在解决如何用我的集合遍历此网格时遇到了麻烦。
我的pdf类看起来像这样。
class MyPdf < Prawn::Document
def initialize(vessels, view)
super(page_layout: :landscape)
@objects = objects
define_grid columns: 2, rows: 3, gutter: 10
build_page
end
def build_page
@objects.each do |object|
[0,1].each do |col|
[0,1,2].each do |row|
grid(row,col).bounding_box do
text object.name
end
end
end
end
end
end
此代码显然无法正常工作,并且无法将每个对象放置在新的网格正方形中,也无法根据需要创建新页面。
我如何遍历我的对象,并将每个对象放置在自己的网格正方形中?
(注意。我知道虾标签的宝石,但是它有一些限制,因此不适合我的需求。)
问题是您正在为每个项目写入每个网格位置。请尝试执行此操作,这应该只为每个对象写入一次,并在需要时创建一个新的页面+网格。
def build_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
@objects.each do |object|
grid(row,col).bounding_box do
text object.name
if row == 2 && col == 1
start_new_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
else
if col == 1
row += 1
col = 0
else
col += 1
end
end
end
end
end
另一个不错的选择是使用'prawn-labels'gem-这可以解决此确切的问题-github repo for gem found here