我使用Prawn.rb生成pdf并陷入一个问题:
我在每个页面都有标题,当用户 span 时, span 中的文字会流动到下一页并与标题重叠,但如果我用户 bounding_box ,则其中的文字将从 bounding_box 从文本流向下一页开始。
这是我的标题:
repeat(:all) do
transparent(0.5) do
bounding_box [bounds.left, bounds.top], :width =>
bounds.width do
image "#{Rails.root}/app/assets/images/logo-of-
nextcode.png", height: 20
move_down 2
stroke_horizontal_rule
end
bounding_box [bounds.left, bounds.bottom + 50], :width => bounds.width do
text_box 'PRIVATE & CONFIDENTIAL', align: :center, valign: :bottom, size: 10
end
end
这是长文:
span(bounds.width) do
object.actions.each_with_index do |a, i|
text "#{i + 1}. Description: #{a.message}"
text_box "Expected Completion Date: #{a.expected_completion_time&.strftime('%F')}", at: [0, cursor]
move_down 15
text_box "Actual Completion Date: #{a.actual_completion_time&.strftime('%F')}", at: [0, cursor]
move_down 20
end
end
我的问题是:如果使用 span ,如何避免与标题重叠,以及如果使用 bounding_box ?
答案 0 :(得分:0)
尝试将标题放入canvas
repeat(:all) do
canvas do
transparent(0.5) do
bounding_box [bounds.left, bounds.top], :width =>
bounds.width do
image "#{Rails.root}/app/assets/images/logo-of-
nextcode.png", height: 20
move_down 2
stroke_horizontal_rule
end
bounding_box [bounds.left, bounds.bottom + 50], :width => bounds.width do
text_box 'PRIVATE & CONFIDENTIAL', align: :center, valign: :bottom, size: 10
end
end
end
答案 1 :(得分:0)
我遇到了与您相同的问题,我想到的一个不错的解决方法是,您可以在首次实例化Prawn并将at:
选项添加到image
时更改页面的上边距以便将其放置在pdf页面的顶部。
即如果当前页边距为[35,35,35,35]并且图像的高度为20,则可以将顶部页边距设置为55。如果当前页面高度为722,则将at:
选项设置为:
def instantiate
super(margin: [55, 35, 35, 35])
repeat(:all) do
image "#{Rails.root}/app/assets/images/logo-of-
nextcode.png", height: 20, at: [0, 722]
end
end