6.4.1.1. 単票形式¶
単票形式のPDFファイルを作成するためのスクリプトプログラムを作成します。
スクリプト開発では、htmlファイルとJavaScriptファイルを作成する必要があります。
このチュートリアルでは、サンプルとしてインストールされているレイアウトファイルを利用しています。
注意
ファイル保存時の文字コードは、 UTF-8 を指定してください。
入力画面の作成¶
テキストエディタを起動して、以下のHTMLを記述します。
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 35 36 37 38 | <!--
// CSVDOCサンプル(PDF-Desiner V8.0.0)
// IODoc帳票データをコード内部で生成し、単票用レイアウトの
// PDF帳票ファイルを生成します。
// PDFファイルへは、文書情報/セキュリティ情報を付加し、出力しています。
-->
<imart type="head">
<title>IM-PDFDesigner-チュートリアル-スクリプト開発モデル-IODOC</title>
</imart>
<div class="imui-title">
<h1>IM-PDFDesigner チュートリアル スクリプト開発モデル IODOC</h1>
</div>
<div class="imui-form-container">
<div class="imui-chapter-title"><h2>IODOC プログラム実行</h2></div>
<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生成を開始します。<br>
生成後以下のディレクトリに出力されるほか、自動ダウンロードも行われます。</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">
<imart type="form" action="makePDF">
<imart type="imuiButton" value="PDF作成" class="imui-medium-button" onClick="form.submit()">
</imart>
</div>
</div>
|
記述が完了したら %HOME_PATH%/jssp/src/pdfd/tutorial ディレクトリを作成し、
docsample.html というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
入力画面処理の作成¶
次に、JavaScriptファイルを作成します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。
コラム
RESTインタフェースの機能を利用する場合は、利用クラスを IODoc から IODocRemote に変更します。サンプルプログラムの 43行目のコメントを外し、42行目をコメントアウトしてください。
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | //---
// CSVDOCサンプル(PDF-Desiner V8.0.0)
//---
// IODoc帳票データをコード内部で生成し、単票用レイアウトのPDF帳票ファイルを生成します。
// PDFファイルへは、文書情報/セキュリティ情報を付加し、出力しています。
function makePDF(request) {
//-----
// 出力ファイルパスの設定
//-----
// 出力ファイルは、 %PUBLIC_STORAGE_PATH% 以下の任意の位置に出力できます。
// また、ファイル名は PublicStorageクラスを使用しStorage上に同一ファイルがないか確認し
// 同一ファイルが存在する場合は、ファイル名に"_"(アンダーバー)+数値"を付加しています。
//
// *** このサンプルでは完全な一意性は確保できません。 ***
//
var sessionid = Client.identifier(); // セッションIDの取得
var dirPath = "pdfd/tutorial/"; // 出力フォルダ
var prefix = "nouhinkensa"; // 出力ファイル接頭文字
var suffix = ".pdf"; // 出力ファイル拡張子
var outPdfName = prefix + "_" + sessionid + suffix;
var outPdfPath = dirPath + outPdfName;
var ps = new PublicStorage(outPdfPath);
var i = 1;
while (ps.exists()) {
outPdfName = prefix + "_" + sessionid + "_" + i + suffix;
outPdfPath = dirPath + outPdfName;
ps = new PublicStorage(outPdfPath);
i++;
}
//-----
// インスタンス生成 (V8.0.0から変更あり)
//-----
// メモリオブジェクト方式のため、入力IODのみ指定。
// CSVファイル形式の場合はCCDファイルも指定します。
//
// 【V8.0.0】ファイルパス指定方法の変更
// %PUBLIC_STORAGE_PATH% からの相対パスを指定します。
//
var pdf = new IODoc("pdfd/tutorial/nouhinkensa.iod", "");
//var pdf = new IODocRemote("pdfd/tutorial/nouhinkensa.iod", "");
//-----
// 文書情報設定 (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("PRINT_ENABLE") 印刷許可
// printSecurity("PRINT_DISABLE") 印刷不許可
//
// <変更許可設定>
// modifySecurity("MODIFY_DISABLE") 変更不許可
// modifySecurity("MODIFY_ALL") 変更許可
// (ページの抽出を除くすべての変更を許可)
// modifySecurity("MODIFY_FORM_AND_ANNOTATION") 変更許可
// ("注釈の作成","フォームフィールドの入力",
// "既存の署名フィールドに署名"を許可)
// modifySecurity("MODIFY_FORM_AND_ASSEMBLY") 変更許可
// ("ページレイアウト",
// "フォームフィールドの入力",
// "既存の署名フィールドに署名"を許可)
//
// <テキスト文字抽出許可及びアクセシビリティ許可設定>
// copySecurity("COPY_AND_ACCESSBILITY_DISABLE") 不許可
// copySecurity("COPY_AND_ACCESSBILITY_ENABLE") 許可
//
pdf.setSecurityPassword("secpasswd");
pdf.printSecurity("PRINT_DISABLE");
pdf.modifySecurity("MODIFY_DISABLE");
pdf.copySecurity("COPY_AND_ACCESSBILITY_DISABLE");
//-----
// ページデータの生成 (V7.x から変更なし)
//-----
// 本チュートリアルでは、メモリオブジェクト形式でのデータ設定を実施します。
// CSV/DATファイルオブジェクトでデータを与える場合には、
// ここでそれぞれ入力ファイルを設定します。
//
// 埋め込み識別子及びデータ
// (DBデータ検索等により取得、又はコード内で埋め込みデータを生成することの可能)
//
var doc_data = new Array(2);
doc_data[0] = new Array(
"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");
doc_data[1] = new Array(
"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(var i = 0;i < doc_data[0].length;i++) {
pdf.setData(doc_data[0][i],doc_data[1][i]);
}
//-----
// 文字枠データの埋め込み (V7.x から変更なし)
//-----
// 文字枠への出力は下記の順で実施する。
// 開始宣言[setTextBoxStart]→データセット[setTextBoxData]→終了宣言[setTextBoxEnd]
//
// データセットは1回で1行分のデータを出力できます。
// (文字枠より大きい文字列長のデータが指定された場合は自動改行されます。)
// 複数回データセットを呼び出すことで、改行を含めた文字列のセットが可能です。
//
pdf.setTextBoxStart("syoran");
pdf.setTextBoxData("至急納品");
pdf.setTextBoxEnd();
//-----
// ページ区切りを出力 (V7.x から変更なし)
//-----
// 複数ページとなる伝票を印刷する場合、印刷ページ区切りを指定することで改ページ位置を指定できます。
//
// pdf.setOutPage();
//-----
// PDF出力処理 (V8.0.0 から変更あり)
//-----
// PDFファイルへの出力処理が実行されます。
// 正常に処理が完了した場合には指定されたPDFファイル名に該当の文書が作成されます。
//
// 【V8.0.0】ファイルパス指定方法の変更
// %PUBLIC_STORAGE_PATH% からの相対パスを指定します。
//
var resultCode = pdf.toPDF(outPdfPath);
//-----
// 終了処理 (V8.0.0 から変更あり)
//-----
// PDF作成処理の戻り値が0以外である場合は、処理中で何らかのエラーが発生している場合です。
// (出力ファイルは生成されません)
// 戻り値、及びlastMessageメソッドにより取得できるエラーメッセージから原因を特定し対応します。
//
// 【V8.0.0】VirtualFileクラス の廃止
// intra-mart API の VirtualFileクラスが廃止されました。
// 代替クラスとして、PublicStorageクラス を使用します。
// 使用方法は、VirtualFileクラスと同じです。
//
if(resultCode == 0){
// 結果PDFファイルのダウンロード
var pdfpath = new PublicStorage(outPdfPath);
Module.download.send(pdfpath, outPdfName);
}
else{
Module.alert.reload("SYSTEM.ERR", "(" + resultCode + ")" + pdf.getMessage());
}
}
|
記述が完了したら %HOME_PATH%/jssp/src/pdfd/tutorial ディレクトリに、
docsample.js というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。
認可・ルーティング設定¶
intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。
- path属性: 任意のURL文字列
- page属性: pdfd/tutorial/docsample
画面表示・プログラム実行¶
設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。