IM-BIS for Accel Platform セットアップガイド 第30版 2024-04-01

8.1. PDF出力機能

ここでは、IM-FormaDesignerのフォームをPDFファイルとして出力する方法について説明します。

8.1.1. PDF出力機能とは

PDF出力機能については、「 IM-FormaDesigner 作成者操作ガイド 」の「 PDF出力機能とは 」を参照してください。

8.1.2. PDF出力機能の処理イメージ

以下は、PDF出力機能の処理イメージです。
../../../_images/output_pdf_1.png
① クライアントから IM-FormaDesignerアプリケーションのPDFファイルダウンロードを実行します。
② アプリケーションは、コマンドベースでwkhtmltopdfにPDF作成を指示します。
③ wkhtmltopdfは、HTTPリクエストでPDF出力用HTMLを取得します。
取得したHTML内の静的ファイル・Ajax通信のリクエスト先は、APサーバにてベースURL設定に置き換えられます。
④ Webkitエンジンは、PDF出力用HTMLを読み取り、静的ファイルの取得やAjax通信を実施します。
リクエスト先はAPサーバにて置き換えられたベースURLです。
レンダリングとクライアントサイドJavaScriptを実行をして、対象Forma画面のイメージを作成します。
⑤ QTは、画面イメージからPDFを作成します。
⑥ wkhtmltopdfは、作成したPDFを返却します。
⑦ アプリケーションは、作成したPDFを返却します。

8.1.3. wkhtmltopdf

8.1.3.1. wkhtmltopdfのインストール

インストールについては、「 IM-FormaDesigner セットアップガイド 」の「 wkhtmltopdfのインストール 」を参照してください。

8.1.3.2. wkhtmltopdfのコマンドオプション

IM-FormaDesigner の詳細設定ファイル(forma-pdf-config.xml)を変更することで、wkhtmltopdfのオプションを設定することができます。
オプション設定は IM-FormaDesigner 2013 Winter(Felicia) より利用可能です。
コマンドオプションの詳細については、「 wkhtmltopdf Documentation 」を参照してください。
使用可能なオプションは、wkhtmltopdfのバージョンにより違います。
以下は、PDF出力時のパラメータ設定の記述例と良く利用する設定項目です。
 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
 <?xml version="1.0" encoding="UTF-8"?>
 <forma-pdf-config xmlns="http://www.intra-mart.jp/forma-pdf-config"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.intra-mart.jp/forma/forma-config ../../schema/forma-pdf-config.xsd">
     <base-url>http://127.0.0.1:8080/imart</base-url>
      <options>
          <option>
              <key>zoom</key>
              <value-string>1</value-string>
          </option>
          <option>
              <key>image-dpi</key>
              <value-int>600</value-int>
          </option>
          <option>
              <key>page-size</key>
              <value-string>A4</value-string>
          </option>
          <option>
              <key>orientation</key>
              <value-string>Portrait</value-string>
          </option>
          <option>
              <key>footer-center</key>
              <value-string>"[page]/[toPage]"</value-string>
          </option>
          <option>
              <key>javascript-delay</key>
              <value-int>200</value-int>
          </option>
      </options>
 </forma-pdf-config>
オプション 説明
zoom
拡大縮小設定: 2, 1, 0.9
(省略時 1)
image-dpi
解像度を設定 dpi
(省略時 600)
page-size
ページサイズを設定: A4, Letter, etc
(省略時 A4)
orientation
ページの向きを設定: Landscape, Portrait
(省略時 Portrait)
footer-center
フッターとしてセンター位置に任意の情報を設定
設定例 “[page]/[toPage]” 現在ページと最終ページを表示
javascript-delay
javascriptのウエイトタイム設定 msec
(省略時 200)

コラム

その他利用可能なオプションについては、helpコマンドを参照してください。

helpコマンド
$ wkhtmltopdf -H

8.1.4. ベースURLを設定している場合

Webサーバやロードバランサーをご利用している環境で、ベースURLを設定している場合は、wkhtmltopdfからリクエスト先を考慮し対応を検討する必要があります。
wkhtmltopdfが、PDF出力用HTMLを読み取り、静的ファイルの取得やAjax通信を行うため以下の点が懸念されます。
../../../_images/output_pdf_2.png
① wkhtmltopdfからのリクエストが、ロードバランサーを経由してAPサーバへアクセスできない。
② wkhtmltopdfからのリクエストが、ロードバランサーを経由すると別APサーバへアクセスされる。
その場合は、セッションが存在しないため、エラーが発生します。

