11.11 PDFを生成しバッチ印刷するサンプル(JAX-WS)
概要
バッチ印刷モジュールを利用するサンプルプログラムです
ソースサンプル
<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample10.java
import java.io.IOException; import java.io.PrintWriter; import java.math.BigInteger; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.net.URL; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.ws.BindingProvider; import javax.xml.ws.WebServiceFeature; import javax.xml.ws.soap.MTOMFeature; import org.apache.ws.axis2.Bizstream; import org.apache.ws.axis2.BizstreamPortType; import com.brainsellers.schemas.webservices.bizstream._2006_10.BatchPrint; import com.brainsellers.schemas.webservices.bizstream._2006_10.DoPrint; import com.brainsellers.schemas.webservices.bizstream._2006_10.Error; import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateOutputDataRequest; import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateOutputDataResponse; import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutData; import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutDefinition; import com.brainsellers.schemas.webservices.bizstream._2006_10.Output; import com.brainsellers.schemas.webservices.bizstream._2006_10.PrintResult; import com.brainsellers.schemas.webservices.bizstream._2006_10.PrintStatus; import com.brainsellers.schemas.webservices.bizstream._2006_10.PrintStatuses; import com.brainsellers.schemas.webservices.bizstream._2006_10.Printer; import com.brainsellers.schemas.webservices.bizstream._2006_10.Query; import com.brainsellers.schemas.webservices.bizstream._2006_10.QueryResult; import com.brainsellers.schemas.webservices.bizstream._2006_10.Status; public class WSS_JAXWS_Sample10 extends HttpServlet { // Webサービスサーバのホスト名 private static final String WSS_HOST_NAME = "wsssrv"; // Webサービスサーバ上のサンプルディレクトリの場所 private static final String WSS_BIZSTREAM_SAMPLE_DIR = "/bs/sample"; // Webサービスのエンドポイントプリフィックス private static final String WSS_SERVICE_LOCATION = "http://" + WSS_HOST_NAME + ":8080/axis2/services"; // BASIC認証のユーザ名 private static final String USER_NAME = "bizuser1"; // BASIC認証のパスワード private static final String PASSWORD = "bizuser1"; // 監査ロギング用のユーザ定義 private static final String USER_DEF = "AAA"; // Webサービスサーバ上の入力レイアウト定義ファイルパス private static final String LAYOUT_FILE = WSS_BIZSTREAM_SAMPLE_DIR + "/xml/Cloud/CloudSample1.xml"; // 印刷サーバのホスト名 private static final String PRINT_HOST_NAME = "prntsrv"; // 印刷サービスのエンドポイントプリフィックス private static final String PRINT_SERVICE_LOCATION = "http://" + PRINT_HOST_NAME + ":3000/"; // プリンタ名 private static final String PRINTER_NAME = "Bullzip PDF Printer"; // HTTP Get リクエストの処理 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 認証の設定 setAuth(); // バッチ印刷のストリームへ出力 GenerateOutputDataResponse dataResponse = generate(); // 印刷結果取得のためjobIDを取得 PrintResult printResult = dataResponse.getPrintResult(); String jobID = printResult.getJobId(); // バッチ印刷のレスポンスを取得 // 本サンプルはプリンタの印刷完了を待たないので「印刷待ち」や「印刷中」となる場合があります QueryResult batchStatus = getBatchResult(jobID); PrintStatuses printStatuses = batchStatus.getPrintStatuses(); PrintStatus printStatus = printStatuses.getPrintStatus().get(0); // ステータス Status status = printStatus.getStatus(); String result = status.getValue(); String statusCode = status.getCode(); // 情報取得日時 String dateTime = printStatus.getDateTime(); // プリンタ情報 Printer printer = printStatus.getPrinter(); String printerName = printer.getName(); String jobName = printer.getJobName(); // エラー情報 Error error = printStatus.getError(); String errCause = error.getCause(); BigInteger errCode = error.getCode(); String errDetail = error.getDetails(); // ブラウザに結果を表示 response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter pw = response.getWriter(); pw.println("<HTML><HEAD><TITLE>WSS_JAXWS_Sample10</TITLE></HEAD><BODY>"); pw.println("<BR>RESULT = " + result); pw.println("<BR>STATUS_CODE = " + statusCode); pw.println("<BR>DATE_TIME = " + dateTime); pw.println("<BR>PRINTER_NAME = " + printerName); pw.println("<BR>JOB_NAME = " + jobName); pw.println("<BR>ERROR_CODE = " + errCode); pw.println("<BR>ERROR_CAUSE = " + errCause); pw.println("<BR>ERROR_DETAILS = " + errDetail); pw.println("<BR></BODY></HTML>"); pw.close(); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } /** * 認証の設定 */ private void setAuth(){ Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USER_NAME, PASSWORD.toCharArray()); } }); } /** * PDFを生成してバッチ印刷を実行する * * @return GenerateOutputDataResponse */ private GenerateOutputDataResponse generate() throws Exception { // クライアントを生成 Bizstream service = new Bizstream(new URL(WSS_SERVICE_LOCATION + "/bizstream?wsdl")); // MTOMを有効化 WebServiceFeature feature = new MTOMFeature(true); BizstreamPortType type = service.getBizstreamSOAP11Port(feature); BindingProvider bp = (BindingProvider) type; Map<String, Object> reqContext = bp.getRequestContext(); reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSS_SERVICE_LOCATION + "/bizstream?UserDef=" + USER_DEF); // リクエストメッセージの作成 GenerateOutputDataRequest request = new GenerateOutputDataRequest(); // バッチ印刷の出力を設定 Output output = new Output(); BatchPrint batchPrint = new BatchPrint(); DoPrint doPrint = new DoPrint(); Printer printer = new Printer(); doPrint.setUrl(PRINT_SERVICE_LOCATION); batchPrint.setDoPrint(doPrint); // プリンタ名 printer.setName(PRINTER_NAME); // ジョブ名 printer.setJobName("WSS_JAXWS_Sample10"); // 印刷部数 printer.setNumberOfCopy("1"); // 出力トレイ printer.setSelectedTray("AUTO"); // 開始ページ番号 printer.setFromPage("1"); // 終了ページ番号 printer.setToPage("-1"); // sppファイル暗号化パスワード // printer.setPassword("password"); // エンコード済み暗号化パスワード // printer.setPasswordWithEncoded("cGFzc3dvcmQ="); // 用紙に合わせて印刷する printer.setDoFit("true"); batchPrint.setPrinter(printer); output.setBatchPrint(batchPrint); request.setOutput(output); // レイアウト定義を設定 LayoutData layoutData = new LayoutData(); LayoutDefinition layout = new LayoutDefinition(); layout.setUri(LAYOUT_FILE); layoutData.getLayoutDefinition().add(layout); request.setLayoutData(layoutData); // リクエストを送信 return type.generateOutputData(request); } /** * バッチ印刷のステータスを取得 * * @param jobID * @return QueryResult */ private QueryResult getBatchResult(String jobID) throws Exception { // クライアントを生成 Bizstream service = new Bizstream(new URL(WSS_SERVICE_LOCATION + "/bizstream?wsdl")); // MTOMを有効化 WebServiceFeature feature = new MTOMFeature(true); BizstreamPortType type = service.getBizstreamSOAP11Port(feature); BindingProvider bp = (BindingProvider) type; Map<String, Object> reqContext = bp.getRequestContext(); reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WSS_SERVICE_LOCATION + "/bizstream?UserDef=" + USER_DEF); // ジョブIDを設定 Query query = new Query(); query.setUrl( PRINT_SERVICE_LOCATION); query.getJobId().add(jobID); // リクエストを送信 return type.getBatchStatus(query); } }