6.4.2.1. 単票形式¶
単票形式のPDFファイルを作成するための JSPプログラムを作成します。
JSPプログラムに記述されたPDF生成処理は、アプリケーション上で実行されます。
ここでは、JSPプログラムにPDF生成処理を記載していますが、
JSPプログラムから分離してJavaプログラムとして作成することも可能です。
コラム
文字コードは UTF-8 でファイルを保存してください。
入力画面処理の作成¶
入力画面処理のプログラムを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="imui" uri="http://www.intra-mart.co.jp/taglib/imui" %>
<imui:head>
<title>IM-PDFDesigner-チュートリアル-JavaEE開発モデル-IODOC</title>
</imui:head>
<div class="imui-title">
<h1>IM-PDFDesigner チュートリアル JavaEE開発モデル IODOC</h1>
</div>
<div class="imui-form-container">
<div class="imui-chapter-title"><h2>IODOC プログラム実行</h2></div>
<form action="pdfd/javaee/tutorial/docsample_act" method="POST">
<div class="imui-box-supplementation">
<div class="supplementation-left-m">
<span class="im-ui-icon-common-24-information"></span>
</div>
<p class="imui-pgh-section supplementation-left-m">
「PDF作成」ボタンをクリックすることでPDF生成を開始します。</p>
</div>
<table class="imui-table">
<tbody>
<tr>
<th class="wd-225px">出力PDFファイルディレクトリ</th>
<td>%PUBLIC_STORAGE_PATH%/pdfd/tutorial/</td>
</tr>
</tbody>
</table>
<div class="imui-operation-parts">
<imui:button value="PDF作成" class="imui-medium-button" onClick="form.submit()" />
</div>
</form>
</div>
|
記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリを作成し、
docsample.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
出力画面処理の作成¶
次に出力画面処理のプログラムを記述します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。
コラム
RESTインタフェースの機能を利用する場合は、利用クラスを CSVDoc から CSVDocRemote に変更します。
サンプルプログラムの5行目、および、49行目のコメントを外し、4行目、および、48行目をコメントアウトしてください。
<%@ 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" %>
<%-- <%@ page import="jp.co.intra_mart.product.pdfmaker.net.rest.CSVDocRemote" %> --%>
<%@ taglib prefix="imui" uri="http://www.intra-mart.co.jp/taglib/imui" %>
<%
//---
// CSVDOCサンプル(PDF-Desiner V8.0.0)
//---
// 単票用レイアウトファイルと CSV 形式のデータファイル
// からIOD中間ファイル、PDFファイルを作成するための機能を提供します。
//
// 本チュートリアルでは、単票用レイアウトファイルに
// DATデータの設定後、PDFファイルを生成しています。
//
//-----
// 出力ファイルパスの設定
//-----
// 出力ファイルは、 %PUBLIC_STORAGE_PATH% 以下の任意の位置に出力できます。
// また、ファイル名は 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】ファイルパス指定方法の変更
// %PUBLIC_STORAGE_PATH% からの相対パスを指定します。
//
CSVDoc pdf = new CSVDoc("pdfd/tutorial/nouhinkensa.iod", "");
//CSVDocRemote pdf = new CSVDocRemote("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】ファイルパス指定方法の変更
// %PUBLIC_STORAGE_PATH% からの相対パスを指定します。
//
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ファイルをダウンロードする為のリンク
// が表示されます。
// 出力には処理戻り値、メッセージ取得内容を含みます。
%>
<imui:head>
<title>IM-PDFDesigner-チュートリアル-JavaEE開発モデル-IODOC</title>
</imui:head>
<div class="imui-title">
<h1>IM-PDFDesigner チュートリアル JavaEE開発モデル IODOC</h1>
</div>
<div class="imui-toolbar-wrap">
<div class="imui-toolbar-inner">
<ul class="imui-list-toolbar">
<li><a href="javascript:history.back()" class="imui-toolbar-icon" title="戻る">
<span class="im-ui-icon-common-16-back"></span></a></li>
</ul>
</div>
</div>
<div class="imui-form-container">
<div class="imui-chapter-title"><h2>実行結果</h2></div>
<form action="pdfd/javaee/tutorial/outfile" method="POST">
<table class="imui-table">
<tbody>
<tr>
<th class="wd-225px">出力PDFファイル</th>
<td>%PUBLIC_STORAGE_PATH%/<%= outPdfPath %></td>
</tr>
<tr>
<th class="wd-225px">戻り値</th>
<td><%= resultCode %></td>
</tr>
<tr>
<th class="wd-225px">メッセージ</th>
<td><%= resultMessage %></td>
</tr>
</tbody>
</table>
<% if(resultCode == 0) { %>
<div class="imui-operation-parts">
<imui:button value="download" class="imui-medium-button" onClick="form.submit()" />
<input type="hidden" name="file" value="<%= outPdfPath %>" />
</div>
<% } %>
</form>
</div>
記述が完了したら %HOME_PATH%/view/pdfd/tutorial ディレクトリに、
docsample_act.jsp というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
認可・ルーティング設定¶
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
画面表示・プログラム実行¶
設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJSPファイルを修正してください。
