ページの先頭行へ戻る
Interstage List Creator V10.4.0 PDF変換機能編
FUJITSU Software

B.1 Javaインタフェース版サンプルプログラム

HTMLサンプルプログラム

<HTML>
<H2>Listcreator PDF手元非表示印刷プログラムサンプル(Java)</H2>

<!-- フォームデータを送信して、WebサーバサイドのJava Servletを起動します。 -->
<!-- 注意:「somehost:8100」の部分は、ご使用のWebサーバ、およびServletのポート番号に合わせて変更ください -->
<FORM METHOD="POST" ACTION="http://somehost:8100/servlet/sample">
<INPUT TYPE="RADIO" NAME="printWay" VALUE="silent" CHECKED>サイレント印刷<BR>
<INPUT TYPE="RADIO" NAME="printWay" VALUE="dialog">プリンタ選択ダイアログ表示印刷<BR>
<INPUT TYPE="RADIO" NAME="printWay" VALUE="showpdf">PDFを画面表示<BR>
<BR>
<INPUT TYPE="SUBMIT" VALUE="印刷">
</FORM>

</HTML>

Javaサンプルプログラム

/*
*   PDF手元非表示印刷サンプル (Java Servlet版)
*
*   Copyright (c) 2001-2008 PFU LIMITED, Fujitsu LIMITED. All rights reserved
*
*

**
** 本サンプルは、Listcreator EE版に添付されたサンプル「URIAGE」を
** 使って、PDFファイルを動的に生成し、ブラウザに復帰します。
** ブラウザにPDFファイルを復帰するとき、パラメタで指定された印刷方法に
** 従って、PDFファイル名の拡張子を以下のように変更します。
**   サイレント印刷                  .pd1
**   プリンタ選択ダイアログ表示印刷  .pd2
**   PDFファイルを画面表示           .pdf
** PDF手元非表示印刷を実行するには、WebサーバとWebブラウザの環境設定を
** あらかじめ行ってください。設定内容については、本サンプルが掲載された
** マニュアルを参照ください。
**
**
** 本サンプルを動作させるには、あらかじめ以下の設定が必要です。
** ※ディレクトリ名や、ファイルの配置ディレクトリについては、
**   ご使用の環境に合わせて変更ください。
**   ・ディレクトリの作成
**      以下の構成でディレクトリの作成とファイルの配置を行います
**        sample\                                 サンプル用ディレクトリ
**              +----pdfout\                      PDFファイルの出力先
**   ・「/local/sample」ディレクトリを、「/sample」仮想ディレクトリに
**      設定する。
**   ・本ソースをコンパイルした.classファイルを、/servlet/sample で
**     呼び出せるように、servlet環境の設定、および.classファイルの
**     配置を行う。
**   ・「/local/sample/pdfout」ディレクトリに、全てのユーザに書込権を与える。
**   ・「/opt/FJSVoast/Samples」ディレクトリに帳票を配置する。
**
*/

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.fujitsu.systemwalker.outputassist.connector.*;


