Power Apps の PDF Viewer でアプリ埋め込みファイルを表示したい
Power Apps アプリで PDF ビューアー コントロールを利用する際の設定や制限事項は以下が参考になりますが、
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/controls/control-pdf-viewer
記載されている制限事項をまとめると、こんな感じです。
- コントロールの Document プロパティに HTTPS でアクセスできるファイルパスを指定
(リダイレクトや HTML ビューはだめ) - 認証を必要としないこと、クロスドメインの制約にひっかからないこと
本当は SharePoint ライブラリに保存した PDF ファイルを表示したかったのですが、上記制約の 「認証がいらない」 点にひっかかるのでファイルの URL を Document プロパティに指定するだけではダメそう、、フローでコンテンツとして取得することでできそうですが、そこまでやるのは少し面倒だし、それなら PDF ファイルを開く HyperLink でよいなあ、、と
ということで、上記 URL に記載のある 「PDF ドキュメントをアプリのメディアリソースとして含めることで、これらの制限を回避できます。 これにより、PDF ビューアーコントロールは常にドキュメントを表示できます。」 というのを試してみることにしました。
でも、よく考えるとファイルってアプリのリソースにできたっけ?
[画像]、[ビデオ]、[オーディオ] 念のためすべて試してみたけど、PDF ファイルを追加しようとするともちろんエラーになる。
ということで、PDF ファイルの拡張子を画像ファイルの拡張子に変更してメディアに追加してみると、リソースとして追加はできた。
で、PDF ビューア― コントロールを配置して、Document プロパティに指定してみたらできた。プレビューしてみるとスクロールもできてる。
PDF ビューアー コントロールが試験段階機能だからだと思いますが、同じことであれ?と思われた方のヒントになればと思います。SharePoint とか OneDrive に保存したファイルも直接 URL 指定できるようになればいいのにな。
おまけ
■ ShowControls プロパティ true でメニューを表示
■ クリックで他の PDF ファイルに切り替えたい場合
- ラベルとかアイコンとかボタンなどを追加し、OnSelect プロパティで変数に値をセットするようにしとく
※ コンテキスト変数 (UpdateContext) でもいいですが、上図例では次の画面に進んだときも選択された言語を保持したかったので - 切り替えたい数だけ (ラベルなど) メニューとして利用するコントロールを配置し、同じ変数の値を変更するよう設定
- PDF ビューアーコントロールの Document プロパティに指定
変数の値により、表示するPDFファイル (ここではリソース名で指定) を変更するように
あわせてなにかのヒントにいただければうれしいです。