biz-StreamマニュアルWebサービスサーバ ガイド第11章 サンプルプログラム(Java)11.10 ダイレクト印刷を利用するサンプル(JAX-WS)

11.10 ダイレクト印刷を利用するサンプル(JAX-WS)

概要

ダイレクト印刷を利用するサンプルプログラムです。


ソースサンプル

ダイレクト印刷を行うサンプルプログラムです。

<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample9.java サンプル9


    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 サンプル9


    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(); } }