|
|
前のページ 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専門のソフトウェアハウス〜フリーエンジニアを経て現職。帳票開発のみならず、オープンソースを用いたシステム構築を日々提案。なによりもお客様の真のニーズを求めるため社内外でオープンソースに関する啓蒙活動を行う。
|
|
|
|