prawn with Rails2.3.5
投稿者 okkez
prawn を Rails2.3.5 で使おうと思って調べてみたら、prawnto が使えなくなっていた。
仕方が無いので prawn 単体を Rails で使う方法を考えてみたので書いておく。
以下のコードをそれぞれのファイルに書く。
# config/environment.rb
config.gem "prawn"
config.gem "prawn-layout", :lib => "prawn/layout"
config.gem "prawn-security", :lib => "prawn/security"config.gem “prawn” だけだと prawn/{layout,security} がちゃんと読み込まれないので別の場所で require する必要がある。
# config/initializers/mime_types.rb
Mime::Type.register "application/pdf", :pdf# 適当なヘルパー
def render_pdf
pdf = Prawn::Document.new(:page_size => "A4")
# フォントは環境に合わせる
pdf.font "/usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf"
yield pdf
pdf.render
end以上を追加したら、割と簡単に PDF を出力することができるようになる。
コントローラーでこんな風に書いて、
class ReportsController < ApplicationController
def show
@report = Report.find(params[:id]
respond_to do |format|
format.html # show.html.erb
format.pdf # show.pdf.erb
end
end
endビューでこう書けばよい。
# show.pdf.erb
<%=
render_pdf do |pdf|
pdf.text "Hello, PDF world!"
end
%>追記
本家(github)をよく見たら別の方法が書いてあった。 * Using Prawn in Rails - prawn - GitHub
どっちが良い方法なんだろう。 github に書いてある方法だとちゃんとダウンロードするファイル名を指定できるのが良い。
自分が書いた方法だと、view なので view で使用するデータの受け渡しが楽だけどファイル名の指定とかが面倒。 あと Emacs で適切なモードになってくれないのが気にくわない。



I find that its hard to make complex PDF using prawn . When will there be real reporting solution for ruby ?
Sorry, I don’t know well about it. But I found this site http://www.rubyreports.org/ . Making PDF using prawn is as difficult as any other solution including other languages (e.g. Java).