11.10 ダイレクト印刷を利用するサンプル(JAX-WS)
概要
ダイレクト印刷を利用するサンプルプログラムです。
ソースサンプル
ダイレクト印刷を行うサンプルプログラムです。
<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample9.java
import java.io.IOException; 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.pdf.print.PDFDirectPrintStream; import com.brainsellers.schemas.webservices.bizstream._2006_10.DataType; import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateDataRequest; 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.Pdf; import com.brainsellers.schemas.webservices.common._2006_10.FileData; public class WSS_JAXWS_Sample9 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 PRINTER_NAME = "FinePrint"; // 印刷結果応答URL private static final String RESPONSE_URL = "http://localhost:8080/WSS_JAXWS_Sample/WSS_JAXWS_Sample9_1"; /** * @see HttpServlet#HttpServlet() */ public WSS_JAXWS_Sample9() { super(); } //HTTP Get リクエストの処理 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ // 認証の設定 setAuth(); // データの生成 byte[] data = generate(); // 取得したファイルをダイレクト印刷のストリームに出力 PDFDirectPrintStream direct = makePDFDirectPrintStream(response); direct.write(data); direct.close(); } catch (Exception e) { e.printStackTrace(); throw new ServletException(e); } } /** * ダイレクト印刷のストリームを作成 * * @param response * @return PDFDirectPrintStream */ private PDFDirectPrintStream makePDFDirectPrintStream(HttpServletResponse response){ //インスタンス生成 PDFDirectPrintStream direct = new PDFDirectPrintStream(response); // 印刷応答URL direct.setResponseUrl(RESPONSE_URL); // 出力PDFファイル // direct.setSaveFileName("C:/Temp/WSS_JAXWS_Sample9.pdf"); // プリンタ名 direct.setPrinterName(PRINTER_NAME); // 印刷部数 direct.setNumberOfCopy(1); // 出力トレイ direct.setSelectedTray(PDFDirectPrintStream.TRAY_AUTO); // 印刷ジョブ名 direct.setJobName("WSS_JAXWS_Sample9"); // 印刷ダイアログ表示 direct.setPrintDialog(false); // ブラウザのターゲットフレーム名(IEでのみ有効) direct.setTarget("bizPrint"); // sppファイル暗号化パスワード // direct.setPassword("password"); // エンコード済み暗号化パスワード // direct.setPasswordWithEncoded("cGFzc3dvcmQ="); // 用紙に合わせて印刷 direct.setDoFit(true); // 印刷開始ページ direct.setFromPage(1); // 印刷終了ページ direct.setToPage(-1); return direct; } /** * 認証の設定 */ private void setAuth() { Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USER_NAME, PASSWORD.toCharArray()); } }); } /** * PDFを生成してバイナリをダウンロードする * * @return byte[] */ private byte[] 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); // リクエストメッセージの作成 GenerateDataRequest request = new GenerateDataRequest(); // 出力ファイルの種類を設定 DataType dataType = new DataType(); dataType.setPdf(new Pdf()); request.setDataType(dataType); // レイアウト定義を設定 LayoutData layoutData = new LayoutData(); LayoutDefinition layout = new LayoutDefinition(); layout.setUri(LAYOUT_FILE); layoutData.getLayoutDefinition().add(layout); request.setLayoutData(layoutData); // リクエストを送信 FileData data = type.generateData(request); return data.getContentData().getValue(); } }
印刷応答URLとして呼び出す、印刷結果の処理サンプルプログラムです。
<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample9_1.java
import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WSS_JAXWS_Sample9_1 extends HttpServlet { //HTTP Post リクエストの処理 public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doGet(req, res); } //HTTP Get リクエストの処理 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String result = request.getParameter("RESULT"); // 印刷結果 String errCode = request.getParameter("ERROR_CODE"); // エラーコード String errCause = request.getParameter("ERROR_CAUSE"); // エラー原因 String errDetails = request.getParameter("ERROR_DETAILS"); // エラー内容 if (errDetails != null) { errDetails = URLDecoder.decode(errDetails, "UTF-8"); } // ブラウザに結果を表示 response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter pw = response.getWriter(); pw.println("WSS_JAXWS_Sample9_1 "); pw.println("
RESULT = " + result); // 印刷結果 pw.println("
ERROR_CODE = " + errCode); // エラーコード pw.println("
ERROR_CAUSE = " + errCause); // エラー原因 pw.println("
ERROR_DETAILS = " + errDetails); // エラー内容 pw.println("
"); pw.close(); } }