Prawn PDF - 如何获取文本框的高度

时间:2013-03-26 19:45:30

标签: ruby-on-rails prawn

我有一个包含动态文本的formatted_text_box。当没有给出特定的尺寸时,盒子似乎只是很好地扩展。

问题是它似乎没有将光标移动到框的底部,因此我的文本与formatted_text_box中的文本重叠。

如果我可以确定文本框的高度,我可以相应地使用move_down。

有没有办法确定页面上text_box的高度?

3 个答案:

答案 0 :(得分:4)

扩大亚伯拉罕的顽固答案:

  1. 创建格式化文本框,确保传入通常传递给辅助方法的选项pdf.formatted_text_box

    features_box = ::Prawn::Text::Formatted::Box.new(feature_text.flatten, {
        at: [@pdf.bounds.left + 3.in, @pdf.bounds.top - 0.7.in],
        inline_format: true,
        document: @pdf
      }
    )
    
  2. dry_run方框features_box.render(dry_run: true)

  3. 抓住方框高度@height = features_box.height

  4. 渲染真实features_box.render
  5. 的框
  6. 移动光标或以新高度开始另一个框

答案 1 :(得分:0)

您是否尝试过使用:dry_run =>真的选择?

http://prawn.majesticseacreature.com/docs/0.11.1/Prawn/Text/Box.html

这里有一个类似的案例:https://groups.google.com/d/msg/prawn-ruby/fjPBlaqtQ3A/iGKNThxbq0oJ

答案 2 :(得分:0)

这是我提供编号列表的解决方案。每行包含一个数字,文本的数组,例如[“1.”,“列表项目1”,“2。”,“列表项目2”]

h = data.collect{|d| pdf.height_of(d[0])}.max
data.each do |row|
  pdf.formatted_text(format_line(row[0]))
  pdf.formatted_text_box(format_line(row[1]), :at=>[w, pdf.cursor+h])
  pdf.move_down pdf.height_of_formatted(format_line(row[1]))-h
end
pdf.move_down pdf.height_of_formatted(format_line(data.last[1]))

向下移动格式化文本的高度以呈现下一行。