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