大虾似乎并没有推下来布局重复使用时(:所有)(Prawn doesn't seem to p

2019-08-21 14:04发布

我生成与数据文件流动到每个随后的页,每一页具有一个标准的头。 然而,当我使用重复(:所有)把标题中的每个页面上,我发现每一页的第一个页面上,接下来的内容没有被中的标头的大小,我已经把在页面上下移。

我对生成的横幅代码:

class SmartsoftPdf < Prawn::Document
  BOX_MARGIN = 30
  RHYTHM = 10
  INNER_MARGIN = 30

  # Colors
  #
  BLACK      = "000000"
  LIGHT_GRAY = "F2F2F2"
  GRAY       = "DDDDDD"
  DARK_GRAY  = "333333"
  BROWN      = "A4441C"
  ORANGE     = "F28157"
  LIGHT_GOLD = "FBFBBE"
  DARK_GOLD  = "EBE389"
  BLUE       = "08C"
  GREEN      = "00ff00"
  RED        = "ff0000"


  def show_header(text,date)
    header_box do
      image "#{Rails.root}/app/assets/images/smart_records_logo_h60.png", :height => 40
      draw_text text,
        :at => [80,25], :size => 12, :style => :bold, :color => BLUE
      draw_text "Date: #{ausDate(date)}", 
        :at => [bounds.right - 100,bounds.top - 15], :size => 10 if date
    end
  end

  def header_box(&block)
    bounding_box([-bounds.absolute_left, cursor + BOX_MARGIN + 8],
                 :width  => bounds.absolute_left + bounds.absolute_right,
                 :height => BOX_MARGIN*2) do

      fill_color LIGHT_GRAY
      fill_rectangle([bounds.left, bounds.top],
                      bounds.right,
                      bounds.top - bounds.bottom)
      fill_color BLACK
      move_down(RHYTHM)

      indent(BOX_MARGIN, &block)
    end

    stroke_color GRAY
    stroke_horizontal_line(-BOX_MARGIN, bounds.width + BOX_MARGIN, :at => cursor)
    stroke_color BLACK

    move_down(RHYTHM*4)
  end
end

然后生成PDF的本身我做的:

repeat(:all) do
  show_header("Custom Report",DateTime.now())
end

然而,当我开始把内容到页面,我希望当内容溢出到下一个页面,内容将头部之后出现。 我发现,头部重叠内容,而不是。

这里是说明该问题的图像: http://i.imgur.com/mSy2but.png

我是不是建设集流器是否有误? 我需要做一些额外的,以让这个它泄漏到下一页的内容被按下相应的金额是多少?

Answer 1:

好的。 我已经解决了这个自己。 最近虾的版本有更好的方式来处理这种情况。 当您使用重复(:所有)的页面重新打开文档创建后再内容创作项目添加。 这不推向下翻页。 这头添加到每个页面的正确方法是使用“画布”的方法,让你操作了页边距的边界。 使用画布在页面顶部画一个框,并设置页面的top_margin推旗下的所有内容。

canvas do
      bounding_box([bounds.left,bounds.top],
                   :width  => bounds.absolute_left + bounds.absolute_right,
                   :height => BOX_MARGIN*2) do

        fill_color LIGHT_GRAY
        fill_rectangle([bounds.left, bounds.top],
                        bounds.right,
                        bounds.top - bounds.bottom)
        fill_color BLACK
        move_down(RHYTHM)

        indent(BOX_MARGIN, &block)
      end

      stroke_color GRAY
      stroke_horizontal_line(-BOX_MARGIN, bounds.width + BOX_MARGIN, :at => cursor)
      stroke_color BLACK
 end

在创建文件...

 def initialize(options = {})
    super(:page_layout => :landscape,:top_margin => HEIGHT_OF_BANNER)
 end


文章来源: Prawn doesn't seem to push layout down when using repeat(:all)
标签: ruby prawn