railsのPDF作成-prawnでの表作成

前回に引き続き、railsでの帳票作成について。
prawnを用いるとrubyで簡易に帳票作成が行える。
それをrails上で利用できるように作成されたのが、prawntoだそうだが、今ひとつprawntoの利点が見えてこない。
その点は余裕があったら調査するとして、prawnだけを用いてのPDF作成について。
前回は検証中だった表作成を行ってみる。

コントローラーには以下の記述。


def create_pdf
Prawn::Document.generate("#{RAILS_ROOT}/public/test.pdf", # PDFファイルの出力先
:page_layout => :landscape, # 横
:page_size => "A4",
:left_margin => 36,
:right_margin => 24,
:top_margin => 24,
:bottom_margin => 24) do
font "#{RAILS_ROOT}/public/ipag.ttf" # IPAフォントを配置したパスを指定
text 'テスト帳票'
i = 1
size = ['Small', 'Middle', 'Large']
price = Hash.new
price['Small'] = 9.00
price['Middle'] = 10.50
price['Large'] = 12.00
@table = Array.new
# 各行の値を設定*10。無駄に乱数なんかも使ってみる。
10.times do
value = size[rand(3)]
@table << [i, value, price[value] ]
i += 1
end
table @table,
:headers => %w[No サイズ 価格],
:row_colors => %w[eeeeee ffffff],
:align => { 0 => :right, 1 => :center, 2 => :right },
:align_headers => :center,
:width => 770
# :widths => {0 => 200, 1 => 80, 2 => 80}は機能しなかった。
end

send_file("#{RAILS_ROOT}/public/test.pdf", :type => "application/pdf",
:disposition => 'inline')

end

ボタンクリックでPDF作成できるように、ビューには以下を記述。

<%= link_to 'PDF作成', :action => :create_pdf %>

で、作成されたPDFがこんな感じになる。
※どうやら、ブログ上にPDFのアップロードは出来ない(面倒)なようなので、画像を掲載。

割と簡単に出来るみたい。
ただし、widthsの指定が上手く出来なかった。これがないと自動で列幅を指定されてしまうため、難しいかも。
また、一つのセルに2行書く様な場合等、ちょっと複雑な形式になっただけで対応できなくなってくるかもしれない。
PGをごりごりやればできるかもしれないけど。

ただ、簡単にPDF作成が出来るのは間違いないので、単純な帳票作成が必要なときは良いのでは。

個人的には、行の色分けが簡単に行えるのはかなり使えると感じた。