2011-08-02

rubyで帳票を作るのに便利そうなThinReportsがバージョンアップしていた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
一度、Rubyで帳票を作るのに便利そうな
ThinkReports
を以下で紹介させていただきました。
rubyで帳票

そのThinkReportsがバージョンアップしてpreview3になった模様です。
preview3ではpdfの出力ができるようになったようで、かなり便利そうです。
また画像もレポートに入れることが出来るようになった模様です。

以前のpreview2とはかなり変わっているようですので試してみました。

利用するには以下の2つが必要なようです。
・ThinReports Editor:帳票デザインツール
・ThinReports Generator for Ruby:帳票作成環境

インストール方法は、
http://osc.matsukei.net/projects/thinreports/wiki/Installation_Guide
を見ればよいのですが、それぞれ以下のような感じです。

・ThinReports Editorのインストール
Windows環境で作業を行います。
http://www.thinreports.org/download/
から最新版をダウンロードしてインストールする。

・ThinReports Generator for Rubyのインストール
linux環境で実行します。
su -
gem install thinreports --pre


で使い方です。

まずは帳票のデザインをします。
http://osc.matsukei.net/projects/thinreports/wiki/Getting_Started
こちらを見ればなんとなく使い方がわかります。
データを当てはめるところにしっかり名前をつけておけばよい感じです。
以下のような感じのを作ってみました。
日本語を使う場合は、IPAフォントを以下から取得してインストールする必要があります。
http://ossipedia.ipa.go.jp/ipafont/index.html

preview2で作ったものは、preview3では使えなくなっていました。
今回は大きく変わっているようなので仕方がないとは思いますが、正式リリース時にはpreview3で作ったものも利用できるようになってもらいたいです。
そうでないと、導入するのに躊躇しちゃいますからねぇ。

デザインしたものにデータをはめ込み、pdfを作成するのは以下のような感じです。
ちなみにThinReportsではruby1.9.2を推奨しているようですが、都合により1.8.7で試しています。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'rubygems'
require 'thinreports'

report = ThinReports::Report.new :layout => 'test_test.tlf'
report.start_new_page do |page|
  page.item(:aaa).value('おらおら')
  list = page.list(:test_list)
  data = [['コード1','おなまえ1','バルバル'],
          ['コード22','おなまえ12','バルバルバル'],
          ['コード22333','おなまえ12345','バルバルバル場るバルバル'],
          ['コード2233344455555','おなまえ1234567890','バルバルバル場るバルバルバリバリバリバリ'],
          ['コード2233344455555667788','おなまえ1234567890なまえ~~~~','バルバルバル場るバルバルバリバリバリバリバロバロバロ'],
         ]
  data.each do |d|
    list.add_row do |row|
      row.item(:code).value(d[0])
      row.item(:name).value(d[1])
      row.item(:valval).value(d[2])
    end
  end
end

report.start_new_page do |page|
  page.item(:aaa).value('オラオラオラオラオラオラオラオラオラオラオラオラオロオラオラオラオラオラオラオラオラララララララララララララ')
  list = page.list(:test_list)
  for i in 0..50
    list.add_row do |row|
      row.item(:code).value('code' + i.to_s)
      row.item(:name).value('name' + i.to_s)
      row.item(:valval).value('valval' + i.to_s)
    end
  end
end

File.open('test_out.pdf', 'w') do |f|
   f.puts report.generate(:pdf)
end

puts 'Done'

上記のレポートレイアウトファイルとレポート出力サンプルプログラムをいかにおいておきました。
https://github.com/vivahiraj/thinreports_sample

このプログラムで作成されたPDFファイルは以下のようになります。
https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0Bx24kLioozIcMjk3MTRlNzMtNjQxYy00N2I4LTg3MzItODZhMmFmM2MwY2Ri&hl=ja

なかなかよさげです。
本番リリースでは、preview3で使ったものが、そのまま(もしくは若干の修正で)使えるようになっているとうれしいですね。





コメントを投稿