動的テキストを含むformatted_text_boxがあります。特定の寸法が指定されていない場合、ボックスはうまく拡張されるようです。
問題は、カーソルがボックスの下部に移動していないように見えるため、テキストがformatted_text_boxのテキストと重なってしまうことです。
テキスト ボックスの高さを判断できれば、それに応じて move_down を使用できます。
ページ上の text_box の高さを決定する方法はありますか?
動的テキストを含むformatted_text_boxがあります。特定の寸法が指定されていない場合、ボックスはうまく拡張されるようです。
問題は、カーソルがボックスの下部に移動していないように見えるため、テキストがformatted_text_boxのテキストと重なってしまうことです。
テキスト ボックスの高さを判断できれば、それに応じて move_down を使用できます。
ページ上の text_box の高さを決定する方法はありますか?
アブラハムのスタブされた答えを拡張する:
書式設定されたテキスト ボックスを作成し、通常はヘルパー メソッドに渡すオプションを確実に渡します。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
}
)
ボックスのdry_runfeatures_box.render(dry_run: true)
ボックスの高さをつかむ@height = features_box.height
features_box.render
:dry_run=> true オプションを試してみましたか?
http://prawn.majesticseacreature.com/docs/0.11.1/Prawn/Text/Box.html
ここにも同様のケースがあります: https://groups.google.com/d/msg/prawn-ruby/fjPBlaqtQ3A/iGKNThxbq0oJ
番号付きリストをレンダリングする私のソリューションは次のとおりです。各行は、数値、テキストの配列で構成されます。例: ["1.", "list item 1", "2.", "list item 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]))
書式設定されたテキストの高さを下に移動して、次の行をレンダリングします。