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版) * * * * ** ** 本サンプルは、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(); } } } }