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の普通の使い方(?)について書いたが蛇足だったかもω
眠気がもすぬごい
以上

















