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

8.2. ジョブスケジューラ・非同期処理機能での実装手順

ジョブスケジューラ・非同期処理機能にて、参照画面をPDF出力する API では、以下のパラメータが必要です。

  • アプリケーションID
  • ユーザデータID
  • 対象の参照画面を表示可能なユーザのユーザコード
PDF出力するAPIは、以下の機能で利用できます。
ジョブスケジューラ・非同期処理機能の実装方法については、それぞれのドキュメントを参照してください。

コラム

参照画面をPDF出力する API では、処理内部でショートカットURLを作成します。
そのため、対象の参照画面を表示可能なユーザのユーザコードを指定する必要があります。

コラム

ワークフローの詳細画面をPDF出力する場合は、対象の案件が完了している必要があります。
そのため、IM-Workflow の到達処理や案件終了処理では、直接利用することはできません。
案件終了処理から非同期処理としてや、ジョブスケジューラにて利用してください。
ワークフローの案件の状態は、「 UserMatterStatusオブジェクト 」で確認することできます。

コラム

複数フォーム画面をPDF出力する場合、「wkhtmltopdf」のバージョンによっては、各画面毎に横幅を基準に出力サイズを自動調整します。
そのため、各画面毎に毎に異なった拡大率で出力される場合があります。
変更する場合は、「wkhtmltopdf」のオプションを指定してください。

注意

Office 365 連携 でPDFを出力する場合、javascript-delayオプションが必要となるため、wkhtmltopdfの0.10.0以降をご利用ください。

8.2.1. JavaEE開発モデル

JavaEE開発モデルにおいて、PDF出力処理を実装する手順を示します。

8.2.1.1. 実装規約

JavaEE開発モデルにおいて、PDF出力処理を実装する場合、下記の制約に従って実装する必要があります。

  • jp.co.intra_mart.foundation.forma.pdf.ApplicationPDFConverterAsync (以下 ApplicationPDFConverterAsync と略す)を利用します。
  • 出力されたPDFファイルはできる限り出力処理後に削除することを推奨します。

8.2.1.2. 実装例1:オプション指定なし

 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
import java.io.File;

import jp.co.intra_mart.foundation.forma.ApplicationPDFConverterAsync;
import jp.co.intra_mart.foundation.forma.exception.FormaSystemException;


    // パラメータ
    final String applicationId = "XX"; // アプリケーションID
    final String userDataId    = "XX"; // ユーザデータID
    final String userCd        = "XX"; // ユーザコード

    // PDF出力処理
    final ApplicationPDFConverterAsync pdfConverter = new ApplicationPDFConverterAsync();
    File pdfFile = null;
    try {
        pdfFile = pdfConverter.createPDFapplicationId, userDataId, userCd);
        
        : (ファイル操作処理)
        
    } catch(final FormaSystemException e) {
        // TODO エラー処理
        e.printStacktrace();
    } finally {
        // 出力されたPDFファイルを削除
        if (pdfFile != null && pdfFile.exists()) {
            pdfFile.delete();
        }
    }

8.2.1.3. 実装例2:オプション指定あり

 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
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import jp.co.intra_mart.foundation.forma.ApplicationPDFConverterAsync;
import jp.co.intra_mart.foundation.forma.exception.FormaSystemException;

    // パラメータ
    final String applicationId = "XX"; // アプリケーションID
    final String insertId      = "XX"; // ユーザデータID
    final String userCd        = "XX"; // ユーザコード
    
    // wkhtmltopdfオプション
    // forma-pdf-config.xmlの設定内容を取得
    final List<String> options = PDFConfigOption.getList();
    // リンク無効を追加
    options.add("--disable-external-links");
    // 印刷モードを追加
    options.add("--print-media-type");
    
    // PDF出力処理
    final ApplicationPDFConverterAsync pdfConverter = new ApplicationPDFConverterAsync();
    File pdfFile = null;
    try {
        pdfFile = pdfConverter.createPDF(applicationId, insertId, userCd, options);
        
        : (ファイル操作処理)
        
    } catch(final FormaSystemException e) {
        // TODO エラー処理
        e.printStacktrace();
    } finally {
        // 出力されたPDFファイルを削除
        if (pdfFile != null && pdfFile.exists()) {
            pdfFile.delete();
        }
    }
  • PDFファイルの出力方向を標準の縦方向から横方向に変更する場合、オプション指定で以下の内容を記述してください。

    options.add("--orientation");
    options.add("Landscape");
    

コラム

オプションに設定値がある場合は、上記のようにoptionsに分けて設定してください。

コラム

ロードバランシング環境にて、改善モジュールを利用している場合は、APIの引数としてオプションを指定する必要があります。
オプションの設定値については、以下を参照ください。

