文本流向下一页与prawn中的标题重叠

时间:2017-10-27 08:59:25

标签: ruby-on-rails pdf prawn

我使用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

2 个答案:

答案 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