連票形式( IOCELA )¶
連票形式( IOCELA )のPDFファイルを作成するための JSPプログラムを作成します。
JSPプログラムに記述されたPDF生成処理は、アプリケーション上で実行されます。
ここでは、JSPプログラムにPDF生成処理を記載していますが、
JSPプログラムから分離してJavaプログラムとして作成することも可能です。
コラム
文字コードは UTF-8 でファイルを保存してください。
1. 入力画面処理の作成¶
入力画面処理のプログラムを記述します。
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<DIV align="center" style="center; padding-top: 25px;">
<P><FONT size="+2">チュートリアルサンプル(IOCela)</FONT></P>
<FORM action="pdfd/javaee/tutorial/celasample_act" method="POST">
<TABLE border="1">
<TR>
<TH align="center" style="padding: 5px 10px;" nowrap>
出力PDFファイルディレクトリ: Public Storage の [pdfd/tutorial]
</TH>
</TR>
<TR>
<TH align="center" style="padding: 5px 10px;" nowrap>
下のボタンをクリックすることでPDF生成を開始します。
</TH>
</TR>
<TR>
<TD align="center" style="padding: 5px 10px;" nowrap>
<input type="submit" value=" PDF作成 " />
</TD>
</TR>
</TABLE>
</FORM>
</DIV>
記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリを作成し、
celasample.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
2. 出力画面処理の作成¶
次に出力画面処理のプログラムを記述します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。
コラム
RESTインタフェースの機能を利用する場合は、利用クラスを CSVCela から CSVCelaRemote に変更します。サンプルプログラムの 48行目のコメントを外し、47行目をコメントアウトしてください。
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="jp.co.intra_mart.foundation.service.client.file.PublicStorage" %>
<%@ page import="jp.co.intra_mart.product.pdfmaker.PDFLibSecurity" %>
<%@ page import="jp.co.intra_mart.product.pdfmaker.net.CSVCela" %>
<%
//---
// CSVCELAサンプル(PDF-Desiner V8.0.0)
//---
// IOCELA帳票データをコード内部で生成しPDF帳票ファイルを生成します。
// PDFファイルは、文書情報/セキュリティ情報を付加し、出力しています。
//
//-----
// 出力ファイルパスの設定
//-----
// 出力ファイルは、Storage上のPublicディレクトリ以下の任意の位置に出力できます。
//
// Publicディレクトリとは、
// %PUBLIC_STORAGE_PATH%/public/storage/ までを指しています。
//
// また、ファイル名は PublicStorageクラスを使用しStorage上に同一ファイルがないか確認し
// 同一ファイルが存在する場合は、ファイル名に"_"(アンダーバー)+数値"を付加しています。
//
// *** このサンプルでは完全な一意性は確保できません。 ***
//
String outpath = "pdfd/tutorial/"; // 出力フォルダ
String prefix = "designer"; // 出力ファイル接頭文字
String suffix = ".pdf"; // 出力ファイル拡張子
String outPdfPath = outpath + prefix + suffix;
PublicStorage ps = new PublicStorage(outPdfPath);
int i = 1;
while (ps.exists()) {
outPdfPath = outpath + prefix + "_" + i + suffix;
ps = new PublicStorage(outPdfPath);
i++;
}
//-----
// インスタンス生成 (V8.0.0から変更あり)
//-----
// 引数として連票用レイアウトファイルパスを指定(必須)
//
// 【V8.0.0】ファイルパス指定方法の変更
// Storage の Publicディレクトリ からの相対パスを指定します。
//
CSVCela pdf = new CSVCela("pdfd/tutorial/designer.def");
//CSVCelaRemote pdf = new CSVCelaRemote("pdfd/tutorial/designer.def");
//-----
// 文書情報設定 (V7.x から変更なし)
//-----
// 文書情報セット(各項目最大255文字まで)
//
// defineTitle(String) タイトルの設定
// defineSubTitle(String) サブタイトルの設定
// defineAuthor(String) 作成者の設定
// defineApplication(String) 作成アプリケーション名の設定
//
//
pdf.defineTitle("PDFデザイナー体験");
pdf.defineAuthor("IM 太郎");
//-----
// セキュリティ設定 (V7.x から変更なし)
//-----
// セキュリティ情報セット(パスワードは最大32文字まで)
//
// <パスワード設定>
// setOpenPassword(String) オープンパスワード(32文字まで)
// setSecurityPassword(String) セキュリティパスワード(32文字まで)
//
// <印刷許可設定>
// printSecurity(PDFLibSecurity.PRINT_ENABLE) 印刷許可
// printSecurity(PDFLibSecurity.PRINT_DISABLE) 印刷不許可
//
// <変更許可設定>
// modifySecurity(PDFLibSecurity.MODIFY_DISABLE)
// 変更不許可
// modifySecurity(PDFLibSecurity.MODIFY_ALL)
// 変更許可 (ページの抽出を除くすべての変更を許可)
// modifySecurity(PDFLibSecurity.MODIFY_FORM_AND_ANNOTATION)
// 変更許可 ("注釈の作成","フォームフィールドの入力",
// "既存の署名フィールドに署名"を許可)
// modifySecurity(PDFLibSecurity.MODIFY_FORM_AND_ASSEMBLY)
// 変更許可 ("ページレイアウト", "フォームフィールドの入力",
// "既存の署名フィールドに署名"を許可)
//
// <テキスト文字抽出許可及びアクセシビリティ許可設定>
// copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE) 不許可
// copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_ENABLE) 許可
//
pdf.setSecurityPassword("secpasswd");
pdf.printSecurity(PDFLibSecurity.PRINT_DISABLE);
pdf.modifySecurity(PDFLibSecurity.MODIFY_DISABLE);
pdf.copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE);
//-----
// CSVデータファイル設定 (V8.0.0 から変更あり)
//-----
// ファイル内容はDEFファイル上のデータ形式設定に沿って各カラムに値が挿入されます。
//
// 【V8.0.0】ファイルパス指定方法の変更
// Storage の Publicディレクトリ からの相対パスを指定します。
//
pdf.setCSV("pdfd/tutorial/designer_data.csv");
//-----
// レコードデータ設定 (V7.x から変更なし)
//-----
// CSVデータファイルの代わりにCSV形式のレコードデータを指定する。
// 1回で1行分のデータを設定することが可能です。
// (複数行の設定をする場合は、複数回メソッドを呼び出してください。)
//
// for(int row = 1; row <= 120; row++) {
// pdf.setRecord(String.format("%d_data;%d;%d;%d;%d;%d",
// row,
// row+1,
// row+2,
// row+3,
// row+4,
// row+5));
// }
//-----
// PDF出力処理 (V8.0.0 から変更あり)
//-----
// PDFファイルへの出力処理が実行されます。
// 正常に処理が完了した場合には指定されたPDFファイル名に該当の文書が作成されます。
//
// 【V8.0.0】ファイルパス指定方法の変更
// Storage の Publicディレクトリ からの相対パスを指定します。
//
int resultCode = pdf.makePDF(outPdfPath);
//-----
// 終了処理 (V7.x から変更なし)
//-----
// PDF作成処理の戻り値が0以外である場合は、処理中で何らかのエラーが発生している場合です。
// (出力ファイルは生成されません)
// 戻り値、及びlastMessageメソッドにより取得できるエラーメッセージから原因を特定し対応します。
//
String resultMessage = "";
if(resultCode == 0){
resultMessage = "Success !!";
}
else{
resultMessage = pdf.lastMessage();
}
// 以下Webブラウザ出力HTMLレコードです。
// 当JSPを呼び出し時に上記IOCela帳票からのPDFファイル生成が実施され、
// 正常に完了した場合には、出力PDFファイルをダウンロードする為のリンクが表示されます。
// 出力には処理戻り値、メッセージ取得内容を含みます。
%>
<DIV align="center" style="center; padding-top: 25px;">
<P><FONT size="+2">チュートリアルサンプル(IOCela)</FONT></P>
<FORM action="pdfd/javaee/tutorial/outfile" method="POST">
<TABLE border="1">
<TR>
<TH align="right" style="padding: 5px 10px;" nowrap>
出力PDFファイル
</TH>
<TD align="left" style="padding: 5px 10px;" nowrap>
<%= outPdfPath %>
</TD>
</TR>
<TR>
<TH align="right" style="padding: 5px 10px;" nowrap>
戻り値
</TH>
<TD align="left" style="padding: 5px 10px;" nowrap>
<%= resultCode %>
</TD>
</TR>
<TR>
<TH align="right" style="padding: 5px 10px;" nowrap>
メッセージ
</TH>
<TD align="left" style="padding: 5px 10px;" nowrap>
<%= resultMessage %>
</TD>
</TR>
<% if(resultCode == 0) { %>
<TR>
<TD colspan="2" align="center" style="padding: 5px 10px;" nowrap>
<INPUT type="hidden" name="file" value="<%= outPdfPath %>" />
<INPUT type="submit" value=" download " />
</TD>
</TR>
<% } %>
</TABLE>
</FORM>
</DIV>
記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリに、
celasample_act.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
3. 認可・ルーティング設定¶
intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。
- <入力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/celasample.jsp
- <出力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/celasample_act.jsp
4. 画面表示・プログラム実行¶
設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。
