Rails 4 アプリケーションで Prawn を使用してPrawnto_2を正常に実装しました。しかし、答えが見つからないテーブル セルの奇妙な動作に出くわしました。
私の実装では、私のアプリケーションは、各ページに大きなテーブルを含む複数ページの PDF を作成できます。各テーブルは同じデザインで、類似したデータが含まれているため、同じテーブル ヘッダーがあります。
高速化して DRY を維持するために、次のヘッダー行を作成します。
header = []
(0..6).each do |index|
header << pdf.make_cell(:content => "Heading #{index}", :width => 140, :borders => [])]
end
次に、 を複数回呼び出すことpdf.table()
で、ヘッダー行を表示するテーブルごとにそのヘッダー行を再利用できます。
4.times do |i|
pdf.table([header] + more_rows)
# the more_rows variable is an array containing additional rows to be shows beneath the header
end
上記のループでは、4 つのテーブルがあり、それぞれが同じ一番上の行を持っていると予想されます。これは本当ですが、テーブルの寸法はばかげています。つまり、後続のテーブルでは列幅が無視され、テーブル幅は考慮されません。最初のテーブルは完璧ですが、2 番目以降はこの問題に屈します。
これを解決できた唯一の方法は、テーブルを作成するたびにヘッダー行を作成することでした。これは、多くのコードの重複を意味します。それはうまく機能しますが、DRYではありません。
header
では、上記の例で、再利用によって列とテーブルの幅が変化するのはなぜでしょうか? Prawn::Table::Cell
オブジェクトを再利用するより適切な方法はありますか?