JRubyとSVFの連携

JRubyはJavaによるRuby実装です。JVM上で動作するJRubyはJavaのクラスファイルへ簡単にアクセスすることが可能です。ここではJRubyからSVFの印刷機能を利用するための方法を説明します。

JRubyからJavaAPIの呼び出しサンプル

■Sample.rb

Sample.rbはSVFマニュアルのサンプルを参考にしています。

  require "svf"
  include Java
  import jp.co.fit.vfreport.Vrw32

  svf = Vrw32.new 
  ret = svf.VrSetLocale("ja")
  ret = svf.VrInit
  ret = svf.VrSetPrinter("","プリンター名")
  ret = svf.VrSetForm("様式ファイル", 4)
  ret = svf.VrsOut("発行年月日", "2005/12/8 00000")
  ret = svf.VrsOut("発注番号", "1000476");
  ret = svf.VrEndRecord
  ret = svf.VrPrint
  ret = svf.VrQuit
  

設定と実行

■クラスパスの設定

APIを利用するために必要となるsvf.jarファイルをCLASSPATHに追加します。

  Windows
   > set CLASSPATH=c:\SVFJP\svfjpd\lib\svf.jar
  
■実行
  Windows
   > jruby sample.rb
  

Sample.rbコード解説

■宣言

svf.jarファイルをロードします。requireの引数として与える文字列は"svf"でも"svf.jar"でもどちらでも問題ありません。requireメソッドは拡張子を自動的に補完します。LoadErrorが発生した場合は、CLASSPATHの設定を確認してください。

  require "svf"
  

Javaモジュールをインクルードします。 標準Javaライブラリへアクセスが可能となります。

  include Java
  

Vrw32クラスをインポートします。Javaと同様です。

  import jp.co.fit.vfreport.Vrw32
  
■Vrw32の生成と初期化

Vrw32オブジェクトを生成し属性を設定します。基本的な手順はJavaと同様です。

  svf = Vrw32.new 
  ret = svf.VrSetLocale("ja")
  ret = svf.VrInit
  ret = svf.VrSetPrinter("","プリンター名")
  ret = svf.VrSetForm("様式ファイル", 4)
  
■データの入力
  ret = svf.VrsOut("発行年月日", "2005/12/8 00000")
  ret = svf.VrsOut("発注番号", "1000476");
   .......
  
■クローズ処理と印刷
  ret = svf.VrEndRecord
  ret = svf.VrPrint
  ret = svf.VrQuit