biz-Streamマニュアル バッチ印刷ガイド 第4章 サンプルプログラム 4.4 印刷の実行と、ID指定・全印刷履歴取得サンプル (BatchSrv4.java)

4.4 印刷の実行と、ID指定・全印刷履歴取得サンプル (BatchSrv4.java)

概要

このサンプルでは、バッチ印刷を実行した後、その実行結果のIDを指定して印刷履歴を取得し、さらに全印刷履歴の取得を行います。


サンプル構成

項目 ファイルパス
ページレイアウトサンプル <biz-Stream_home>/sample/java/Sample1.xml サンプル1
ソースサンプル <biz-Stream_home>/sample/batch_print/BatchSrv4.java サンプル1


ソースサンプル

このサンプルは、サーブレットではなくJavaプログラムとして動作します。


import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;

import com.brainsellers.pdf.print.PDFBatchPrintStatus;
import com.brainsellers.pdf.print.PDFBatchPrintStream;
import com.brainsellers.pdf.print.PDFBatchStatus;
import com.brainsellers.xml.JaxpXML;
import com.brainsellers.xml.common.XMLSuper;
import com.brainsellers.xml.page.PDFEngine;


public class BatchSrv4 {

	public static void main(String[] args) {
		BatchSrv4 batch = new BatchSrv4();
		batch.sendSppToServer();
	}

	private int sendSppToServer() {
		String rtnJobId = "";
		//バッチ印刷クライアントがインストールされているサーバ
		String batchServer = "server";

		try {
			// バッチ印刷ストリームの生成
			PDFBatchPrintStream batchstream = new PDFBatchPrintStream("http://" + batchServer + ":3000/");
			batchstream.setPrinterName("FinePrint"); // (1) プリンタ名
			batchstream.setNumberOfCopy(1); // (2) 印刷部数
			batchstream.setSelectedTray("AUTO"); // (3) 出力トレイ
			batchstream.setJobName("BatchPrintSrv4"); // (4) 印刷識別子
			batchstream.setFromPage(1); // (5) 開始ページ番号
			batchstream.setToPage(-1); // (6) 終了ページ番号
			batchstream.setDoFit(true); // (7) サイズに合わせて印刷フラグ
//			batchstream.setPassword("password"); // (8) sppファイル暗号化パスワード
//			batchstream.setPasswordWithEncoded("dGVzdHBhc3M="); // (8') エンコード済み暗号化パスワード

			// PDF埋め込み情報をHashtableにセット
			Hashtable<String, String> ht = new Hashtable<String, String>();
			ht.put("title", "BatchSrv4");
			ht.put("company", "ブレインセラーズ・ドットコム株式会社");
			ht.put("address", "東京都千代田区九段北XX-XX-XX");
			ht.put("phone", "TEL.XX-XXXX-XXXX");
			ht.put("fax", "FAX.XX-XXXX-XXXX");

			PDFEngine pdf = new PDFEngine(batchstream);
			XMLSuper xml = new JaxpXML("${base-dir}/sample/java/Sample1.xml", pdf);
			// レイアウト情報(XML)の解析を行う
			xml.parse();
			// ページサイズを設定する
			xml.setPageSize();
			// データのセットおよび座標計算を行った後、PDFを生成する
			xml.toPDF(ht);
			// PDFを出力する
			xml.close();

			// closeしたbatchstreamより、JobIDと実行結果ステータスを取得する
			System.out.println("closed batchstream. code=" + batchstream.getErrorCode()
					+ " cause=" + batchstream.getErrorCause()
					+ " result=" + batchstream.getResult()
					+ " detail=" + batchstream.getErrorDetails());

			if (batchstream.getErrorCode().equals("000")) {
				rtnJobId = batchstream.getJobId();
			} else {
				return -1;
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			return -1;
		}

		// 印刷終了を待機する
		try {
			Thread.sleep(5000);
		} catch (Exception ex) {

		}

		// 印刷ステータス取得
		PDFBatchStatus bstatus0 = new PDFBatchStatus("http://" + batchServer + ":3000/");

		// IDを指定して印刷履歴を取得
		bstatus0.query(rtnJobId);
		Collection<PDFBatchPrintStatus> get0 = bstatus0.getPrintStatus();
		int num = get0.size();
		if (num > 0) {
			Iterator itr1 = get0.iterator();
			while (itr1.hasNext()) {
				PDFBatchPrintStatus tmp = (PDFBatchPrintStatus) itr1.next();
				if (tmp instanceof PDFBatchPrintStatus) {
					String id = tmp.getJobId();
					System.out.println("this id=" + id);
				}
			}
		}

		// 印刷ステータス取得
		PDFBatchStatus bstatus = new PDFBatchStatus("http://" + batchServer + ":3000/");
		// 現在保持している全ての印刷履歴を取得
		bstatus.query();
		Collection<PDFBatchPrintStatus> gotStatus = bstatus.getPrintStatus();

		num = gotStatus.size();
		if (num > 0) {
			Iterator itr1 = gotStatus.iterator();
			while (itr1.hasNext()) {
				PDFBatchPrintStatus tmp = (PDFBatchPrintStatus) itr1.next();
				if (tmp instanceof PDFBatchPrintStatus) {
					String id = tmp.getJobId();
					System.out.println("id=" + id);
				}
			}
		}
		return 0;
	}
}