【问题标题】:Prawn PDF - How to get the height of a text boxPrawn PDF - 如何获取文本框的高度
【发布时间】:2013-03-26 19:45:30
【问题描述】:

我有一个包含动态文本的 formatted_text_box。如果没有给定特定尺寸,盒子似乎可以很好地扩展。

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

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

有什么方法可以确定页面上 text_box 的高度吗?

【问题讨论】:

    标签: ruby-on-rails prawn


    【解决方案1】:

    扩展亚伯拉罕的回答:

    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. 移动光标或在新高度开始另一个框

    【讨论】:

    【解决方案2】:

    【讨论】:

    • 这个答案不是很有帮助。请您进一步解释一下。
    【解决方案3】:

    这是我的解决方案,它呈现一个编号列表。每行由一个数字、文本数组组成,例如[“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]))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多