« acts_as_list scope 指定の罠 | トップページ | 2010年1月1日 Google Apps で グループにメールが届かない »

ruby on rails で Haru Free PDF Library を使う

まだあまり使っていないのですが、サンプルを見る限りはかなり自由にPDFを出力できるHaru Free PDF Library。

・グラフや線なども自由に出力

・日本語出力も問題なさそう

ということで早速使ってみることに。

1. gem でインストール

web 上では gem でのインストールは出来ない、という情報が多いのですが実はできます。

gem install hpdf

そして、Haru Free PDF Library には、直接 iostream へ出力するメソッドが用意されていませんので、一度サーバ上に出力(save_to_file)してから、send_file でブラウザへ返します。

application.rb

  PDF_PATH = "#{RAILS_ROOT}/pdf" # サーバ上の一時保存パス

  def stream_pdf
    require 'hpdf'
    filename_for_save = "#{action_name}_#{params[:id]}.pdf"
    logger.info "Starting PDF download #{filename_for_save}"
    pdf = HPDFDoc.new
    pdf.use_jp_fonts
    pdf.use_jp_encodings
    encoder = pdf.get_encoder("90ms-RKSJ-H")
    yield pdf
    file = "#{PDF_PATH}/#{filename_for_save}"
    pdf.save_to_file(file)
    send_file file, :filename=>filename_for_save, :type=>'application/pdf',
            :disposition => "attachment"
  end

export_controller.rb

  def export_memo_pdf
    stream_pdf do |pdf|
      font = pdf.get_font("MS-Gothic", "90ms-RKSJ-H")
      page = pdf.add_page
      page.begin_text
      page.move_text_pos(10.0, 300.0)
      page.set_font_and_size(font, 10.0);
      str = "PDFテストですよ".kconv(Kconv::SJIS, Kconv::UTF8)
      page.show_text(str)
      page.end_text
    end
  end

※ 出力はsjis で行っています。utf 8 のまま出力する方法はないのかなぁ。。

RailsによるアジャイルWebアプリケーション開発 Book RailsによるアジャイルWebアプリケーション開発

著者:Sam Ruby,David Heinemeier Hansson,Dave Thomas
販売元:オーム社
Amazon.co.jpで詳細を確認する

※以下のMLを参考にしました。MLは情報の宝庫ですね。

http://www.fdiary.net/ml/rails/msg/2786

« acts_as_list scope 指定の罠 | トップページ | 2010年1月1日 Google Apps で グループにメールが届かない »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/437240/32817997

この記事へのトラックバック一覧です: ruby on rails で Haru Free PDF Library を使う:

« acts_as_list scope 指定の罠 | トップページ | 2010年1月1日 Google Apps で グループにメールが届かない »