GeneXus開発アプリからのPDF出力方法

こんにちは、RADサービス部の佐々木です。前回は「GeneXusでのExcelデータの入出力の方法」についてご紹介しました。今回はGeneXus開発アプリからのPDF出力方法についてご紹介したいと思います。Accessのレポート機能を使ったことがある方なら分かると思いますが、あれと似たような形でGeneXusでも実装が行えます。また、初めてPDF出力を行う方にも分かりやすく説明していきたいと思いますので、ぜひ参考にしてみてください。
GeneXusでのPDF出力の流れ
それでは早速PDF出力の手順をご紹介しましょう。今回は伝票データから伝票作成日をユーザーが指定して、指定された日付の伝票データのみPDF出力するという流れで実装をおこなっていきたいと思います。まず、伝票データを管理するトランザクションを作成します。項目属性などは下記の内容で指定します。
次に伝票作成日の絞込みとPDF出力を実行するための画面をWeb Panelで作成します。GeneXusではWeb Panelを使うことで自由なレイアウトや挙動を定義することができるため、より柔軟なシステム開発が実現できます。また、あらかじめいくつかのコントロールも用意されているので、スピーディに高品質な画面作成が行えます。今回の画面構成は以下の通りです。
指定された伝票作成日でデータの絞込みを行うためGridのConditionsプロパティに下記の内容を設定しておきます。
VoucherCreateDate = &VoucherCreateDate When Not Null(&VoucherCreateDate);
Web Panelの作成が完了したら次にPDF出力を行うための処理を作成していきます。プロシージャを新規で作成しプロパティを下記の内容に変更します。
「Main program」 ⇒ True
「Call protocol」 ⇒ HTTP
次に変数の定義を行います。Variablesエレメントに移動して変数の定義を行ってください。
変数を定義したらRulesエレメントに移動してパラメーターと出力ファイル情報の設定を行います。
Parm(in:&VoucherCreateDate); Output_file('VoucherList.pdf','PDF');
Layoutエレメントで帳票のレイアウトを作成します。TitleのPrintBlock部分はヘッダーとして出力し、BodyのPrintBlock部分は取得したレコード数だけ行が追加されていきます。今回は伝票作成日で指定して該当するレコードの数がそこに表示されます。
レイアウトを作成したら、最後にSourceエレメントで帳票にデータを出力する処理を記述します。HeaderからEndの部分までが先ほどTitleのPrintBlock部分を出力するための処理で、For Eachの部分がBodyのPrintBlock部分を出力する処理となります。
Header //Titleを出力 Print Title End For each Where VoucherCreatedDate = &VoucherCreatedDate //Bodyを出力 Print Body Endfor
これでプロシージャの作成は終了です。先ほど作成したWeb Panelの「PDF出力」ボタンをクリックしたらこのプロシージャが呼び出されるように設定します。新しくボタンイベントを作成してそこに下記の内容を記述します。伝票作成日が入力されずにイベントが実行された場合は、日付を入力するように促すメッセージを表示します。日付が正しく入力された状態でイベントを実行させると先ほど作成したプロシージャが実行され該当データをPDFで出力します。
//「PDF出力」ボタンクリックイベント Event 'BtnPDFOutput' If &VoucherCreatedDate.IsEmpty() Msg('伝票作成日を入力してください') Else PdfOutputP.Call(&VoucherCreatedDate) EndIf Endevent
以上で手順はすべて終了です。システムを実行して動作の確認を行います。正常に動作したらPDF出力を行う前にデータベースに適当な伝票データをいくつか登録しておきます。実行したら下記のような画面が表示されます。
伝票作成日に日付を入力してデータの絞込みを行います。
指定した日付でデータの絞込みが行われていることを確認したら「PDF出力」ボタンをクリックして該当のデータを出力します。データが正しく表示されたことが確認できたら終了です。
まとめ
今回はGeneXusアプリ開発からのPDF出力方法についてご紹介しました。まだまだGeneXusは発展途上のツールであるためこのような実装方法に関する情報は多いとは言えません。そのため当社のブログの中では、少しでも多くGeneXusに関する実装方法や情報を提供していきたいと考えていますので、みなさんも是非参考にしてみてください。
▼キャパの公式Twitter・FacebookではITに関する情報を随時更新しています!