我正在尝试用Prawn Ruby PDF生成器创建一个文档,但我遇到了以下问题:
下图显示了我正在尝试的结构。
这是一个示例代码,试图用我试图实现这一目的的方式来模仿我的真实场景。 2.times
和(50.times.map { |i| i.to_s }.join("\n"))
模仿动态数据。
require 'prawn'
class MyPdf
def self.to_pdf(*args)
new(*args).to_pdf
end
def to_pdf
pdf.move_down 200
2.times do
pdf.bounding_box(
[0, pdf.cursor],
width: pdf.bounds.width
) do
pdf.text (50.times.map { |i| i.to_s }.join("\n"))
pdf.stroke_bounds
end
end
pdf
end
def pdf
@pdf ||= Prawn::Document.new(page_size: 'A4')
end
end
但是我在动态边界框放置方面遇到了很多麻烦。
您是否知道使用或不使用边界框来实现此目的的方法?
答案 0 :(得分:1)
您可能正在寻找span
:
def to_pdf
pdf.move_down 200
2.times do
pdf.span(pdf.bounds.width) do
pdf.text (50.times.map { |i| i.to_s }.join("\n"))
pdf.stroke_bounds
end
end
end
答案 1 :(得分:0)
我没有使用边界框来做到这一点。可能这不是最好的解决方案,但您可以使用表格来执行此操作:
data = []
500.times do |i|
data.push [i.to_s]
end
table(data, width: bounds.width) do |t|
t.cells.border_width = 0 # We don't want to see a table
t.before_rendering_page do |page|
page.row(0).border_top_width = 1
page.row(-1).border_bottom_width = 1
page.column(0).border_left_width = 1
page.column(-1).border_right_width = 1
end
end
来源:http://prawnpdf.org/prawn-table-manual.pdf(第17页)
检查边距是否在下一页的顶部显示