Power Apps PDFビューアー(試験段階)の使い方色々|Zoom、FineNext、OnStateChangeなどなど

試験段階ということもあって今まであまり使ってこなかったPDFビューアー。

Power AppsでPDFを表示する必要がでて色々と遊んでみたので、その結果をメモ。

スポンサーリンク

PDFビューアー(試験段階)

PDFビューアーはその名の通りPDFファイルを表示するコントロールで、残念ながらまだ試験段階。

そのためか、↓の公式にあるプロパティが実際には存在しないこともある(OnSelectとか)。
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/controls/control-pdf-viewer

標準で用意されているPDFの操作機能はこんな感じで、一般的なPDFビューアーに近い仕様になっている。

  • ページ指定遷移
  • 拡大縮小
  • 文字列検索

表示するPDFの指定方法

公式には「PDFビューアーに表示するPDFはURLで設定する」と書かれている。

しかし、実際にURLを指定する場合、

  • HTTPSであること
  • URLの先が認証不要なサーバーであること

といった制限があったりするので、いまいち使い勝手がよくない印象。

認証不要なサーバー上にあるPDFが対象なので、SharePointやOneDriveのドキュメントは普通にURL指定しても表示できない。。。

そこでPDFを指定する場合は以下の手段を取ることになるかと。

SharePoint Online ドキュメントライブラリからデータを引っ張ってくる

SharePoint OnlineのドキュメントライブラリにあるPDFのデータをPowerAutomateで取得して表示する方法。

メディアとして追加

画像ファイルのようにPower AppsのメディアとしてPDFを埋め込む方法。

Base64データ

PDFをBase64形式のデータに変換し、直接PDFビューアーに埋め込む方法。

PDFビューアーのプロパティたち

PDFビューアーには色々なプロパティがあって、正直使い方がわかりにくいものもいくつかw

今回はそのプロパティを色々いじってみたのでその内容をご紹介。

※PDFビューアーは試験段階の機能なので、ここの内容が急に変わることもあります。

Document

Documentプロパティは表示するPDFを指定するプロパティ。

基本はダブルクォーテーション(””)で囲ったURLを指定するが、PDFをメディアとして追加する場合はそのメディア名を、Base64で埋め込む場合はそのデータをダブルクォーテーションで囲って指定する。

Base64データのときはこんな感じ。

ShowControls

ShowControlsプロパティをtrueにすると、標準で用意されているPDFの操作機能が表示される。

Zoom, ActualZoom(読み取り専用)

Zoomプロパティはその名前の通り、拡大/縮小率を指定するプロパティ。

このプロパティには実際の拡大率を数値で指定するか、下のEnum値を指定する。

  • Zoom.FitWidth(値は-1)
  • Zoom.FitHeight(値は-2)
  • Zoom.FitBoth(値は-3)
例えば200とか設定すると、拡大率200%で表示されるし、
Fit系のEnum値を設定すると画面に合わせて表示される。
なのでこんな感じでスライダーとかと合わせて使うと便利かもしれない。

ActualZoomプロパティは実際の拡大率を返してくれるプロパティで、Zoomプロパティに数値をいれたときはその値を、Fit系のEnumを入れると実際の拡大率の値を返してくれる。

※ちなみにZoomプロパティには0も指定できるんだけど、拡大率0ってどういうことだろw

Page, PageCount(読み取り専用), CurrentPage(読み取り専用)

Pageプロパティを使用すると、表示するページをこちら側で指定することができる。

こんな感じで2を指定すると2ページ目が表示される。
PageCountはドキュメントの最大ページ数を返してくれるので、こんな感じでスライダーのMax値に設定して、
こんな感じでPageプロパティを設定すれば、スライダーと連動も可能。

ちなみに「Pageプロパティを設定するとビューアーのページは動く」けど、「ビューアーのページを動かしてもPageプロパティは動かない」ようになっている。

なので、ユーザーがスクロールバーとかを操作してページを移動してもPageプロパティの値は変化しないので、現在のページを参照したいときはCurrentPageプロパティを使う。

FindText

FindTextプロパティに値(文字列)を設定すると、PDFファイル内のテキストを検索してくれる。

こんな感じで直打ちすると先頭の文字を探してくれる。
基本的にはテキストボックスと併用することになるかなぁと。

ここまではまぁわかりやすいんだけど、使い方のクセが強めなのが次の「FindNext」と「FindPrevious」プロパティ。

FindNext, FindPrevious

FindNextプロパティとFindPreviousプロパティはその名前の通り、テキスト検索の次の(または前の)結果へと進むプロパティ。

だと思うんだけど、なぜか初期値が「false」というbool値。

で色々いじってみたところ、どうやらこのFindNext(FindPrevious)の値がtrueに変化するときに、次の(前の)検索結果へと移動するぽい。

なのでもし「次の検索結果へ」ボタンを実装するとしたらこんな感じになるのかなと。

こんな感じで変数を用意して、値を無理やり変化。
で、この変数をFineNextプロパティに入れる。
押してみると、次の検索結果へと移動する!

確かにPower Appsはコントロールの機能をコールすることはできないけど、使い方のクセが強いw

それか僕の使い方が間違っているかもしれないけれど、PDFビューアーの情報が少ないので何とも言えないw

OnStateChangeイベント

最後はPDFビューアーが持つ唯一のアクション「OnStateChange」。

名前からすると何かしらの状態が変わったときにコールされるんだろうけど、「何の状態が変わったときか?」がわからない。

ということで色々試してみたところ、少なくとも次の値が変わったときはこのOnStateChangeがコールされるよう。

  • Page, CurrentPage
  • FindText
  • FindNext, FindPrevious
  • Zoom、ActualZoom

なので、PDFビューアーをユーザーが操作したり、こちら側から操作したときはほぼすべてこの「OnStateChange」は呼び出される。

使うシチュエーションとしては、「最後のページまできちんと読んだか?」チェックとかが考えられるかなと。

OnStateChangeが呼ばれる度にコレクションとかにCurrentPageの値を重複無しで貯めていって、全ページ読めたら次の画面へと進めるようにする、みたいな感じ。

今回は触れなかったけどパスワード付きPDFも扱えるようなので、また機会があれば取り上げてみようかなぁと。

コメント

タイトルとURLをコピーしました