PDF関数
PDF関数は「実験的な機能」として公開された機能で、画面の要素からPDFのファイルコンテンツを作成することができる関数。
今まではPrint関数を使ってPDFWriter経由でPDF化することが多かったけど、PDF関数ではPDFコンテンツを直接作成するため、複数ページのPDF作成も可能。
PDF関数で指定できる項目
PDF関数ではPDF作成時に以下を指定することができる。
- Screen or control name(必須):印刷対象の画面またはコントロール
- Size:PDFのサイズ(日本の既定はA4のよう)
- DPI:PDFのDPI(既定は96)
- Margin:PDFの外側のスペース(既定は0.5inch)
- Orientation:縦向き(Portrait) or 横向き(Landscape)
- ExpandContainers:コンテナやキャンバスの中のコントロールを含むか?(複数ページにするか?)のbool
ということで早速使ってみる。
事前準備
事前準備として、[設定]から[PDF関数]をオンにし、アプリを再起動しておく。


作成したPDFコンテンツをPDFViewerに表示する
まずはPDFビューアーにPDF関数で作成したPDFを表示してみる。
※PDFビューアーの使い方はこちらから。

※PDFビューアーの使い方はこちらから。

Power Apps PDFビューアーの使い方を詳しく解説(試験段階)|Zoom、FineNext、OnStateChange
試験段階ということもあって今まであまり使ってこなかったPDFビューアー。Power AppsでPDFを表示する必要がでて色々と遊んでみたので、その結果をメモ。PDFビューアー(試験段階)PDFビューアーはその名の通りPDFファイルを表示する...
こんな感じのスクロールあり(PDF化時に複数ページが必要になる)コンテナとコントロールを準備して、


ボタンからこのコンテナを対象としてPDF関数を呼び出し、変数「glbPDF」に作成されたコンテンツを入れる。


そしたらPDFViewerのDocumentプロパティにglbPDFを設定して、


PDF関数を入れたボタンを押すと、こんな感じで複数ページのPDFが表示される!


PDF関数の引数を設定してみる
さっきはPDF関数の引数を何も指定しなかったので、PDFを下までスクロールしても「テキスト4」と書かれた一番下のラベルがPDFに載っていない。


ということで改めて引数「ExpandContainers」にtrueを設定してあげて、再度実行すると、


コンテナ内のすべての要素がPDF化される!


それ以外にもこんな感じで色々と指定(DPI 72, 余白25mm、横向き)してあげてPDF関数を呼ぶと、


指定した通りにPDFが作られる!


これは便利!
作成したPDFを保存する
続いて作成したPDFをファイルに保存してみる。
ファイルの保存にはPower Automateを経由する必要があるので、まずはPower Apps(V2)トリガーでフローを作成し、引数に「ファイル」を用意する。


そしたらPower Apps側からはこんな感じで呼び出してあげれば準備完了。
※nameにはファイル名、contentBytesには作成したPDFコンテンツを指定(今回は変数glbPDFに入っているので、変数を指定)

※nameにはファイル名、contentBytesには作成したPDFコンテンツを指定(今回は変数glbPDFに入っているので、変数を指定)

SharePoint Online ドキュメントライブラリ/OneDrive
ドキュメントライブラリに保存するときは「ファイルの作成」アクションから
- ファイル名:「式」タブからtriggerBodyに入れたファイル名 or 保存したいファイル名
- ファイルコンテンツ:「動的なコンテンツ」タブで指定できる値
をそれぞれ指定してあげる。
※ファイル名に入れるtriggerBodyの式
triggerBody()['file']['name']
OneDriveも同様。


実行するとこんな感じでPDFができる。


SharePoint Online リスト 添付ファイル
SPOリストの添付ファイルに保存した場合はこんな感じで指定。


実行すると無事添付ファイルに保存される。


Outlookでメールに添付
Outlookでメールに添付したいときはこんな感じで指定。


実行するとメールの添付ファイルとして送信できる!
制限事項
こんな感じで便利なPDF関数だけど、実験的機能なので制約もいくつかある。
PDF化対象は現在のスクリーン内にあるもののみ
PDF化できるのはPDF関数を実行した画面やその画面の中にあるコントロールのみに制限されている。
別画面のコンテナ(Container2)を呼び出そうとするとこんな感じでエラーが出る。


ネストされたギャラリーは対象外
また、ネストされたギャラリーは印刷できない。
こんな感じで入れ子になっているGallery2(5までの数字が入っている)をPDF化してみると、


印刷されるけど表示が乱れる。


さらに中に入っているGallery2自体をPDF化しようとすると、


エラーが発生する。


コメント