Forge上にあるコンポーネント「UltimatePDF」を使うことで、Screenの表示結果をPDFとして出力できます。帳票作成に使えます。
ただし、Traditional Webのコンポーネントなので、ScreenもTraditional Webのもの。Reactive Web Appからダウンロードさせたければ、ブラウザ内の別タブとして開く、などの対応が必要。
そのUltimatePDFの簡単なチュートリアルを書いてみます。
環境
Personal Environment(Version 11.9.0 (Build 16900))
Service Studio (Version 11.8.11)
UltimatePDF (Version 2.1.0)
チュートリアル
モジュールと参照
Traditional Webのモジュールを用意してください。
参照は、以下の通り、UltimatePDFの全Web Blockを追加しておきます。
画面はテンプレートから作成する
作成手順
UltimatePDFにScreen Template「PDF Report」が付属しているので、これをベースに画面を作ります。
- UI Flowを選択し、右クリック
- Add Web Screenを選択
- 「PDF Report」テンプレートを選択して「CREATE SCREEN」ボタンをクリックして画面作成
作成したページの構造
このテンプレートから作った画面のWidget Treeは以下のようになります。
UltimatePDFが提供する2つのWeb Blockで画面が構成しています。
- PrintLayout:印刷用のヘッダ・本文・フッタ構成。余白をパラメータで指定できる
- ScreenToPDF:このWeb Block内を置くと、画面アクセスと同時に画面をPDFに印刷してダウンロードしてくれます
Previewパラメータ
テンプレートから作った画面にはデフォルトで入力パラメータPreviewがあります。
この値をTrueにすると、画面にアクセスしたときに自動でPDFがダウンロードされなくなります。
その状態でもブラウザの印刷機能を使えば、ヘッダ、改ページ、フッタが適用されたPDFが作れます。
帳票用画面のコンテンツを作成する
作成中は画面のPreviewのDefault ValueをTrueにしておくと、ブラウザ上で表示を確認できます(やっておかないと毎回PDFファイルをダウンロードすることになる)。
ここでは、動作確認なので非常に簡単に以下の構成にします。
ヘッダに固定のテキストを表示
各ページのヘッダ部分にテキストを表示するには、そのコンテンツをHeader Placeholderに配置します。
上の例では、ユーザー名と実行日時をだしています。
誰がいつ出したかを後で確認できるようによくあるやつです。
サポートに問い合わせするときにこれが出ていると、ログを追いかけるのが楽ですね。
本文は改ページを挟んで2ページ出力する
任意の場所で改ページを行うには、改ページしたい場所にPagination\PageBreak Web Blockを配置します。
本文は、MainContent Placeholderに配置です。
上の配置では、1ページ目の左上に数字の1、2ページめの左上に数字の2が出力されます。
フッタには、「現在のページ / 総ページ数」
現在のページを表すには、PageNumbers\PageNumber Web Block、総ページ数はPageNumbers\PageCountを表示したい場所に配置してください。
動作確認
画面作成が終わったら、Preview入力パラメーターのDefault ValueをFalseに戻して該当画面にアクセスします。
ScreenToPDFの機能によってアクセスすると直ちにダウンロードが起こり、(設定にもよるかもしれませんが)ブラウザのダウンロードダイアログが開きます。
ページサイズはA4です。
これは、PageLayout Web BlockのPaperSizeパラメータで指定するのですが、デフォルトがA4であるため。
余白サイズも変更できて、MarginSizeを指定します。