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が作成されたでしょうか?




