Prawn – 在text_box展开后向下移动光标

我正在使用Prawn Gem生成PDF,我无法找到一种方法在text_box从溢出文本扩展后将cursor向下移动,类似于常规text调用的方式。

Text_box示例

 pad(5) { text_box payable, :at => [bounds.left, cursor], :width => 540, :height => 15, :overflow => :expand, inline_format: true } move_down(15) pad(5) { text_box address, :at => [bounds.left, cursor], :width => 250, :height => 15, :overflow => :expand, inline_format: true text_box city, :at => [250, cursor], :width => 100, :height => 15, :overflow => :expand, inline_format: true text_box state, :at => [350, cursor], :width => 75, :height => 15, :overflow => :expand, inline_format: true text_box zip, :at => [425, cursor], :width => 110, :height => 15, :overflow => :expand, inline_format: true } 

所以上面,我必须从text_box payable padmove_down ,以便正确格式化下一组text_box而不重叠。 如果我对payable字符串使用直接text调用,则在按照预期呈现所有文本后光标向下移动。

我在常规text使用text_box的原因是我可以将文本并text_box在同一行上。 虽然这适用于所有适合单行的字符串,但如果其中一个区域向下扩展text_box ,则它似乎不会很好,因为光标只是从下一个文本行而不是扩展的text_box下面开始。

任何见解或建议将不胜感激,谢谢!

你现在可能已经想出了什么,但我也是Prawn的新手并且有同样的问题,所以希望这会帮助别人。 此示例显示文本框和格式化文本框。 可能有某种更好的方式,但这对我有用。

  txt1 = "u" * 250 txt2 = "v" * 600 txt3 = "w" * 100 txt4 = "x" * 500 txt5 = "y" * 200 txt6 = "z" * 400 stroke_horizontal_rule options = {:document=>@pdf, :at=>[0,cursor]} text_box(txt1, options) measure = Prawn::Text::Box.new(txt1, options) measure.render(:dry_run => true) move_down(measure.height) options = {:document=>@pdf, :at=>[0,cursor]} text_box(txt2, options) measure = Prawn::Text::Box.new(txt2, options) measure.render(:dry_run => true) move_down(measure.height) options = {:document=>@pdf, :at=>[0,cursor]} text_box(txt3, options) measure = Prawn::Text::Box.new(txt3, options) measure.render(:dry_run => true) move_down(measure.height) array = [{:text=>txt4, :size=>12}] options = {:document=>@pdf, :at=>[0,cursor]} formatted_text_box(array, options) measure = Prawn::Text::Formatted::Box.new(array, options) measure.render(:dry_run => true) move_down(measure.height) array = [{:text=>txt5, :size=>16}] options = {:document=>@pdf, :at=>[0,cursor]} formatted_text_box(array, options) measure = Prawn::Text::Formatted::Box.new(array, options) measure.render(:dry_run => true) move_down(measure.height) array = [{:text=>txt6, :size=>12}] options = {:document=>@pdf, :at=>[0,cursor]} formatted_text_box(array, options) measure = Prawn::Text::Formatted::Box.new(array, options) measure.render(:dry_run => true) move_down(measure.height) stroke_horizontal_rule