public class sample extends HttpServlet
{
    public void doPost(HttpServletRequest request,
                     HttpServletResponse response ) throws IOException {
        Forms form = null;         /* Formsクラス */
        String sAssets;            /* 帳票格納ディレクトリ名           */
        String sPdfDir;            /* PDFファイル格納ディレクトリ名    */
        String sPdfLocation;       /* PDF格納先URL                     */

        sAssets = "/opt/FJSVoast/Samples";
        sPdfDir = "/local/sample/pdfout";
        sPdfLocation = "/sample/pdfout";

        try{
            /* 帳票名を設定する */
            String sFormName   = "URIAGE";


            /* Forms クラスを作成する */
            form = new Forms( sFormName, sAssets );

            /* 入力データを指定します */
            form.pushRecord("2118588|神奈川県川崎市中原区|上小田中X-X-X|△△△△電気
            |20031221|03101|005|0020|カラーテレビ|3|120000|1234567890");
            form.pushRecord("2118588|神奈川県川崎市中原区|上小田中X-X-X|△△△△電気
            |20031221|03101|005|0022|カラオケセット|1|82000|1234567890");
            form.pushRecord("2118588|神奈川県川崎市中原区|上小田中X-X-X|△△△△電気
            |20031221|03101|005|0100|電気掃除機|2|23000|1234567890");
            form.pushRecord("2118588|神奈川県川崎市中原区|上小田中X-X-X|△△△△電気
            |20031221|03101|005|0001|電気スタンド|7|10000|1234567890");
            form.pushRecord("1008211|東京都千代田区|丸の内Y-Y-Y|○○○○電気
            |20031221|03102|005|0100|電気掃除機|2|23000|1234567890");
            form.pushRecord("1008211|東京都千代田区|丸の内Y-Y-Y|○○○○電気
            |20031221|03102|005|0110|冷蔵庫|2|125000|1234567890");
            form.pushRecord("1008211|東京都千代田区|丸の内Y-Y-Y|○○○○電気
            |20031221|03102|005|0201|電気カーペット|5|10000|1234567890");
            form.pushRecord("1008211|東京都千代田区|丸の内Y-Y-Y|○○○○電気
            |20031221|03102|005|0211|電気ストーブ|3|5000|1234567890");
            form.pushRecord("1008211|東京都千代田区|丸の内Y-Y-Y|○○○○電気
            |20031221|03102|005|0221|電気ごたつ|3|7800|1234567890");


            /*---PrintPropertiesを設定する---------------------------*/
            File filepdf = null;    /* 作成するPDFファイルのFileオブジェクト */

            /* PrintProperties オブジェクトを構築する */
            PrintProperties prop = new PrintProperties();

            /* 印刷方法に応じて、ブラウザに復帰するPDFファイルの
               拡張子を変更する */
            String printWay    = request.getParameter( "printWay" );
            String ext;
            if(printWay.equals("silent")) {
              ext = ".pd1";
            }
            else if(printWay.equals("dialog")) {
              ext = ".pd2";
            }
            else {
              ext = ".pdf";
            }

            /* 出力方法を指定する(PDFファイル) */
            prop.setProperty( PrintProperties.ID_DIRECTMETHOD,
            PrintProperties.OUTPUTMODE_PDF );
            /* PDFファイル名を生成する */
            filepdf = File.createTempFile( "tmp", ext, new File(sPdfDir) );
            /* プロパティ指定(PDFファイル名)を行う */
            prop.setProperty( PrintProperties.ID_KEEPPDF,filepdf.getPath() );


            /*---帳票を出力する-----------------------------------------*/

            /* PrintForm オブジェクトを作成する */
            PrintForm pform = new PrintForm();

            /* 帳票を出力する */
            pform.PrintOut( form, prop );

            String sHost = request.getHeader("Host");
            int    i;

            /* 作成されたPDFファイルのURLを構築する */
            /* ホスト名にポート番号が付加されている場合は、削除する */
            i = sHost.lastIndexOf(':');
            if(i >= 0) {
              sHost = sHost.substring(0,i);
            }
            String sUrl = "http://" + sHost + sPdfLocation
                                        + "/" + filepdf.getName();

            /* PDFファイルをブラウザに復帰する */
            if(printWay.equals("showpdf")) {
              /* PDFを表示する場合 */
              /* コンテンツタイプを設定する */
              response.setContentType( "text/html" );

              /* PrintWriterオブジェクトを取得する */
              PrintWriter out = response.getWriter();

              /* 取得したPrintWriterオブジェクトを使ってHTMLを
                 テキスト送信する */
              out.println( "<HTML><HEAD>" );
              out.println( "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=" + sUrl + "\">" );
              out.println( "</HEAD></HTML>" );

              /* ストリームをクローズする */
              out.close();
            }
            else {
              /* PDFを手元非表示印刷する場合 */
              response.sendRedirect(sUrl);  /* Locationヘッダを復帰する */
            }
        }catch ( ConnectorException e ){
            /* Javaインタフェース使用時に発生する例外 */
            response.setContentType( "text/plain" );
            PrintWriter out = response.getWriter();
            out.println( "ERROR: " +e.getCode() );
            e.printStackTrace( out );
            out.close();
        }catch ( Exception e ){
          response.setContentType( "text/plain" );
            PrintWriter out = response.getWriter();
            e.printStackTrace( out );
            out.close();
        }finally {
            try{
                /* Javaインタフェースが使用している資源を解放する */
                if ( form != null ){
                    form.cleanup();
                }
            }catch ( Exception e ){
                e.printStackTrace();
            }
        }
  }
}