連票形式( IODBDOC )¶
連票形式( IODBDOC )のPDFファイルを作成するための JSPプログラムを作成します。
JSPプログラムに記述されたPDF生成処理は、アプリケーション上で実行されます。
ここでは、JSPプログラムにPDF生成処理を記載していますが、JSPプログラムから分離してJavaプログラムとして作成することも可能です。
コラム
文字コードは UTF-8 でファイルを保存してください。
1. 入力画面処理の作成¶
入力画面処理のプログラムを記述します。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<!--
IODBDOCサンプル
帳票データをコード内部で生成し、連票形式(IODBDOC)レイアウトを使用したPDF帳票ファイルを生成します。
生成する際、PDFファイルへは文書情報/セキュリティ情報を付与します。
-->
<html lang="ja">
<head>
<title>IODBDOCサンプル</title>
<meta charset="utf-8">
</head>
<body>
<div align="center" style="center; padding-top: 25px;">
<p><font size="+2">チュートリアルサンプル(IODBDOC)</font></p>
<form action="pdfd/javaee/tutorial/dbdocsample_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>
次のボタンをクリックすると、処理が開始されます。
</th>
</tr>
<tr>
<td align="center" style="padding: 5px 10px;" nowrap>
<input type="submit" value=" PDF作成 " />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
記述が完了したら< %HOME_PATH%/view/pdfd/tutorial >ディレクトリを作成し、< dbdocsample.jsp >というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
2. 出力画面処理の作成¶
出力画面処理のプログラムを記述します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。
コラム
RESTインタフェースの機能を利用する場合は、利用クラスを DBDoc から DBDocRemote に変更します。
サンプルプログラムの 23行目のコメントを外し、22行目をコメントアウトしてください。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="jp.co.intra_mart.foundation.service.client.file.PublicStorage"%>
<%@ page import="jp.co.intra_mart.foundation.service.client.information.Identifier"%>
<%@ page import="jp.co.intra_mart.product.pdfmaker.PDFLibSecurity"%>
<%@ page import="jp.co.intra_mart.product.pdfmaker.net.DBDoc"%>
<%
//==============================================================================
// IODBDOCサンプル
//==============================================================================
// 帳票データをコード内部で生成し、連票形式(IODBDOC)レイアウトを使用したPDF帳票ファイルを生成します。
// 生成する際、PDFファイルへは文書情報/セキュリティ情報を付与します。
// 本サンプルに登場するAPIの詳細については、以下のAPIドキュメントを参照ください。
// https://www.intra-mart.jp/apidoc/pdfd/apilist-pdfd-javadoc/doc/index.html
// https://www.intra-mart.jp/apidoc/pdfd/apilist-pdfd_rest-javadoc/doc/index.html
//----------------------------------------------------------------------------
// インスタンス
// new DBDoc(String) : インスタンスの生成
// new DBDocRemote(String) : インスタンスの生成(REST Service)
//----------------------------------------------------------------------------
DBDoc pdf = new DBDoc("pdfd/tutorial/ordersheet.ddl");
//DBDocRemote pdf = new DBDocRemote("pdfd/tutorial/ordersheet.ddl");
//----------------------------------------------------------------------------
// 文書情報設定
// defineTitle(String) : タイトルの設定
// defineSubTitle(String) : サブタイトルの設定
// defineAuthor(String) : 作成者の設定
// defineApplication(String) : 作成アプリケーション名の設定
//----------------------------------------------------------------------------
pdf.defineTitle("PDFデザイナー体験");
pdf.defineAuthor("IM 太郎");
//----------------------------------------------------------------------------
// セキュリティ設定
// setOpenPassword(String) : オープンパスワード(32文字まで)
// setSecurityPassword(String) : セキュリティパスワード(32文字まで)
// printSecurity(String) : 印刷許可設定
// PDFLibSecurity.PRINT_ENABLE : 許可
// PDFLibSecurity.PRINT_DISABLE : 不許可
// modifySecurity(String) : 編集許可設定
// PDFLibSecurity.MODIFY_ALL : ページの抽出を除く、全ての編集を許可
// PDFLibSecurity.MODIFY_FORM_AND_ANNOTATION : 以下の編集を許可
// ・注釈の作成
// ・フォームフィールドの入力
// ・既存署名フィールドへの署名
// PDFLibSecurity.MODIFY_FORM_AND_ASSEMBLY : 以下の編集を許可
// ・ページレイアウト
// ・フォームフィールドの入力
// ・既存署名フィールドへの署名
// PDFLibSecurity.MODIFY_DISABLE : 不許可
// copySecurity(String) : テキスト文字抽出/アクセシビリティ許可設定
// PDFLibSecurity.COPY_AND_ACCESSBILITY_ENABLE : 許可
// PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE : 不許可
//----------------------------------------------------------------------------
pdf.setSecurityPassword("secpasswd");
pdf.printSecurity(PDFLibSecurity.PRINT_DISABLE);
pdf.modifySecurity(PDFLibSecurity.MODIFY_DISABLE);
pdf.copySecurity(PDFLibSecurity.COPY_AND_ACCESSBILITY_DISABLE);
//----------------------------------------------------------------------------
// データの埋め込み
// setGlobal(String, String) : 外部変数値を設定
// setColStart() : データ行の設定を開始
// setCol(String) : データ行にカラムを追加
// setColEnd() : データ行の設定を終了
//----------------------------------------------------------------------------
// 外部変数
pdf.setGlobal("orderto", "株式会社YSS");
pdf.setGlobal("orderno", "20050808-08");
pdf.setGlobal("subject", "IOWebDOC他");
pdf.setGlobal("header_subtotal", "");
pdf.setGlobal("header_excise", "");
pdf.setGlobal("header_total", "");
pdf.setGlobal("paycond", "御社指定の通り");
pdf.setGlobal("deliveryday", "特に指定なし");
pdf.setGlobal("listremarks", "この注文書は、IOWebDOCのサンプル帳票です。正規なものではありません。");
// 行データ
String[] data = {
"#品名", "数量", "単価", "備考",
"IOWebDOC V2.0 Windows版", "10", "304500", "",
"IOWebDOC Windows版 年間保守", "10", "456750", "",
"IOWebDOC V2.0 Solaris版", "10", "514500", "",
"IOWebDOC Solaris版 年間保守", "10", "771750", "",
"PDFオートコンバータ EX V1.0", "10", "500000", "",
"PDFオートコンバータ EX 年間保守", "10", "750000", "",
"PDFコンバータ V3.0", "100", "4500", "",
"PDFコンバータ 年間保守", "100", "67500", "",
"PDF製本工房 V1.5", "10", "17850", "",
"PDF製本工房 年間保守", "10", "26775", "",
};
// 1行ずつ値を設定
for( int i = 0; i < data.length; ) {
// データ行の設定を開始
pdf.setColStart();
// データ行にカラムを追加
// 品名
pdf.setCol(data[i++]);
// 数量
pdf.setCol(data[i++]);
// 単価
pdf.setCol(data[i++]);
// 備考
pdf.setCol(data[i++]);
// データ行の設定を終了
pdf.setColEnd();
}
String resultMessage = "";
//----------------------------------------------------------------------------
// 出力処理
// toPDF(String) : PDFファイルを生成
// toIOD(String) : IODファイルを生成
// ファイルの出力先には、Public Storage配下の任意の場所を指定できます。
// (Public Storageからの相対パスで指定します)
//----------------------------------------------------------------------------
String outPdfName = "ordersheet_" + new Identifier().get() + ".pdf";
String outPdfPath = "pdfd/tutorial/" + outPdfName;
int resultCode = pdf.makePDF(outPdfPath);
if(resultCode >= 0){
resultMessage = "Success !!";
}
else{
resultMessage = pdf.lastMessage();
}
%>
<!--
以下は、Webブラウザ側のHTMLページです。
本JSPを呼び出される際に、上述の処理で連票帳票(IODBDOC)のPDFファイルが生成され、
正常に完了した場合は、出力したPDFファイルをダウンロードする為のリンクが表示されます。
ページの出力には、処理の戻り値、処理結果のメッセージを含みます。
-->
<!DOCTYPE html>
<html lang="ja">
<head>
<title>IODBDOCサンプル</title>
<meta charset="utf-8">
</head>
<body>
<div align="center" style="center; padding-top: 25px;">
<p><font size="+2">チュートリアルサンプル(IODBDOC)</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>
</body>
</html>
記述が完了したら< %HOME_PATH%/view/pdfd/tutorial >ディレクトリに、< dbdocsample_act.jsp >というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
3. 認可・ルーティング設定¶
intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。
- <入力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/dbdocsample.jsp
- <出力画面処理>
- path属性: 任意のURL文字列
- page属性: WEB-INF/view/pdfd/tutorial/dbdocsample_act.jsp
4. 画面表示・プログラム実行¶
設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。