0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ODC版のUltimate PDFを確認(1)

Posted at

OutSystemsで作成したScreenをPDFとして出力するForgeコンポーネントUltimate PDFのODC版が公開されている。
そこで、コンポーネントの概要と使い方を見ていく。
以下では、日本語を含むシンプルな帳票を作る手順を確認する。

環境情報

ODC Studio(Version 1.3.16)
Ultimate PDF (Version 1.1.5)
UltimatePDF_ExternalLogic (Version 0.1.5)

GitHubプロジェクトページのドキュメント

インストール

Ultimate PDFをインストールすると、内部で利用するUltimatePDF_ExternalLogic も同時にインストールされる。

帳票用のScreenを作成する

Screenを普通に作成し、Authorization > Accessible by = Everyoneに設定する。ちなみに、これだと誰でも画面にアクセスできてしまうため、セキュリティ上の問題がある。対策はあるようだが、そちらについては別途動作確認して記事にまとめる予定。
image.png

Layout Block(Screen直下のBlock)を、Ultimate PDFのPrintLayoutに置き換える。
image.png

日本語フォントを設定

GitHubのKnwon Limitationsセクションによると、

The version of chromium bundle with the forge component only has Open Sans font installed meaning it only supports a subset of languages.

ということで、デフォルトではOpen Sans Fontのみがインストールされている。
Ultimate PDFのFonts Static EntityのRecordの値は利用できるようだ。その中で、JPという文字が含まれる「IBM_Plex_Sans_JP」を利用することにする。
image.png

ScreenのOn Initialize Eventにハンドラーを設定
image.png

Ultimate PDFのSetDocumentFont Client Action呼び出しを配置し、Input Parameter Fontに↑で決めたFonts Static EntityのIdを設定する。
image.png

これによって、ページ内のbodyタグにIBM Plex Sans JPというfont-familyが適用される。

帳票デザイン

テストなのでシンプルに以下の構造にしてみた。
image.png

PrintLayout Blockを画面のルートに配置

PDF出力用の画面やマージンサイズを設定する処理が含まれている。
このLayoutのPlaceholder内に適当なUIを配置していく。

HideOnPrint Blockを使ってWebページとしてどうさするときのみ出力するUIを定義

Placeholder Content内に配置したUIは、その画面をブラウザで開いたときにのみ表示される。PDFとして出力したときには表示されない。
PrintLayoutをLayoutとして使った場合、ブラウザで画面にアクセスしただけではPDFは出力されない。そこで、Buttonを配置し、クリックしたときにUltimate PDFが提供するPDF出力Actionを呼び出すようにする。

image.png

CurrEnvironment Action: ブラウザのタイムゾーンやロケールを返すAction
PrintToPDF Action: 指定した画面のURLをChromiumで開き、印刷してPDFにしたものを返す

ページ番号とページ数を提供されるBlockで表示する

PageNumber Block: PDF出力したときにページ番号を出力する
PageCount Block: PDF出力したときに総ページ数を出力する

出力結果サンプル

ODC Studio上でのScreen
image.png

これをPDFに出力した結果
image.png

注意点:セキュリティ

Appのテンプレートを提供するTemplate_UltimatePDFには、Authorization > Accessible by = Everyoneとしたことによるセキュリティ問題を解決する方法が含まれる。

こちらの方法は後で別の記事にまとめる。

O11版のコンポーネントとの比較

帳票の作成方法はO11の頃と同じ。

  • Screenに帳票出力用のレイアウトBlockを配置し、画面作成と同じ方法で帳票をデザインする
  • 各種Blockなどは基本的に同じ構成

ドキュメントを見る限り、Chromiumの特定バージョンを組み込んでいるようだ(O11のときには、最初の実行時にChromiumをダウンロードしてくる動作もあった)。

処理の本体が、O11におけるExtension(C#で作成したロジックをPlatform Serverのメモリ上で動作する)から、ODCにおけるExternal Logic(C#で作成したロジックをOutSystems外のAWS Lambdaで動作する)に変わっている。
External Logicであることにより

  • モジュールから直接コードを見られない(が、↑にリンクしたGitHubプロジェクトページにソースコードがある)
  • オンメモリではないため、PDF出力を要求したユーザーの認証情報を引き継ぐのは難しそう
  • Parameterのサイズ上限(5.5MB)がある
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?