Prawn pdf bounding_box не работает в течение нескольких страниц - PullRequest
0 голосов
/ 12 октября 2018

У меня есть собственный метод, который принимает строку и блок и должен отображать все, что блок вызвал, внутри прямоугольника с закругленными границами.Это прекрасно работает, когда контент достаточно мал, чтобы уместиться на оставшейся странице, но когда границы отображаются не только на второй странице, они длиннее, чем должны быть, и заголовок исчезает

ЭтоВот как это должно выглядеть

Good

Вот как это выглядит с большим количеством контента (в данном случае текст), который охватывает две страницы:

Страница 1:

Bad - Page 1

Страница 2:

Bad - Page 2

def get_size_of_text str, opts
      ret = [0, 0]
      font(opts[:fontName], style: opts[:fontStyle], size: opts[:fontSize]) do
          ret = [
              height_of_typeset_text(str),
              rendered_width_of_string(str)
          ]
      end
      ret
  end

def customBox title, &block
      title_height, title_width = get_size_of_text title, fontName: "M+ 1mn", fontStyle: :bold, fontSize: 20

      title_width += 30
      title_height += 5

      stroke do
          fill_color '000000'
          fill_and_stroke_rounded_rectangle [(page_usable_width - title_width) * 0.5, cursor + 5], title_width, title_height, 10
          fill_color '000000'
      end

      box = bounding_box [0, cursor], width: page_usable_width do
          move_down title_height
          bounding_box [10, cursor], width: page_usable_width - 20 do
              block.call
          end
      end

      stroke do
          stroke_color '000000'
          line_width 2.5
          stroke_rounded_rectangle [0, cursor + box.update_height - 10], page_usable_width, box.update_height - 20, 10
      end

      move_up box.update_height

      font("M+ 1mn", :style => :bold, size: 20, align: :center) do
          stroke_color "ffffff"
          fill_color "ffffff"
          text title, align: :center
      end

      move_down box.update_height - 20
  end
...