IM-FormaDesigner for Accel Platform プログラミングガイド 第16版 2023-10-01

8.1. 後処理プログラムでの実装手順

コラム

当ページでは「wkhtmltopdf を利用したPDF出力機能」について説明します。

注意

wkhtmltopdf は2023年1月にアーカイブされました。そのため、wkhtmltopdf のセットアップと運用は非推奨となりました。
wkhtmltopdf のインストーラが提供されている環境では、現行どおり wkhtmltopdf を利用する事は可能です。
弊社テクニカルサポートセンターでの問合せ対応も引き続き可能です。
クライアントサイドのPDF出力は、2023 Autumn(Hollyhock) からはブラウザ印刷を利用した機能を提供します。
wkhtmltopdf のPDF出力に代わり利用を検討ください。
次の手段でサーバサイドでPDFを出力している、または出力しようとしている場合は IM-PDFDesigner for Accel Platform の利用を検討ください。
  • JavaEE開発モデル PDF出力API
  • スクリプト開発モデル PDF出力API
  • Office 365 for IM-BIS ファイルアップロードジョブ

参照画面をPDF出力する API では、以下のパラメータが必要です。

  • アプリケーションID
  • ユーザデータID

PDF出力するAPIは、以下の箇所で利用できます。

  • 後処理プログラムデータの更新時、データの削除時

コラム

PDF出力処理は、API を実行するログインユーザのセッションを利用して行われます。
そのため、参照画面にログインユーザのセッション情報(ユーザ名等)を表示する画面アイテムが配置されている場合、実行したユーザのセッション情報が出力されます。

8.1.1. JavaEE開発モデル

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

8.1.1.1. 実装規約

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

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

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

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


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

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

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

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

    // パラメータ
    final String applicationId = "XX"; // アプリケーションID
    final String insertId      = "XX"; // ユーザデータID
    
    // wkhtmltopdfオプション
    final List<String> options = new ArrayList<String>();
    // リンク無効
    options.add("--disable-external-links");
    // 印刷モード
    options.add("--print-media-type");
    
    // PDF出力処理
    final ApplicationPDFConverter pdfConverter = new ApplicationPDFConverter();
    File pdfFile = null;
    try {
        pdfFile = pdfConverter.createPDF(applicationId, insertId, 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.1.2. スクリプト開発モデル

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

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

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

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

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

8.1.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
    // パラメータ
    var applicationId = "XX"; // アプリケーションID
    var insertId      = "XX"; // ユーザデータID
    
    // wkhtmltopdfオプション
    var options = [];
    // リンク無効
    options.push("--disable-external-links");
    // 印刷モード
    options.push("--print-media-type");

    // PDF出力処理
    var pdfConverter = new FRApplicationPDFConverter();
    var result = pdfConverter.createPDF(applicationId, insertId, 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の引数としてオプションを指定する必要があります。
オプションの設定値については、以下を参照ください。