ホーム DoRuby ruby on railsでPDFファイルを出力する。 prawnto Plugin編

ruby on railsでPDFファイルを出力する。 prawnto Plugin編

この記事はアピリッツの技術ブログ「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 公式ページ

http://cracklabs.com/prawnto

記事を共有

最近人気な記事