JasperReportのPDF出力で、用紙の縦と横が混在したPDFを作成する

JasperReportsで複数のテンプレートを結合してPDFを出力する際に、最初に思いつくのはaddPageメソッドでページを追加してい くという方法だが、この方法だと用紙サイズ、用紙方向などが最初の用紙の設定でページが追加されるようで追加したページの設定が良くない。

そこで、少し面倒だが、各用紙の設定を維持したまま単一のPDF出力が出来るようにする
具体的には、JasperReportsのクラス で「JRPdfExporter」というのがあり、このクラスを使ってPDFを出力する

Ruby から JasperReports でPDF帳票を出す(PDF出力処理をサーバ化)

Railsをpassengerで動かしている時に、RJBでJavaのライブラリJasperReportsを呼び出そうとすると

うまくいかなかった。

なので、一つの解決法としてJasperReportsの呼び出し部分をRailsとは切り離す仕組みとしてDRubyを採用する。

サンプルは別途リンクを張りますが、ここでは主要なソースのみ書き出します。

まずは、実際にPDFを作成する部分から

gen/WritePdf.java:

このJavaのメソッド「runTest」をrubyから呼び出します。

つづいて、この「runTest」を呼び出すrubyソース

create_pdf.rb:

これで、RubyからRJBを使ってJavaのインスタンスを起動し、JasperReportsでPDF出力することが出来ます。

ここまでの修正で、実行テストは

create_pdf_client.rb:

とし、このcreate_pdf_client.rbファイルを実行すると、PDFファイルが作成されます。

JasperReportsで複数の帳票を結合してPDF出力する