今回はJRubyを利用したbizStreamでのファイル出力を試してみました。
JRubyはJavaによるRubyインタプリタの実装で、Javaの資産と共存する事が可能です。
比較をする為に、簡単なJavaのコードを作成します。
まずはJava側、引数のレイアウトファイルからPDFを作成します。
- 《 XmlToPdfSample.java 》
-
import com.brainsellers.xml.JaxpXML; import com.brainsellers.xml.common.XMLSuper; import com.brainsellers.xml.page.ExcelEngine; public class XmlToPdfSample { public static void main(String[] args) { if(args.length < 2){ System.out.println("XmlToPdfSample [入力XMLファイルパス] [出力ファイルパス]"); return; } // Excelファイル作成処理 try{ XMLSuper xml = new JaxpXML( args[0], args[1] ); xml.parse(); xml.setPageSize(); xml.calcDataSize(); // 座標計算を行う xml.toPDF(); // PDFを生成する xml.close(); // PDFの出力を行う }catch(Exception e){ e.printStackTrace(); } } }
このまま(Java)でも十分にシンプルなコードです。
これをJRubyに置き換えると、以下になります。
- 《 XmlToPdfSample.java.rb 》
-
require "java" import com.brainsellers.xml.JaxpXML import com.brainsellers.xml.common.XMLSuper import com.brainsellers.xml.page.ExcelEngine if(ARGV.length < 2) puts "XmlToPdfSample [入力XMLファイルパス] [出力ファイルパス]" exit false end begin xml = JaxpXML.new( ARGV[0], ARGV[1] ) xml.parse xml.setPageSize xml.calcDataSize xml.toPDF xml.close rescue => e puts e.backtrace exit false end
JRubyでbizStreamを利用する場合、環境変数CLASSPATHを利用する事がお勧めです
JavaでbizStreamが利用出来る環境ではJRubyからのbizStreamを呼び出せるのです。
何でJRubyにする必要があるのか?と疑問を持つ方も居ると思います。
理由としては前回紹介したSinatraを利用した開発で、bizStreamのPDF出力を利用する事が目的なのです。
Sinatraとの連携については、次回以降で記述していきたいと思います。