目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、KBMJの中平@railsエンジニアです。
今回は、ruby on railsでPDFファイル出力ができる prawnto というプラグインついて書きます。
rubyおよびrailsでPDFファイルを出力するプラグインは色々ありますが、
今回は、railsのプラグインとして使用できること、日本語を使用できること、コントローラー・ビューに記述するだけで簡単にPDF出力ができるプラグインということで、 prawntoというpluginを紹介しようと思います。
(ほかのライブラリだと、サーバーにライブラリを入れておかないといけないものや、一旦PDFファイルを事前にファイル出力しておかなければならないものが多く面倒な気がしました)
環境
OS : Windows Vista
Ruby : 1.8.7
ruby on rails : 2.3 (prawntoは公式ページでは2.1or2.2と書かれていましたが、2.3でも動きました)
prawntoのインストール
ruby script/plugin install git://github.com/thorny-sun/prawnto.git
prawnのインストール
prawnto はprawnというPDF出力ライブラリを利用しているため必要
gem installprawn
日本語用フォントのダウンロード
ダウンロードして解凍後、ttfファイルをアクセス可能な場所に置く
http://ossipedia.ipa.go.jp/ipafont/
私はpublicの直下に置きましたが、libでもvender配下でもいいと思います。
コントローラーのメソッドに以下のコードを記述
def show
prawnto :prawn => {
:page_layout => :portrait, # 縦 :landscape,# 横
:page_size => ‘A4’,
:left_margin => 36,
:right_margin => 36,
:top_margin => 36,
:bottom_margin => 36
}
@pigs = “#{RAILS_ROOT}/public/images/aaa.jpg” #画像ファイル
end
ビューファイルに以下のコードを記述
ファイル名は show. pdf.prawnという風につけます。
pdf.font “#{RAILS_ROOT}/public/ipag.ttf”
pdf.text “日本語のテストです。”
pdf.text “サイズ36”, :size => 36
pdf.font “Times-Roman”
pdf.text “abcdefghijklmnopqrstuvwxyz”
pdf.text “http://doruby.kbmj.com”
pdf.bounding_box([400,313], :width=>50, :height=>50) do
pdf.line_width = 2
pdf.stroke_rectangle [0,50], 50, 50
pdf.stroke_line 0,0,50,50
pdf.stroke_line 0,50,50,0
pdf.font ‘Helvetica-Bold’, :size => 12
pdf.text “\nSTAMP\nHERE”, :align=>:center
end
pdf.image @pigs, :at => [50,450], :fit => [200,200]
実際にruby on railsでPDF出力する
コントローラー名/show/hoge.pdf
というようにアクション名の後ろに拡張子をPDFにしたファイル名をつけてブラウザでアクセスするとデータがPDF形式で出力されます。
この、prawntoではオプションが用意されており、色々な形のPDFファイルを出力することが可能です。
簡単に例をあげます
:prawn PDFの表示形式などの設定{}に複数設定可能
>> 上の例だと:page_layout => :portrait, # 縦 pagee_size => ‘A4’,
とあるのはA4縦で出力 あとは余白などの設定しています。
:inline=>false : falseにすることでPDFをダウンロードさせる。デフォルトはtrueになっており、ブラウザでPDFが表示されます。
また公式ページにデモが用意されておりPDFのサンプルを見ることができますので、是非参考にしてください。
http://cracklabs.com/prawnto/demosこのprawntoというプラグインを利用すると比較的簡単にPDFを出力できると思います。
日本語や画像も使え、罫線も引けるようですので、ある程度のことはできそうな感じです。
ruby on rails でPDF出力することがあればprawntoを利用してみてはいかがでしょうか?prawnto 公式ページ