0. INDEX
- 背景
- 目的
- UltimatePDFでPDFデータを生成する
- あとがき
1. 背景
OutSystemsを使ったPDF出力という要件が結構多く、執筆次点(2022/05/14)では、Ultimate PDFというForgeを使用するのがいいぞという話をチームメンバーから聞いていた。
以前は、HTML2PDFだったらしいが。
ただ、このUltimatePDF。Demoを確認するもバイナリデータの生成方法が見つけられなかったが、サーバアクションの出力にバイナリデータが含まれているので、この辺を検証してみた。
2. 目的
- プレビュー表示とダウンロードをする
- 普通の使い方(この記事の内容)
- サーバアクション経由でバイナリデータを生成する
- 今回の最終目標(次の記事で触れます)
3. UltimatePDFでPDFデータを生成する
例によってプロジェクトファイルはGitHubに置いている。
PDFOutput.oml - GitHub
デモページは、OutSystemsのPersonalクラウドスペースに置いている(長期間放置でスリープされてたら諦めてくだし…)
https://personal-ppneswkx.outsystemscloud.com/PDFOutput/Home
3.1. 準備
3.1.1. ForgeよりUltimate PDF
を導入する
Install from Forge
ボタンを押下する
Browse Forge
という画面が開くので、Ultimate PDF
で検索し、アイコンを押下する
Ultimate PDF
の画面に来たら、右側にあるInstall
というボタンを押下する
Service Studio
に戻って、Development
を開いた時、Ultimate PDF
が追加されていればOK
3.1.2. Reactive Web Appで作成する
New Application>From scratch>Reactive Web App
と進める
任意のアプリ名を入力して CREATE APP
ボタンを押下する
Modules
の画面に切り替わったら、ADD MODULE
ボタンを押下し、名前は任意に、Choose module type
はReactive Web App
をしてCREATE MODULE
ボタンを押下する
3.1.3. アプリの依存関係にUltimate PDFを追加する
電気プラグのようなボタンを押下する
Manage Dependencies
ウインドウが開くので、UltimatePDF
を探し、チェックを付けたらAPPLY
ボタンを押下する
3.1.4. Ultimate PDFの初期化処理を追加する
右上のLogic
タブを開き、Client Actions
にOnApplicationReady
という名前でアクションを作る。
ちなみに、OnApplicationReady
はホームモジュール読み込み時に一度だけ実行する特別なアクションなのだそうだ。
ともかくこれでやっと準備完了である。
3.2. プレビュー表示とダウンロードをする
3.2.1. PDF用のScreenを作る
PDFはPDF用のScreenを追加する事で生成する。ここではBlank PDF
を追加する。
余談だが、メールもScreenから作るのでこの辺はOutSystemsの独特な考え方なのですかね。
追加した所。
ちなみに、追加した画面に書かれた内容は、3.1.4. でやっているので、Widget Tree
に切り替えてツリーからlayout-print-documentation
を消してしまっていい。
続けて適当にPDFの中身を作る。ここでは単にExpression
を使って現在時刻を出力するようにした。
3.2.2. Home画面を作り、PDFのプレビュー表示とダウンロードをする
HomeはEmpty
というScreenから追加した。
追加した画面、プレビューとダウンロード用のボタンを用意する(リンクなどでもいい)
プレビューボタンのクリックイベントには、先に作成したPDF用Screenを指定し、引数のPreview
にTrue
を設定すればいい。ここは簡単ですね。
ダウンロードもプレビューとほぼ同じで簡単。ダウンロードボタンのクリックイベントにPDF用Screenを指定するだけでいい。Previewを指定する場合はFalse
とする。
最後に確認。パブリッシュした後、ブラウザで開いてみる。
プレビュー表示。いいね。
ダウンロードしてみる。これもいいね。
4. あとがき
記事が長くなってしまったので2部構成にした。
この記事では、Ultimate PDFの普通の使い方(?)について書いたが蛇足だったかもω
眠気がもすぬごい
以上