IM-PDFDesigner for Accel Platform プログラミングガイド 第17版 2021-04-01

連票形式( IODBDOC )

連票形式( IODBDOC )のPDFファイルを作成するためのスクリプトプログラムを作成します。

スクリプト開発では、htmlファイルとJavaScriptファイルを作成する必要があります。

コラム

文字コードは UTF-8 でファイルを保存してください。

1. 入力画面の作成

テキストエディタを起動して、以下の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
<!DOCTYPE html>
<!--
  IODBDOCサンプル
  帳票データをコード内部で生成し、連票形式(IODBDOC)レイアウトを使用したPDF帳票ファイルを生成します。
  生成する際、PDFファイルへは文書情報/セキュリティ情報を付与します。
-->
<html lang="ja">
  <head>
    <title>IODBDOCサンプル</title>
    <meta charset="utf-8">
  </head>
  <body>
    <div align="center" style="padding-top: 25px;">
      <p><font size="+2">チュートリアルサンプル(IODBDOC)</font></p>
      <table border="1">
        <tr>
          <th align="center" style="padding: 5px 10px;" nowrap>
            出力PDFファイルは、 Public Storageの[pdfd/tutorial]<br>
            フォルダ配下に作成され、処理終了後に自動ダウンロードされます。
          </th>
        </tr>
        <tr>
          <th align="center" style="padding: 5px 10px;" nowrap>
            次のボタンをクリックすると、処理が開始されます。
          </th>
        </tr>
        <tr>
          <td align="center" style="padding: 5px 10px;" nowrap>
            <imart type="form" action="makePDF">
              <input type="submit" value=" PDF作成 ">
            </imart>
          </td>
        </tr>
      </table>
    </div>
  </body>
</html>

記述が完了したら< %HOME_PATH%/jssp/src/pdfd/tutorial >ディレクトリを作成し、< dbdocsample.html >というファイル名で保存してください。

ファイル名の大文字・小文字を区別する必要があります。

2. 入力画面処理の作成

JavaScriptファイルを作成します。

“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。

コラム

RESTインタフェースの機能を利用する場合は、利用クラスを IODBDoc から IODBDocRemote に変更します。

サンプルプログラムの 17行目のコメントを外し、16行目をコメントアウトしてください。

  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
//==============================================================================
// IODBDOCサンプル
//==============================================================================
// 帳票データをコード内部で生成し、連票形式(IODBDOC)レイアウトを使用したPDF帳票ファイルを生成します。
// 生成する際、PDFファイルへは文書情報/セキュリティ情報を付与します。
// 本サンプルに登場するAPIの詳細については、以下のAPIドキュメントを参照ください。
// https://www.intra-mart.jp/apidoc/pdfd/apilist-pdfd-jsdoc/doc/IODBDoc.html
// https://www.intra-mart.jp/apidoc/pdfd/apilist-pdfd_rest-jsdoc/doc/IODBDocRemote.html
function makePDF(request) {

    //----------------------------------------------------------------------------
    // インスタンス
    //   new IODBDoc(String)       : インスタンスの生成
    //   new IODBDocRemote(String) : インスタンスの生成(REST Service)
    //----------------------------------------------------------------------------
    var pdf = new IODBDoc('pdfd/tutorial/ordersheet.ddl');
    // var pdf = new IODBDocRemote('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)       : 印刷許可設定
    //                                   "PRINT_ENABLE"  : 許可
    //                                   "PRINT_DISABLE" : 不許可
    //   modifySecurity(String)      : 編集許可設定
    //                                   "MODIFY_ALL"                 : ページの抽出を除く、全ての編集を許可
    //                                   "MODIFY_FORM_AND_ANNOTATION" : 以下の編集を許可
    //                                                                   ・注釈の作成
    //                                                                   ・フォームフィールドの入力
    //                                                                   ・既存署名フィールドへの署名
    //                                   "MODIFY_FORM_AND_ASSEMBLY"   : 以下の編集を許可
    //                                                                   ・ページレイアウト
    //                                                                   ・フォームフィールドの入力
    //                                                                   ・既存署名フィールドへの署名
    //                                   "MODIFY_DISABLE"             : 不許可
    //   copySecurity(String)        : テキスト文字抽出/アクセシビリティ許可設定
    //                                   "COPY_AND_ACCESSBILITY_ENABLE"  : 許可
    //                                   "COPY_AND_ACCESSBILITY_DISABLE" : 不許可
    //----------------------------------------------------------------------------
    pdf.setSecurityPassword("secpasswd");
    pdf.printSecurity("PRINT_DISABLE");
    pdf.modifySecurity("MODIFY_DISABLE");
    pdf.copySecurity("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のサンプル帳票です。正規なものではありません。');
    // 行データ
    colData = [
        ['#品名', '数量', '単価', '備考'],
        ['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 (var i = 0; i < colData.length; i++) {
        pdf.setColStart();
        for (var j = 0; j < colData[i].length; j++) {
            pdf.setCol(colData[i][j]);
        }
        pdf.setColEnd();
    }

    //----------------------------------------------------------------------------
    // 出力処理
    //   toPDF(String) : PDFファイルを生成
    //   toIOD(String) : IODファイルを生成
    // ファイルの出力先には、Public Storage配下の任意の場所を指定できます。
    // (Public Storageからの相対パスで指定します)
    //----------------------------------------------------------------------------
    var outPdfName = "ordersheet_" + Identifier.get() + ".pdf";
    var outPdfPath = "pdfd/tutorial/" + outPdfName;
    var resultCode = pdf.toPDF(outPdfPath);
    if(resultCode >= 0){
        // 生成したPDFファイルをダウンロード
        var ps = new PublicStorage(outPdfPath);
        Module.download.send(ps, outPdfName);
    }
    else{
        Module.alert.reload("SYSTEM.ERR", "(" + resultCode + ")" + pdf.getMessage());
    }
}

記述が完了したら< %HOME_PATH%/jssp/src/pdfd/tutorial >ディレクトリに、< dbdocsample.js >というファイル名で保存してください。

ファイル名の大文字・小文字を区別する必要があります。

3. 認可・ルーティング設定

intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。

  • path属性: 任意のURL文字列
  • page属性: pdfd/tutorial/dbdocsample

4. 画面表示・プログラム実行

設定したURLにアクセスすると、以下の画面が表示されます。

「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。

実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。

../../../../_images/jssp_iodbdoc.PNG

5. 確認

プログラムが正しく実行されると< Public Storage >の< pdfd/tutorial/ >にPDFファイルが作成されます。

このファイルがPDFのビューア (AdobeReaderなど) で正しく表示できれば、すべての処理が正しく行われたことになります。