JRubyでPDF帳票作成
パッケージJava製品開発担当の大です。こんにちは。
今回は、JRubyを使用してPDF帳票を作成してみたいと思います。JRubyは、JVM上で動くRuby実装です。オリジナルのRubyと高い互換性を保ち、Javaとの親和性も高い、素敵な処理系です。
JRubyではJavaで作成されたクラスを利用することが簡単に出来るため、シーオーリポーツ for Javaで帳票出力をすることも可能です。
JRuby 開発・実行環境の準備
JRubyの開発・実行環境を手っ取り早く作るなら、NetBeansがおすすめです。まずはNetBeansのサイトから、最新版のIDEをダウンロードします。ダウンロードサイトにはいくつかのダウンロードパッケージがありますが、「Ruby」あるいは「すべて」を選んでください。これらには、JRubyが最初から同梱されています。
ダウンロードしたインストーラを起動し、ウィザードの指示に従ってインストール先等を選べば、あっという間にインストールは完了します。起動してみましょう。
ファイルメニューの「新規プロジェクト」を選ぶとウィザードが起動します。
カテゴリはRubyを選択、プロジェクトは「Rubyアプリケーション」を選択してください。
次のページでプロジェクト名を設定し、完了を押してウィザードを終了すると、「main.rb」をひとつ持つプロジェクトが作成されます。
実行ボタンを押すと、main.rbが実行されます。main.rbにデフォルトで書かれているとおり、"Hello World"がコンソールに出力されます。
JRubyでシーオーリポーツ for Javaを使う
シーオーリポーツ for Javaを使うには、プロジェクトの右クリックメニューから「プロパティー」を選び、カテゴリ「Java」を開いて「JAR/フォルダを追加」でシーオーリポーツのjarファイルを追加します。
これで、JRubyからシーオーリポーツを使う準備は完了です。
main.rbに最初から書かれていた「Hello World」を消して、かわりに以下のように書いてみましょう。
module CoReportsSample include Java include_package 'jp.co.hos.coreports' include_package 'jp.co.hos.coreports.constants' # このサンプルではPDFを作成します def self.create_pdf path = 'c:/CrHokenSample/' report = Report.new report.job = CrFileOutJob.new(CorFileType::PDF, path + 'sample.pdf') report.form_file = path + 'HokenSample.cfx' report.data_file = path + 'HokenSample.csv' report.output end # 帳票出力を行うクラスです class Report attr_accessor :job, :form_file, :data_file # 帳票を出力します def output begin draw = CoReportsSample::CrDraw.new form = CoReportsSample::CrForm.open(draw, form_file) begin job.start(draw) create_pages(form) job.end ensure form.close end ensure draw.deleteInstance end end # ページを作成します def create_pages(form) header = nil require 'csv' CSV.open(data_file, 'r') do |row| unless header # 最初の1行はヘッダ header = row else # データ行を読み込んでフィールドに値をセット row.each_index do |index| form.get_cr_object(header[index].to_s).text = row[index].to_s end form.print_out end end end end end CoReportsSample.create_pdf
このコードは、シーオーリポーツ for Javaの描画ライブラリユーザーズマニュアルに入っているサンプル「実践的な帳票出力処理(1)単票出力」の、フォームファイル(HokenSample.cfx)とCSVファイル(HokenSample.csv)を使って、PDF帳票を出力します(ただし、処理を簡略化するため、CSVファイルのエンコーディングはUTF-8に変更してあります)。これらのファイルを、8行目で指定している場所に置いてください。
書き終えたら実行してみましょう。以下のようなPDFが作成されたでしょうか?