8.2.1.4. 実装例3:オプション指定あり、任意のリクエストパラメータ指定あり

 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
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import jp.co.intra_mart.foundation.forma.ApplicationPDFConverterAsync;
import jp.co.intra_mart.foundation.forma.exception.FormaSystemException;

    // パラメータ
    final String applicationId = "XX"; // アプリケーションID
    final String insertId      = "XX"; // ユーザデータID
    final String userCd        = "XX"; // ユーザコード
    
    // wkhtmltopdfオプション
    final List<String> options = new ArrayList<String>();
    // リンク無効
    options.add("--disable-external-links");
    // 印刷モード
    options.add("--print-media-type");
    
    // 任意のリクエストパラメータ
    final Map<String, Object> optionalParams = new HashMap<String, Object>();
    map.put("任意KEY1", "任意パラメータ1");
    map.put("任意KEY2", "任意パラメータ2");
    
    // PDF出力処理
    final ApplicationPDFConverterAsync pdfConverter = new ApplicationPDFConverterAsync();
    File pdfFile = null;
    try {
        pdfFile = pdfConverter.createPDF(applicationId, insertId, userCd, options, optionalParams);
        
        : (ファイル操作処理)
        
    } catch(final FormaSystemException e) {
        // TODO エラー処理
        e.printStacktrace();
    } finally {
        // 出力されたPDFファイルを削除
        if (pdfFile != null && pdfFile.exists()) {
            pdfFile.delete();
        }
    }

コラム

PDF出力対象画面に対し、任意のリクエストパラメータを設定することができます。
前処理に任意のパラメータを受け渡す場合は、「前処理 」を参照してください。

8.2.2. スクリプト開発モデル

スクリプト開発モデルにおいて、PDF出力処理を実装する手順を示します。

  • ApplicationPDFConverterAsync を利用します。
  • 出力されたPDFファイルはできる限り出力処理後に削除することを推奨します。

8.2.2.1. 実装例1:オプション指定なし

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
    // パラメータ
    var applicationId = "XX"; // アプリケーションID
    var insertId      = "XX"; // ユーザデータID
    var userCd        = "XX"; // ユーザコード

    // PDF出力処理
    var pdfConverter = new FRApplicationPDFConverterAsync();
    var result = pdfConverter.createPDF(applicationId, insertId, userCd);
    if (result.error) {
        // TODO エラー処理
        Debug.console(result);
    } else {
        // PDFファイル
        var pdfFile = result.data;
        
        : (ファイル操作処理)
        
        // 出力されたPDFファイルを削除
        pdfFile.remove();
    }

8.2.2.2. 実装例2:オプション指定あり

 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
    // パラメータ
    var applicationId = "XX"; // アプリケーションID
    var insertId      = "XX"; // ユーザデータID
    var userCd        = "XX"; // ユーザコード
    
    // wkhtmltopdfオプション
    var options = [];
    // forma-pdf-config.xmlの設定内容を取得
    options = FRApplicationPDFConverterAsync.getOptions()
    // リンク無効を追加
    options.push("--disable-external-links");
    // 印刷モードを追加
    options.push("--print-media-type");

    // PDF出力処理
    var pdfConverter = new FRApplicationPDFConverterAsync();
    var result = pdfConverter.createPDF(applicationId, insertId, userCd, options);
    if (result.error) {
        // TODO エラー処理
        Debug.console(result);
    } else {
        // PDFファイル
        var pdfFile = result.data;
        
        : (ファイル操作処理)
        
        // 出力されたPDFファイルを削除
        pdfFile.remove();
    }
  • PDFファイルの出力方向を標準の縦方向から横方向に変更する場合、オプション指定で以下の内容を記述してください。

    options.push("--orientation");
    options.push("Landscape");
    

コラム

オプションに設定値がある場合は、上記のように分けてoptionsに分けて設定してください。

コラム

ロードバランシング環境にて、改善モジュールを利用している場合は、APIの引数としてオプションを指定する必要があります。
オプションの設定値については、以下を参照ください。

8.2.2.3. 実装例3:オプション指定あり、任意のリクエストパラメータ指定あり

 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
    // パラメータ
    var applicationId = "XX"; // アプリケーションID
    var insertId      = "XX"; // ユーザデータID
    var userCd        = "XX"; // ユーザコード
    
    // wkhtmltopdfオプション
    var options = [];
    // リンク無効
    options.push("--disable-external-links");
    // 印刷モード
    options.push("--print-media-type");
    
    // 任意のリクエストパラメータ
    var optionalParams = {};
    optionalParams.sampleKEY1 = "任意パラメータ1";
    optionalParams.sampleKEY2 = "任意パラメータ2";

    // PDF出力処理
    var pdfConverter = new FRApplicationPDFConverterAsync();
    var result = pdfConverter.createPDF(applicationId, insertId, userCd, options, optionalParams);
    if (result.error) {
        // TODO エラー処理
        Debug.console(result);
    } else {
        // PDFファイル
        var pdfFile = result.data;
        
        : (ファイル操作処理)
        
        // 出力されたPDFファイルを削除
        pdfFile.remove();
    }

コラム

PDF出力対象画面に対し、任意のリクエストパラメータを設定することができます。
前処理に任意のパラメータを受け渡す場合は、「 前処理 」を参照してください。