コラム

APサーバからWebサーバへアクセスできない環境の場合も、改善モジュールによる対応で解決することが可能です。
  • 改善モジュールによる対応

    下記FAQで公開している改善モジュールを適用していただくと、リクエストごとにベースURLを変更することができます。
    wkhtmltopdfからのリクエストのみ、APサーバのローカルホストをベースURLに設定します。

    コラム

    改善モジュールによる対応は IM-FormaDesigner 2013 Winter(Felicia) 以降のバージョンで利用可能です。

    コラム

    一覧表示画面からPDFファイルを出力する場合は、設定ファイルにオプションを設定します。
    PDF出力するAPIを利用する場合は、設定ファイルではなく、APIの引数としてオプションを指定する必要があります。
    オプションの設定値については、上記のFAQ詳細ページを参照してください。

8.1.5. リクエスト情報を利用したテナント自動解決機能を利用する場合

リクエスト情報を利用したテナント自動解決機能を有効とした場合、PDF出力機能を使うためには、以下の設定をする必要があります。
  1. im-Juggling で、設定対象のプロジェクト直下に「plugin」フォルダを新規作成します。

  2. 「plugin」フォルダに、下記のフォルダを作成します。
    jp.co.intra_mart.foundation.admin.tenant.context.tenant.resolver.forma_pdf_8.0.9
    
    ../../../_images/output_pdf_3.png
  3. 上記のフォルダに、以下のファイルを解凍して配置します。
  4. im-Juggling からWARファイルの出力を行い、WARファイルをデプロイすると、設定内容が反映されます。

コラム

本対応は IM-FormaDesigner 2015 Spring(Juno) 以降のバージョンで利用可能です。

コラム

テナント自動解決機能の詳細は、「 intra-mart Accel Platform セットアップガイド 」-「 テナント解決機能 」を参照してください。

8.1.6. IM-SecureSignOn for Accel Platform を利用する場合

IM-SecureSignOn for Accel Platform を利用する場合、リクエスト情報を利用したテナント自動解決機能が有効です。
PDF出力機能を使うためには、「 リクエスト情報を利用したテナント自動解決機能を利用する場合 」に記載の設定を行ってください。

8.1.7. JavaScript遅延タイムアウト

PDF出力対象の画面にてAjax通信を行っている場合、JavaScriptスクリプトがタイムアウトする場合があります。
JavaScriptスクリプトのウエイトタイムは、wkhtmltopdfのオプションで変更できます。
設定方法は、「wkhtmltopdfのコマンドオプション 」を参照してください。
コマンドオプションの詳細については、「 wkhtmltopdf Documentation 」を参照してください。
使用可能なオプションは、wkhtmltopdfのバージョンにより違います。

8.1.8. 出力ファイルのレイアウト変更

出力するPDFファイルのレイアウトは、wkhtmltopdfのオプションで変更できます。
設定方法は、「wkhtmltopdfのコマンドオプション 」を参照してください。
コマンドオプションの詳細については、「 wkhtmltopdf Documentation 」を参照してください。
使用可能なオプションは、wkhtmltopdfのバージョンにより違います。

8.1.9. wkhtmltopdfプロセスのタイムアウト時間の変更

IM-FormaDesigner の詳細設定ファイル(forma-pdf-config.xml)を変更することで、wkhtmltopdfプロセスのタイムアウト時間を設定することができます。
タイムアウト時間の設定は IM-FormaDesigner 2016 Spring(Maxima) より利用可能です。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 <?xml version="1.0" encoding="UTF-8"?>
 <forma-pdf-config xmlns="http://www.intra-mart.jp/forma-pdf-config"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.intra-mart.jp/forma/forma-config ../../schema/forma-pdf-config.xsd">
     <base-url>http://127.0.0.1:8080/imart</base-url>
      <options>
             ・
             ・
             ・
      </options>
             ・
             ・
             ・
      <process-timeout-time>300000</process-timeout-time>
 </forma-pdf-config>
オプション 説明
process-timeout-time
wkhtmltopdfプロセスのタイムアウト時間 msec
(省略時、または0設定時 300000)