MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

【新機能】 PDF関数で Power Apps からPDFを作成する 【日本語対応!?】

【2022/10/12 部分的な日本語対応を確認したので更新】

Power Appsの最新 Authoring version 3.22094.7 で試験的な機能として "PDF function" が追加されました。 これまではPrint関数を利用することでキャンバスアプリの画面を印刷、PDF化していましたが、今回のアップデートでは直接PDFを作成できます。

それだけでなく、PDF関数では現在表示中のスクリーン以外のコントロールもPDF化することができます。

この投稿ではPDF関数の使い方、オプション、注意事項などを紹介します。

PDF化の対象

PDF関数では説明にあるとおり、スクリーン、ギャラリーコントロール、コンテナコントロールをPDF化の対象に指定可能です。

そのほかのコントロールを指定した場合にはエラーが表示されます。

使い方

PDF関数は動作関数です。ボタンのOnSelect、スクリーンのOnVisible などのイベント系のプロパティ上でのみ利用できます。

PDF(<PDF化対象のコントロール名>)

または PDF(<PDF化対象のコントロール名> , <オプション>)

この関数の結果はPDF (Blob) を返します。これをPower Apps上で表示する場合には、変数に対してPDFを設定し、PDFビューワーコントロールを利用してください。

また、Power Automate を利用することでOneDrive, SharePoint Onlineのドキュメントライブラリにファイルを保存できます。(詳細は後述)

オプション

PDF関数で指定可能なオプションは以下の5つです。

オプション名 説明 指定方法
Orientation 生成されるPDFが横長か縦長かを指定する PaperOrientation.Landscape または PaperOrienttation.Portrait
Size 生成されるPDFのページサイズ PaperSize.A0 、PaperSize.B1 など
Margin PDF作成時の余白 "12pt 12pt 12pt 12pt" など文字列で4辺の余白を指定
DPI PDFファイルの解像度(dpi) 96 などの数値
ExpandContainers 対象の非表示部分を展開してPDF化するか true または false
PDF(Screen1, {Orientation:PaperOrientation.Portrait, Size: PaperSizer.A4, ExpandContaniers: true})

オプションを含める場合は上記のように指定します。

Size についてはPaperSize. まで入力すると指定可能な候補が表示されます。その中から利用したい用紙サイズを選択してください。

注目は ExpandContainers のオプションです。印刷機能 (Print関数) では多くのユーザーがギャラリーコントロールの全行を表示できない点に不満を抱えていました。 PDF関数ではこのオプションを有効にすることで、ギャラリーコントロールの非表示部分 (スクロールしないと表示されない行) までPDFに含めることが可能です。

ファイルの保存 (Power Automateの利用)

PDFファイルを保存する場合には Power Automate を活用します。

Power Automateのトリガー "Power Apps (V2)" では入力パラメータとしてファイル型を指定できます。

Power AppsからPDF関数の結果を受け取って、それをOneDriveなどに保存してください。

なお、ファイルをPower Appsから受け渡す場合には以下のように記載します。

FlowName.Run({file:{name: pdfFileName.pdf, contentBytes : PDF(Screen1)} } )

注意事項

ギャラリーコントロールをPDF化する場合、行の数に応じてPDF化にかかる時間が変わります。

また、未ロードの行(初期表示で100行目以降)はPDF化の対象になりません。

PDF関数では対象が日本語を含む場合、文字化けが発生するという問題があります。この点はGAまでに改善されると期待していますが、日本のユーザーは注意してください。

【2022/10/12】

本日最新のPower Apps authoring version (3.22102.9) にて、PDF関数実行時の文字化け問題が解消されていることを確認しました。

ただ文字化けはありませんが、一部文字がかけているケースがあります。まだもう少し注意が必要そうです。