その他
    ホーム 技術発信 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