4.1 印刷指示処理サンプル (BatchSrv1.java)
概要
このサンプルでは、レイアウトファイル「Sample1.xml」をバッチ印刷しています。このとき、プリンタの制御として以下のように設定します。
- プリンタはCanon LBP3800 LIPSに出力します。
- 印刷部数は1部のみです。
- 出力トレイは自動的に最適なものを選択します。
- 印刷ジョブ名は「BatchSrv1」を含むユニークな文字列となります。
- 1ページ目から印刷されます。
- 最終ページまで印刷されます。
- 用紙サイズに合わせて印刷します。
サンプル構成
| 項目 | ファイルパス |
|---|---|
| ページレイアウトサンプル |
<biz-Stream_home>/sample/java/Sample1.xml
|
| ソースサンプル |
<biz-Stream_home>/sample/batch_print/BatchSrv1.java
|
ソースサンプル
赤行は、バッチ印刷のロジックを追加、変更する箇所を示します。
import java.io.IOException;
import java.util.Hashtable;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.brainsellers.pdf.print.PDFBatchPrintStream;
import com.brainsellers.xml.JaxpXML;
import com.brainsellers.xml.common.XMLSuper;
import com.brainsellers.xml.page.PDFEngine;
public class BatchSrv1 extends HttpServlet {
// HTTP Post リクエストの処理
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
// HTTP Get リクエストの処理
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// ダイレクト印刷バッチタイプの出力先ストリームのインスタンス化
PDFBatchPrintStream batch = new PDFBatchPrintStream("http://server:3000/"); //バッチ印刷のアプリケーションをインストールしたサーバ名を指定する
batch.setPrinterName("Canon LBP3800 LIPS"); // (1) プリンタ名
batch.setNumberOfCopy(1); // (2) 印刷部数
batch.setSelectedTray("AUTO"); // (3) 出力トレイ
batch.setJobName("BatchSrv1"); // (4) 印刷識別子(2バイト文字を使用する場合はUTF-8)
batch.setFromPage(1); // (5) 開始ページ番号
batch.setToPage(-1); // (6) 終了ページ番号
batch.setDoFit(true); // (7) 用紙サイズに合わせて印刷
// batch.setPassword("password"); // (8) 暗号化パスワード(クライアントインストール時に指定したもの)
// PDF埋め込み情報をHashtableにセット
Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put("title", "BatchSrv1");
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(batch);
XMLSuper xml = new JaxpXML("${base-dir}/sample/java/Sample1.xml", pdf);
// レイアウト情報(XML)の解析を行う
xml.parse();
// ページサイズを設定する
xml.setPageSize();
// データのセットおよび座標計算を行った後、PDFを生成する
xml.toPDF(ht);
// PDFをの出力する
xml.close();
// closeしたPDFBatchPrintStreamから、JobIDと実行結果ステータスを取得する
System.out.println("closed batch. JobID=" + batch.getJobId()
+ " code=" + batch.getErrorCode()
+ " cause=" + batch.getErrorCause()
+ " result=" + batch.getResult()
+ " detail=" + batch.getErrorDetails());
} catch (Exception ex) {
throw new ServletException(ex);
}
}
}
