単票形式¶
単票形式の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. 出力画面処理の作成¶
次に出力画面処理のプログラムを記述します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。
コラム
RESTインタフェースの機能を利用する場合は、利用クラスを CSVDoc から CSVDocRemote に変更します。サンプルプログラムの 51行目のコメントを外し、50行目をコメントアウトしてください。
<%@ 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", "");
//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】ファイルパス指定方法の変更
// 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ファイルを修正してください。
