8.1. PDF出力機能

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

8.1.1. PDF出力機能とは

IM-FormaDesignerのアプリケーションからPDFファイルにダウンロードできます。
PDFの出力は、アプリケーションの一覧表示画面、参照画面上に配置した画面アイテム「ボタン(イベント)」で実行できます。
  • ファイルの生成時に利用している描画エンジンはChromeやSafariで使用しているWebkitエンジンを利用しています。 そのため、PDF出力時のイメージはChromeやSafariを利用したイメージに近くなります。
  • レイアウトを独自に設計された帳票イメージでPDF出力を行いたい場合は、別製品であるIM-PDFDesigner for Accel Platformをご利用ください。
以下は、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.2. wkhtmltopdf

8.1.2.1. wkhtmltopdfのインストール

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

注意

選択モジュールにSAStrutsを含んでいる場合は、war作成時の実行環境を「結合テスト環境」にすると
PDF出力機能を利用することができません。
PDF出力機能を利用する場合は、「結合テスト環境」以外を選択してください。

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

IM-FormaDesigner の詳細設定ファイル(forma-pdf-config.xml)を変更することで、wkhtmltopdfのオプションを設定することができます。
オプション設定は IM-FormaDesigner 2013 Winter(8.0.5)より利用可能です。
コマンドオプションの詳細については、「 wkhtmltopdf Documentation 」を参照してください。
使用可能なオプションは、wkhtmltopdfのバージョンにより異なります。
以下は、PDF出力時のパラメータ設定の記述例と良く利用する設定項目です。
<?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-int>1</value-int>
         </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
拡大縮小設定
(省略時 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.3. ロードバランサーを利用する場合

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

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

    コラム

    改善モジュールによる対応は IM-FormaDesigner 2013 Winter(8.0.6)以降のバージョンで利用可能です。
  • ネットワーク設定変更による対応

    ロードバランサー経由にて、wkhtmltopdfから同一APサーバのアプリケーションへアクセスできるように対応します。
    または、wkhtmltopdfから同一APサーバのアプリケーションへ直接アクセスできるように対応します。
    対応方法は環境によって異なります。

    コラム

    対応例:
    hostsファイルにアプリケーションのホストがローカルホストとなるように設定します。
    wkhtmltopdfのリクエスト先サーバをAPサーバにします。

8.1.4. Windows統合認証を利用する場合

Windows統合認証環境をご利用の場合は、PDF出力時の「wkhtmltopdf」オプションに認証用ユーザ情報を設定してください。

<options>
   ・・・・・・・・・・・略・・・・・・・・・・・・
   <option>
      <key>username</key>
      <value-string>%認証ユーザID%</value-string>
    </option>
    <option>
      <key>password</key>
      <value-string>%パスワード%</value-string>
    </option>
</options>

8.1.5. JavaScript遅延タイムアウト

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

コラム

JavaScriptスクリプトのウエイトタイムの設定オプションはwkhtmltopdfのバージョンが0.10.0以降に追加されたオプションです。
それより前のバージョンではご利用できません。

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

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