連票形式¶
連票形式の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. 出力画面処理の作成¶
次に出力画面処理のプログラムを記述します。“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。<%@ 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"); //----- // 文書情報設定 (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ファイルを修正してください。![]()