単票形式¶
単票形式の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">チュートリアルサンプル(IODoc)</FONT></P> <FORM action="pdfd/javaee/tutorial/docsample_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 ディレクトリを作成し、docsample.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.CSVDoc" %> <% //--- // CSVDOCサンプル(PDF-Desiner V8.0.0) //--- // 単票用レイアウトファイルと CSV 形式のデータファイル // からIOD中間ファイル、PDFファイルを作成するための機能を提供します。 // // 本チュートリアルでは、単票用レイアウトファイルに // DATデータの設定後、PDFファイルを生成しています。 // //----- // 出力ファイルパスの設定 //----- // 出力ファイルは、Storage上のPublicディレクトリ以下の任意の位置に出力できます。 // // Publicディレクトリとは、 // %PUBLIC_STORAGE_PATH%/public/storage/ までを指しています。 // // また、ファイル名は PublicStorageクラスを使用しStorage上に同一ファイルがないか確認し // 同一ファイルが存在する場合は、ファイル名に"_"(アンダーバー)+数値"を付加しています。 // // *** このサンプルでは完全な一意性は確保できません。 *** // String outpath = "pdfd/tutorial/"; // 出力フォルダ String prefix = "nouhinkensa"; // 出力ファイル接頭文字 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から変更あり) //----- // メモリオブジェクト方式のため、入力IODのみ指定。 // CSVファイル形式の場合はCCDファイルも指定します。 // // 【V8.0.0】ファイルパス指定方法の変更 // Storage の Publicディレクトリ からの相対パスを指定します。 // CSVDoc pdf = new CSVDoc("pdfd/tutorial/nouhinkensa.iod", ""); //----- // 文書情報設定 (V7.x から変更なし) //----- // 文書情報セット(各項目最大255文字まで) // // defineTitle(String) タイトルの設定 // defineSubTitle(String) サブタイトルの設定 // defineAuthor(String) 作成者の設定 // defineApplication(String) 作成アプリケーション名の設定 // // pdf.defineTitle("納品書兼検査票"); 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); //----- // ページデータの生成 (V7.x から変更なし) //----- // 本チュートリアルでは、メモリオブジェクト形式でのデータ設定を実施します。 // CSV/DATファイルオブジェクトでデータを与える場合には、 // ここでそれぞれ入力ファイルを設定します。 // // 埋め込み識別子及びデータ // (DBデータ検索等により取得、又はコード内で埋め込みデータを生成することの可能) // String[][] doc_data = { {"kyakusaki","OrderComNo","nouhin_No","tantou","nouhinsaki", "tyuumon_No","hinmei_code","hinmei","h_memo","syukka_day", "suuryou","tani","tanka","j_memo","nouki", "shiji_suuryou","nounyu_suuryou","konpou_suuryou","zei","zeinuki", "zeikomi","BarCode1","bar1","bar2","bar3"}, {"NTTデータイントラマート","001","001-001","IM 太郎","IM商事", "C-001-001","YPDFAUTO-001","IM-PDFオートコンバータ","","2004/07/01", "2","式","1000000","","2008/07/05", "2","2","2","100000","2000000", "2100000","CODE39","CODE39","CODE39","CODE39"} }; //----- // テキスト関連識別子データ埋め込み (V7.x から変更なし) //----- // 通常テキスト文字列を埋め込みします。 // (※複数行カラムデータの識別子名へは、[識別子#行番号]と編集してセットします) // for(i = 0;i < doc_data[0].length;i++) { pdf.setData(doc_data[0][i],doc_data[1][i]); } //----- // 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">チュートリアルサンプル(IODoc)</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 ディレクトリに、docsample_act.jsp というファイル名で保存して下さい。この時、ファイル名の大文字・小文字は厳密な意味を持ちますので、注意して下さい。
3. 認可・ルーティング設定¶
intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をして下さい。
- <入力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/docsample.jsp
- <出力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/docsample_act.jsp
4. 画面表示・プログラム実行¶
設定したURLにアクセスすると、以下の画面が表示されます。「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。実行エラーが発生した場合には、エラーメッセージの内容に従いJSPファイルを修正してください。![]()