TOP設計・移行・活用> その他の出力形式
オープンソース帳票システム
オープンソース帳票システム

第4回:アプリケーションに組み込む
著者:ビーブレイクシステムズ  横井 朗   2005/3/25
前のページ  1  2  3   4  次のページ
その他の出力形式

   PDFへの出力については分かっていただけたと思いますので、その他の出力方法について説明します。JasperReportsでは出力形式ごとに出力処理クラス(Exporter)と、出力時のオプションを指定するための出力パラメータクラス(ExporterParameter)が用意されています。PDF出力の例では出力処理クラスは出てきませんでしたが、出力処理で内部的に利用されています。以下の表に出力処理クラスと出力パラメータクラスの一覧をしめします。
出力処理クラス 出力パラメータクラス 対応出力形式
JRCsvExpoter JRCsvExporterParameter CSV出力用Exporter
JRGraphics2DExporter JRGraphics2DExporterParameter Graphics2D出力用Exporter
JRHtmlExporter JRHtmlExporterParameter HTML出力用Exporter
JRPdfExporter JRPdfExporterParameter PDF出力用Exporter
JRPrintServiceExporter JRPrintServiceExporterParameter プリンタ出力用Exporter
JRXlsExporter JRXlsExporterParameter Excel出力用Exporter
JRXmlExporter JRXmlExporterParameter XML用Exporter

表:出力パラメータクラス一覧


   出力処理クラスの基本的な使い方は、どの出力処理クラスでもそれほど変わりませんので、プリンタ出力の場合を例にとって説明します。

プリンタ出力
// データの動的バインド
JasperPrint print = JasperFillManager.fillReport(jasperPath, paramMap,
con);

// (1)プリンタ用出力クラスの生成
JRPrintServiceExporter exporter = new JRPrintServiceExporter();

// (2)出力対象のJasperPrintの設定
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);

// (3)印刷プリンタをプリンタ名で指定
HashPrintServiceAttributeSet printAttribute = new
HashPrintServiceAttributeSet();
printAttribute.add( new PrinterName("FinePrint 2000", Locale.getDefault
()));
exporter.setParameter
(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
printAttribute);

// (4)出力の実行
exporter.exportReport();
(1)プリンタ用出力クラスの生成

   出力形式に応じて、対応する出力処理クラスを生成します。


(2)出力対象のJasperPrintの設定

   出力処理クラスを使用して出力するJasperPrintオブジェクトを設定します。


(3)印刷プリンタをプリンタ名で指定

   ここが出力処理クラスを使用するときのポイントとなる部分です。今回はプリンタから印刷するため、JRPrintServiceExporterParameterのパラメータを指定しています。このように出力処理クラスにどのようなパラメータを渡すかで、出力処理クラスの振る舞いを変更することができます。これだけだとイメージが掴みづらいかもしれませんので、以下にもうひとつパラメータ設定の例をしめします。

パスワード付きPDFの出力
// Exporterの生成
JRPdfExporter exporter = new JRPdfExporter();

// 出力オブジェクトの設定
exporter.setParameter( JRPdfExporterParameter.JASPER_PRINT, print);
// 出力先の設定
exporter.setParameter( JRPdfExporterParameter.OUTPUT_FILE_NAME, destPath);
// パスワード保護を有効にする
exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, Boolean.TRUE);
// パスワードの設定
exporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, "jasper");
exporter.setParameter(JRPdfExporterParameter.OWNER_PASSWORD, "reports");

// 出力の実行
exporter.exportReport();

   なお、プリンタの指定で悩む場合が多いようですので、現在設定されているプリントサービス情報を表示するプログラムを以下にしめします。悩んだときはこちらの出力結果を参考にしてください。

プリントサービス情報の出力
import javax.print.*;
import javax.print.attribute.*;

/**
* 現在設定されているプリントサービスの情報を出力する
*/
public class PrintServiceWriter {

public static void main(String[] args) {

// プリントサービス一覧の取得
PrintService[] myPrintServices = PrintServiceLookup.lookupPrintServices(null, null);

for( int cnt = 0; cnt < myPrintServices.length; cnt++){
System.out.println("=====Print Service [" + cnt + "]=====");
PrintService myPrintService = myPrintServices[ cnt];
PrintServiceAttributeSet attributeSet = myPrintService.getAttributes();

// プリントサービスの属性を出力
Attribute[] attr = attributeSet.toArray();

System.out.println("    ------Print Service Attirbute-----");
for (int i = 0; i < attr.length; i++) {
System.out.println( "    " + attr[i].getClass().toString() + "='" + attr[i] + "'");
}

// そのプリントサービスがサポートするフレバーを出力
DocFlavor[] glavors = myPrintService.getSupportedDocFlavors();

DocFlavor flavor;
System.out.println("    ------Print Service Flavor-----");
for (int i = 0; i < glavors.length; i++) {
flavor = glavors[i];
System.out.println("    " + flavor.toString());
}
}
}
}
(4)出力の実行

   設定したJasperPrintやパラメータの内容に従い出力を実行します。

前のページ  1  2  3   4  次のページ


ビーブレイクシステムズ
著者プロフィール
株式会社ビーブレイクシステムズ  横井 朗  
オープンソース指向技術コンサルタント。Java専門のソフトウェアハウス〜フリーエンジニアを経て現職。帳票開発のみならず、オープンソースを用いたシステム構築を日々提案。なによりもお客様の真のニーズを求めるため社内外でオープンソースに関する啓蒙活動を行う。


INDEX
第4回:アプリケーションに組み込む
  はじめに
  (1)テンプレートXMLのコンパイル
その他の出力形式
  Webアプリケーションへの組み込み