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

連票形式

連票形式の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
<!--
// CSVCELAサンプル(PDF-Desiner V8.0.0)
// IOCela帳票データをコード内部で生成しPDF帳票ファイルを生成します。
// PDFファイルへは、文書情報/セキュリティ情報を付加し、出力しています。
    -->
<DIV align="center" style="center; padding-top: 25px;">
    <P><FONT size="+2">チュートリアルサンプル(IOCela)</FONT></P>
    <TABLE border="1">
        <TR>
            <TH align="center" style="padding: 5px 10px;" nowrap>
                出力PDFファイルは、<BR>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>
記述が完了したら %HOME_PATH%/jssp/src/pdfd/tutorial ディレクトリを作成し、
celasample.html というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。

2. 入力画面処理の作成

次にJavaScriptファイルを作成します。
“//”から始まる行は、コメントですので無視して記述頂いても問題ありません。

コラム

RESTインタフェースの機能を利用する場合は、利用クラスを IOCela から IOCelaRemote に変更します。サンプルプログラムの 46行目のコメントを外し、45行目をコメントアウトしてください。

  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
//---
// CSVCELAサンプル(PDF-Desiner V8.0.0)
//---
// IOCela帳票データをコード内部で生成しPDF帳票ファイルを生成します。
// PDFファイルへは、文書情報/セキュリティ情報を付加し、出力しています。
function makePDF(request){

    //-----
    // 出力ファイルパスの設定
    //-----
    // 出力ファイルは、Storage上のPublicディレクトリ以下の任意の位置に出力できます。
    //
    //     Publicディレクトリとは、
    //         %PUBLIC_STORAGE_PATH%/public/storage/ までを指しています。
    //
    // また、ファイル名は PublicStorageクラスを使用しStorage上に同一ファイルがないか確認し
    // 同一ファイルが存在する場合は、ファイル名に"_"(アンダーバー)+数値"を付加しています。
    //
    // *** このサンプルでは完全な一意性は確保できません。 ***
    //
    var sessionid  = Client.identifier();    // セッションIDの取得
    var dirPath    = "pdfd/tutorial/";        // 出力フォルダ
    var prefix     = "designer";          // 出力ファイル接頭文字
    var suffix     = ".pdf";                 // 出力ファイル拡張子
    var outPdfName = prefix + "_" + sessionid + suffix;
    var outPdfPath = dirPath + outPdfName;   // pdfd/tutorial/nouhinken_[sessionid].pdf

    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から変更あり)
    //-----
    // DEFファイルを指定
    //
    // 【V8.0.0】ファイルパス指定方法の変更
    //           Storage の Publicディレクトリ からの相対パスを指定します。
    //
    var pdf = new IOCela("pdfd/tutorial/designer.def");
    //var pdf = new IOCelaRemote("pdfd/tutorial/designer.def");

    //-----
    // 文書情報設定 (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")   変更許可
    //                                                      ("ページレイアウト",
    //                                                       "フォームフィールドの入力",
    //                                                       "既存の署名フィールドに署名"を許可)
    //
    // <テキスト文字抽出許可及びアクセシビリティ許可設定>
    //     pdf.copySecurity("COPY_AND_ACCESSBILITY_DISABLE") 不許可
    //     pdf.copySecurity("COPY_AND_ACCESSBILITY_ENABLE")  許可
    //
    pdf.setSecurityPassword("secpasswd");
    pdf.printSecurity("PRINT_DISABLE");
    pdf.modifySecurity("MODIFY_DISABLE");
    pdf.copySecurity("COPY_AND_ACCESSBILITY_DISABLE");

    //-----
    // ページデータの生成 (V7.x から変更なし)
    //-----
    // 本チュートリアルでは、レコードオブジェクト形式でのデータ設定を実施します。
    // またIODocレイアウトの重ね合わせを実施し、
    // 内部データをデータオブジェクト形式で設定します。
    //
    // CSVファイルセット
    // ファイル内容はDEFファイル上のデータ形式設定に沿って各カラムに値が挿入されます。
    //
    pdf.setCSV("pdfd/tutorial/designer_data.csv");

    // CSVデータをコード内部でセットする場合では、
    // 以下のようにsetRecordに1レコード分のデータ文字列をセットします。
/*
    pdf.setRecord("株式会社NTTデータイントラマート    ",
                  "川崎太郎    ",
                  "2008/10/1    ",
                  "株式会社川崎商事    ",
                  "PDFデザイナー    ",
                  "490000    ",
                  "1    ",
                  "備考1    ",
                  "備考2");
*/

    //-----
    // PDF出力処理 (V8.0.0 から変更あり)
    //-----
    // PDFファイルへの出力処理が実行されます。
    // 正常に処理が完了した場合には指定されたPDFファイル名に該当の文書が作成されます。
    //
    // 【V8.0.0】ファイルパス指定方法の変更
    //           Storage の Publicディレクトリ からの相対パスを指定します。
    //
    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 ディレクトリに、
celasample.js というファイル名で保存してください。
ファイル名の大文字・小文字を区別する必要があります。

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

intra-mart Accel Platform の認可及びルーティング設定に従い、以下の設定をしてください。
  • path属性: 任意のURL文字列
  • page属性: pdfd/tutorial/celasample

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

設定したURLにアクセスすると、以下の画面が表示されます。
「PDF作成」ボタンをクリックすると、PDFファイルが作成され処理終了後にダウンロードが開始されます。
実行エラーが発生した場合には、エラーメッセージの内容に従いJavaScriptファイルまたはhtmlファイルを修正してください。
../../../../_images/iocela1.png

5. 確認

プログラムが正しく実行されると Public Storage の pdfd/tutorial/ に PDFファイルが作成されます。
このファイルがPDFのビューア (AdobeReaderなど) で正しく表示できれば、すべての処理が正しく行われたことになります。