4.4 印刷の実行と、ID指定・全印刷履歴取得サンプル (BatchSrv4.java)
このサンプルでは、バッチ印刷を実行した後、その実行結果のIDを指定して印刷履歴を取得し、さらに全印刷履歴の取得を行います。
<biz-Stream_home>/batch_print/BatchSrv4.java
このサンプルは、サーブレットではなくJavaプログラムとして動作します。
<biz-Stream_home>/batch_print/BatchSrv4.java
このサンプルは、サーブレットではなく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;
}
}
