Comments
Description
Transcript
WebReportCafe Engine プログラミングガイド
WebReportCafe for .NET プログラミングガイド 2 目次 目次 WebReportCafe for .NETの概要.................................................................................................. 3 プログラミングチュートリアル .......................................................................................................... 4 概要......................................................................................................................................... 4 準備......................................................................................................................................... 4 GUIコンポーネントの追加 ........................................................................................................... 5 データセットの作成 ................................................................................................................... 6 WRCコンポーネントプロパティ設定 ............................................................................................. 10 コーディング ............................................................................................................................11 サンプルプログラム ..................................................................................................................... 12 PDFの作成、表示、印刷のサンプル .......................................................................................... 13 オブジェクトの属性を動的に変更するサンプル.......................................................................... 16 PDFのパスワードを変更するサンプル ........................................................................................ 19 レポートのイベントを使用したサンプル 1 ................................................................................... 21 レポートのイベントを使用したサンプル 2 ................................................................................... 25 レポートのイベントを使用したサンプル 3 ................................................................................... 28 複数の帳票フォームから1つのPDFを作成するサンプル ............................................................. 31 入力データからPDFを生成するサンプル.................................................................................... 33 プリンタにダイレクト印刷を行うサンプル .................................................................................... 36 画像データを作成するサンプル ............................................................................................... 40 ASP.NETを利用したPDF出力サンプル........................................................................................ 43 補足 .......................................................................................................................................... 46 DLLについて ........................................................................................................................... 46 Copyright(C) SIOS Technology, Inc. 3 WebReportCafe for .NET の概要 WebReportCafe for .NET の概要 WebReportCafe for .NET (以下 WebReportCafe)は、 Microsoft .NET Framework 環境からダイナミッ クに PDF を生成する製品です。 Web アプリケーション、C/S アプリケーションから簡単に PDF を生成することが可能です。 ◆ 帳票レイアウト作成ツール ビジュアルな操作で複雑な帳票も短時間に作成することが可能です。 OCR 機能、下絵機能を標準搭載。既存帳票を簡単に取り込むことが可能です。 ◆ データ接続 データアクセスには、.NET Framework 標準の「ADO.NET」を採用。 DataSet のデータをそのまま PDF にすることが可能です。 ◆ 様々な帳票ニーズに対応 伝票などの「固定系帳票」からダイナミックに生成される「一覧系帳票」まで簡単に作成可能です。 レポート生成時にオブジェクトの属性をプログラムの中から操作することが可能です。 データの値によって色や罫線の位置を変えるなどきめ細かい帳票を実現することが可能です。 このドキュメントでは、WebReportCafe のプログラミング方法について説明します。 ※帳票レイアウトの作成方法につきましては、「WebReportCafe Designer ガイド」を参照して下さい。 ※プログラミングで使用するクラス・メソッドの詳細につきましては、「API リファレンス」を参照して下さい。 ※電子署名の設定方法につきましては、「電子署名について」を参照して下さい。 当ドキュメント中の会社名、製品名などは各社の商標および登録商標です。 This product includes software developed by (c)2003 Y.Swetake(http://www.swetake.com/) Copyright(C) SIOS Technology, Inc. 4 プログラミングチュートリアル プログラミングチュートリアル 概要 この章では、開発環境に Microsoft Visual Studio 2003 を使用した、簡単な帳票作成プログラムの作 成手順を解説します。 ボタンをクリックすると、サンプルの帳票フォーム product_list.xml を元に PDF を作成し、表示するアプ リケーションを C#で実装します。PDF の表示には、Adobe PDF Reader を使用します。このコントロール を使用するには、AdobeReader7.0 または 8.0 (http://www.adobe.co.jp/products/acrobat/readermain.html) のインストールが必要です。 準備 はじめにプロジェクトを作成しましょう。Windows アプリケーションを作成する Visual C#プロジェクトを “FirstWRC”という名称で作成してください。 続いてツールボックスの設定を行います。ツールボックスに、帳票を 作成するコンポーネントと PDF を表示する ActiveX Control を追加し、 ツールボックスから利用できるようにします。 ツールボックスが表示されていない場合は、“表示”メニューより“ツー ルボックス”を選択し、ツールボックスを表示します。続いて、コンポーネ ントを追加するタブを選択し、表示します。ここでは、“コンポーネント”タ ブに追加することにします。 ツールボックスのコンポーネントタブの上で右クリックし、表示されたメ ニューより、“アイテムの追加と削除”を選択します。表示されたツール ボックスダイアログの“.NET Framework コンポーネント”タブをクリックし、 一覧中の“WRCComponent”のチェックボックスをオンにします。 “.NET Framework コンポーネント”タブに“WRCComponent”が存在しな い場合は、”参照”タブから WRCComponent.dll を選択してください。 続 い て 、 COM コ ン ポ ー ネ ン ト タ ブ を ク リ ッ ク し 、 一 覧 中 の “ Adobe Acrobat 7.0 Browser Document”のチェックボックスをオンにし、 “OK”ボタンをクリックします。 ツールボックスに“WRCComponent”と“Adobe PDF Reader”が追加されていることを確認してくださ い。 Copyright(C) SIOS Technology, Inc. 5 プログラミングチュートリアル ※ COM コンポーネントタブに”Adobe PDF Reader”が存在しないときは、AdobeReader を起動して、 編集→環境設定→インターネット→Web ブラウザオプションで、PDF をブラウザに表示のチェック をオンにして、再度ツールボックスより選択してください。 GUI コンポーネントの追加 必要なコンポーネントを追加して画面を作成しましょう。ツールボックスから、Windows フォームの “Button”および、“Adobe PDF Reader”ドラックアンドドロップして、フォームオブジェクトに配置してくだ さい。ボタンの Text プロパティを“PDF 作成”に変更し、各オブジェクトの大きさを調整して下図のような レイアウトを作成してください。 Adobe Acrobat 7.0 Browser Document Copyright(C) SIOS Technology, Inc. 6 プログラミングチュートリアル データセットの作成 WebReportCafe で帳票を作成するには、データが必要です。またデータは System.Data.DataSet オブ ジェクトに格納されている必要があります。 このサンプルでは Microsoft Access のデータベースファイルからデータを取得する DataSet を作成しま す。サンプルのデータは[CD-ROOT]\Engine\dnet\sample\data\sample.mdb にあります。 まず、ツールボックスの“データ”タブより、“OleDbDataAdapter”をドラッグ&ドロップしフォームに追加 してください。“データアダプタ構成ウィザード”が起動します。“次へ”ボタンをクリックすると“データ接続 選択”画面が表示されます。“新しい接続”ボタンをクリックし、“データリンクプロパティ”ダイアログを表示 してください。表示されたダイアログの“プロバイダ”タブをクリックし、リストの中から“Microsoft Jet 4.0 OLE DB Provider”選択し“次へ”ボタンをクリックしてください。 表示された接続タブの“データベース名を選択または入力します”と記述されている下のフィールドに サンプルデータベースファイルへのパスを指定します。OK ボタンをクリックし“データリンクプロパティ”ダ イアログを閉じます。 ウィザードに戻り“次へ”ボタンをクリックすると“クエリの種類の選択”画面が表示されます。何も変更せ ず、“次へ”ボタンをクリックしてください。 続いて“SQL ステートメントの生成”画面が表示されます。テキストフィールドに帳票データを取得する ために SQL “SELECT PRODUCT_NAME, COST, LIST_PRICE FROM PRODUCT”と入力してください。 詳細ボタンをクリックしてダイアログを 表示します。 Copyright(C) SIOS Technology, Inc. 7 プログラミングチュートリアル WebReportCafe ではデータソースの参照のみ行いますので、“INSERT、UPDATE、および DELETE ス テートメントの作成”のチェックボックスをオフにします。 OK ボタンを押しダイアログを閉じ、ウィザードの“次へ”ボタンをクリックしてください。“ウィザードの結 果の表示”画面が表示され、“完了”ボタンをクリックすると、最後にパスワードを含めるかどうかを確認す るダイアログが表示されます。 “パスワードを含める”ボタンをクリックすると終了です。“oleDbAdapter1”と“oleDbConnection1”がフォ ームの下に追加されていることを確認してください。 DataSetを作成する前に、作成したDetaAdapterにより取得 するデータをマッピングするDataSetのテーブル名を設定しま す。このテーブル名は、帳票作成の際指定した、“データセッ トテーブル名”プロパティと同様である必要があります。 今 回 使 用 す る サ ン プ ル 帳 票 フ ォ ー ム product_list.xml に は “PRODUCT”という“データ行セット名”が指定されているので、 DataSetのテーブル名に“PRODUCT”を指定します。 oleDbDataAdapter1 のアイコンを右クリックし、表示されたメ ニューより“プロパティ”を選択してください。表示されたプロパ ティエディタ中の “Table Mappings”の“…”ボタンをクリックます。 WebReportCafe Designer の レポートのプロパティ 「データセットテーブル名」 Copyright(C) SIOS Technology, Inc. 8 プログラミングチュートリアル 表示された“TableMappings の設定”ダイアログの“データセット テーブル”テキストボックスに “PRODUCT”と入力し、“OK”ボタンをクリックします。 次にデータセットを作成します。“oleDbDataSetAdapter1”のプロパティエディタより“データセットの生 成…”をクリックします。表示された“データセットの生成” ダイアログの新規作成テキストボックスに、作成するデータセットの名称を指定します。 “ProductDataSet”と指定してください。 Copyright(C) SIOS Technology, Inc. 9 プログラミングチュートリアル 最後に“OK”ボタンをクリックします。productDataSet1 というアイコンがフォームに追加されていること を確認してください。 Copyright(C) SIOS Technology, Inc. 10 プログラミングチュートリアル WRC コンポーネントプロパティ設定 帳票を作成するコンポーネント WRCComponent を追加します。ツールボックスより WRCComponent を 選択し、フォームにドラッグ&ドロップしてください。フォームの下に wrcComponent1 というアイコンが追 加されたことを確認してください。 続いて WRCComponent のプロパティを設定します。DataSet プロパティに帳票作成に使用するデータ セット、FormFilePath プロパティに、帳票フォームへのファイルパスを設定し、OutputFilePath には作成 する PDF の出力先を指定します。 まず、wrcComponent1 のアイコンを右クリックし、表示されたメニューより“プロパティ”を選択してくださ い。表示されたプロパティエディタ上の DataSet プロパティのプルダウンリストから“productDataSet1”を 選択します。 FormFilePath プロパティの“…”をクリックします。表示された“ファイル選択”ダイアログを使用して、サ ンプルの帳票フォーム product_list.xml を選択してください。サンプルの帳票フォームは[CD-ROOT] \Engine\dnet\sample\form\dNET にインストールされています。 最後に OutputFilePath プロパティを設定します。このサンプルではカレントディレクトリに PDF を作成 することとします。OutputFilePath プロパティには“.\product_list.pdf”を指定してください。 Copyright(C) SIOS Technology, Inc. 11 プログラミングチュートリアル コーディング ボタンを押したときの動作を、コーディングします。“PDF 作成”ボタンをダブルクリックすると、コードエ ディタが表示され、“button1_Click”メソッドが追加されます。このメソッドに PDF の作成および表示処 理を実装すると下記のようになります。 private void button1_Click(object sender, System.EventArgs e) { productDataSet1.Clear(); ① oleDbDataAdapter1.Fill(productDataSet1); wrcComponent1.CreatePDF(); ----------------- ② axPdf1.LoadFile(wrcComponent1.OutputFilePath); ③ axPdf1.Show(); } ① データセットのクリアと、データの取得を行っています。データセットオブジェクトの Clear メソッドを 呼び出すことにより、データセットに保存したデータをクリアします。また DataDapter オブジェクト の Fill メソッドを呼び出すことにより、引数で指定したデータセットにデータを取得します。 ② 取得したデータを下に PDF を作成しています。WRCComponent の CreatePDF メソッドを呼び出 すだけで PDF を作成できます。 ③ Adobe Acrobat Control for ActiveX に PDF をロードし表示しています。 以上で、サンプルアプリケーションが完成しました。実行すると下記のような画面になることを確認して ください。 Copyright(C) SIOS Technology, Inc. 12 サンプルプログラム サンプルプログラム ●概要 WebReportCafe では、プログラム(C#、Visual Basic)を使用して Designer で作成した帳票フォームに対 して様々な操作を行うことができます。この章では、WebReportCafe に含まれているサンプルアプリケー ションを例に WebReportCafe のプログラミング方法について説明します。 ●開発環境 サンプルアプリケーションの開発環境にMicrosoft Visual Studio 2003 を使用します。 PDFの表示には、Adobe Acrobat 7.0 Browser Documentを使用します。このコントロールを使用するに は、AdobeReader7.0(http://www.adobe.co.jp/products/acrobat/readermain.html) のインストールが必要です。 サンプルの解説は C#を例に説明しますが、Visual Basic との API 上の差異はございません。Visual Basic を利用する場合は、[CD-ROOT] \Engine¥dnet¥Sample ¥VB に同様のサンプルがあります。 (※注 プロジェクトファイルを開いた際、WRCComponent, WRCdNet, AxPdfLib などの参照が切れ て表示されることがあります。その際は、一旦コンポーネント参照を削除した後、再度、コンポーネ ントの参照を設定してください。) ●サンプル一覧 ◆ PDFの作成、表示、印刷のサンプル ■ PDF、印刷を行う基本的なプログラミングについてのサンプルです。 ◆ オブジェクトの属性を動的に変更するサンプル ■ Text オブジェクトの値と背景色を変更するサンプルです。 ◆ PDFのパスワードを変更するサンプル ■ PDF に設定できるパスワードを動的に変更するサンプルです。 ◆ レポートのイベントを使用したサンプル 1 ■ セクションが表示される前に発生するイベントを使用したサンプルです。 ◆ レポートのイベントを使用したサンプル 2 ■ DataSet の行が移動したときに発生するイベントを使用したサンプルです。 ◆ レポートのイベントを使用したサンプル 3 ■ イメージデータを動的に変更するサンプルです。 ◆ 複数の帳票フォームから1つのPDFを作成するサンプル ■ 2つの異なる帳票フォームから1つのPDFを生成するサンプルです。 ◆ 入力データからPDFを生成するサンプル ■ RDBを使用せずに入力されたデータからPDFを生成するサンプルです。 ◆ プリンタにダイレクト印刷を行うサンプル ■ PDFを生成せずに直接プリンタへ印刷を実行するサンプルです。 ◆ 画像データを生成するサンプル ■ PDFを生成せずに直接プリンタへ印刷を実行するサンプルです。 ◆ ASP.NETを利用したPDF出力サンプル ■ ASP.NET を利用して、Web ブラウザに PDF を出力するサンプルです。 Copyright(C) SIOS Technology, Inc. 13 サンプルプログラム PDF の作成、表示、印刷のサンプル ◆ 概要 WebReportCafe から PDF 出力を行う基本クラス WRCComponent の基礎的な使用方法を説明しま す。また Acrobat Control for ActiveX を使用して、PDF を表示する方法及び印刷する方法をご紹介 します ◆ サンプルで使用するファイル プロジェクトファイル:[CD-ROOT] \Engine\dnet\Sample\CS\PrintSample\PrintSample.csproj 帳票フォーム:[CD-ROOT] \Engine\dnet\sample\form\dNET\product_list.xml ◆ 解説 PDF を作成するコードは、“PDF 作成”ボタンのクリックイベントハンドラとして下記のように実装します。 private void btnCreateReport_Click(object sender, System.EventArgs e) { btnCreateReport.Enabled = false; btnShowPdf.Enabled = false; btnPrintPdf.Enabled = false; resultLabel.Visible = false; axPdf.Hide(); try { wrc.DataSet = productDataSet; ① wrc.FormFilePath = "..\\..\\..\\..\\form\\dNET\\product_list.xml"; wrc.OutputFilePath = ".\\product_list.pdf"; productDataSet.PRODUCT.Clear(); dataAdapter.Fill(productDataSet); wrc.CreatePDF(); ② ③ //GUI部品の状態を変える btnShowPdf.Enabled = true; btnPrintPdf.Enabled = true; resultLabel.Visible = true; } finally { btnCreateReport.Enabled = true; } } ① WRCComponent オブジェクトのプロパティを設定します。“DataSet”プロパティには、帳票作成に使 用 す る デ ー タ が 格 納 さ れ て い る System.Data.DataSet ク ラ ス の イ ン ス タ ン ス を 指 定 し ま す 。 “FormFilePath”には使用する帳票フォームへのパスを指定します。また、“OutputFilePath”には出 力する PDF ファイルのパスを指定します。 各プロパティは VisualStudio のプロパティエディタでも編集できます。 ② 使用する DataSet を初期化し、データを取得しています。 ③ CreatePDF メソッドを呼び出すことにより PDF を作成しています。 Copyright(C) SIOS Technology, Inc. 14 サンプルプログラム 作成した PDF を表示するには、下記のようなコードを実装します。 Private void btnShowPdf_Click(object sender, System.EventArgs e) { axPdf.LoadFile(wrc.OutputFilePath); axPdf.Show(); } axPdf はフォームに貼り付けた Acrobat Control for ActiveX のオブジェクトです。LoadFile メソッドの引数 に、作成した PDF のパスを指定することにより、PDF をロードします。そして、Show メソッドを実行すること により、表示します。 ■ サンプルアプリケーション「PrintSample」の画面イメージ 作成した PDF を印刷するには、下記のように実装します。 private void btnPrintPdf_Click(object sender, System.EventArgs e) { axPdf.LoadFile(wrc.OutputFilePath); axPdf.printWithDialog(); } PDF をロードしたあと、printWithDialog メソッドを呼ぶことによって、印刷ダイアログを表示することがで きます。 Copyright(C) SIOS Technology, Inc. 15 サンプルプログラム Copyright(C) SIOS Technology, Inc. 16 サンプルプログラム オブジェクトの属性を動的に変更するサンプル ◆ 概要 WebReportCafe では作成した全てのレイアウト情報(セクションやプリントオブジェクト)の属性をプログラ ムの中から操作することが可能です。ここではレポート生成時に Textオブジェクトの属性をプログラムの 中から操作する方法について説明します。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT] \Engine\dnet\sample\CS\ChangeTextSample\ChangeTextSample.csproj 帳票フォーム:[CD-ROOT] \Engine\dnet\sample\form\dNET\sales_plan_list.xml ◆ 解説 下記の図は ChangeTextSample の動作イメージです。 変更前 プログラムからTextオブジェクト の値、 背景色を変更します 変更後 Copyright(C) SIOS Technology, Inc. 17 サンプルプログラム PDF を作成するコードは、“PDF 作成”ボタンのクリックイベントハンドラとして下記のように実装します。 private void createPdfBtn_Click(object sender, System.EventArgs e) { salesPlanDataSet.SALES_PLAN.Clear(); dataAdapter.Fill(salesPlanDataSet); wrc.LoadFormFile(); -------------① Text txt = (Text)wrc.GetPrintObject("PageHeader1","txtTitle");----② txt.Value = textBox1.Text; txt.FillColor =System.Drawing.Color.Yellow.ToArgb(); ③ wrc.CreatePDF(); axPdf.LoadFile(wrc.OutputFilePath); axPdf.Show(); } ① LoadFormFileメソッドにより帳票フォームを読み込みます。帳票フォームの各要素(テキスト、イメー ジ、バーコード、セクション等)に対応したクラスのインスタンスが作成され、各属性に対応したプロパティ がセットされます。レポート内のオブジェクト・セクションにアクセスする際には、必ずこのメソッドを使用し て帳票フォームを読込む必要があります。 ※LoadFormFileメソッドを明示的に呼ばない場合は、CreatePDFメソッドの実行時に呼ばれます。 ② 読み込んだオブジェクトに対してGetPrintObject(“セクション名”,“表示オブジェクト名”)で指定した セクション内にある表示オブジェクトを取得することができます。“セクション名”及び“表示オブジェク名” は WebReportCafe Designer で各オブジェクトのプロパティ[名前]で設定した値です。 取得したオブジェクトは、正しい型で変換する必要があります。今回の例ではテキストを変更するので、 Text クラスで型変換を行いましたが、取得するクラスによって変更する必要があります。 (例) バーコード ⇒ jp.co.tenartni.xreport.Barcode 線・四角形・角丸四角形 ⇒ jp.co.tenartni.xreport.Graphics イメージ ⇒ jp.co.tenartni.xreport.Image ③取得した Text オブジェクトの属性を変更します。WebReportCafe Designer 上で設定できる全てのプ ロパティに対して値を変更することが出来ます。ここでは、Text オブジェクトの「文字列」と「内部の色」を 変更します。 Copyright(C) SIOS Technology, Inc. 18 サンプルプログラム ■ サンプルアプリケーション「ChangeTextSample」の画面イメージ タイトルが「販売予定表」からテキスト BOX で入力された値” タイトルの変更”に変更されてい ることを確認して下さい。 Copyright(C) SIOS Technology, Inc. 19 サンプルプログラム PDF のパスワードを変更するサンプル ◆ 概要 通常、帳票フォームの作成時に設定する PDF 設定のデータ(パスワード等)を、プログラムからも設定す ることもできます。このサンプルでは PDF 設定のデータパスワードをプログラムから設定するサンプルプ ログラムについて説明します。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT] ¥Engine¥dnet¥sample¥CS¥PDFOptionSample ¥PDFOptionSample.csproj 帳票フォーム:[CD-ROOT] ¥Engine¥dnet¥sample¥form¥dNET¥ estimate_list1.xml ◆ 解説 PDFOption の値を操作するには、PDF の作成前に、帳票フォームをメモリ上に読み込む必要がありま す。下記のコードを参照してください。 private void createPdfBtn_Click(object sender, System.EventArgs e) { wrc.LoadFormFile(); -------① jp.co.tenartni.xreport.pdfoption.PDFOption option = wrc.GetPDFOption(); ----② option.getEncript().UserPassword = passwordTextBox.Text; -----③ estimateDataSet.Clear(); mainDataAdapter.Fill(estimateDataSet); subDataAdapter.Fill(estimateDataSet); wrc.CreatePDF(); axPdf1.LoadFile(wrc.OutputFilePath); axPdf1.Show(); } ① WRCComponent クラスの LoadFormFile メソッドを呼び出し、帳票フォームを読み込みます。 ② 帳票フォーム作成時に設定した PDF 設定に対応する PDFOption クラスのオブジェクトを取得します PDFOption クラスは、PDF 設定に対応する各クラスを保持しています。各クラスは getXXXX(クラス 名)メソッドで取得することが来ます。 ■文書情報・・・・jp.co.tenartni.xreport.pdfoption.DocumentInfo クラス ■セキュリティ・・・・jp.co.tenartni.xreport.pdfoption.Encrypt クラス ■アクション・・・・jp.co.tenartni.xreport.pdfoption.TriggerEvent クラス ■JavaScript・・・・jp.co.tenartni.xreport.pdfoption. JavaScript クラス ③ パスワードを設定するオブジェクトを取り出し、テキストフィールドに記述された文字列をパスワードと して設定しています。 以上で PDF 設定は終了です。後は通常通り、データを取得し、PDF を作成します。 Copyright(C) SIOS Technology, Inc. 20 サンプルプログラム ■ サンプルアプリケーション「PDFOptionSample」の画面イメージ サンプルプログラムを実行すると、パスワード入力ダイアログが表示されます。 テキストエリアに入力した文字列を入力し、OK ボタンを押すと PDF が表示されることを確認してくださ い。 Copyright(C) SIOS Technology, Inc. 21 サンプルプログラム レポートのイベントを使用したサンプル 1 ◆ 概要 ここでは、セクションの表示前に発生するイベント SectionCreating のハンドラを実装して、1ページ毎 に Data オブジェクトのプロパティを変更する方法について説明します。 ◆ サンプルで使用するファイル プロジェクトファイル:[CD-ROOT] \Engine\dnet\sample\CS\EventSample\EventSample.csproj 帳票フォーム:[CD-ROOT] \Engine\dnet\sample\form\dNET\product_list_sales.xml ◆ 解説 帳票作成時にはいくつかのイベントが発生し、jp.co.tenartni.xreport.WRCComponent クラスに、発 生したイベントを扱うイベントハンドラを追加することができます。WRCComponent クラスで扱うことがで きるイベントは下記のとおりです。 イベント名 CreateDirectImage NewPage PDFCreating PDFCreated RowMoved 説明 イメージオブジェクトが評価されるときに発生するイベント。 改ページ発生時イベント PDF 生成前イベント PDF 生成後イベント メインレポートに設定された DataSet の行が変わったときに発生する イベント セクション(PageHeader,PageDetail など)表示前イベント セクション(PageHeader,PageDetail など)表示後イベント SectionCreating SectionCreated レポート生成時のイベント動作イメージ PDFCreating RowMoved PDF 生成前に発生します。 このイベントのハンドラに、 PDF 生成前に必要な処理を 記述します ハンドラでは行番号、行のデ ータ等が取得できます SectionCreating CreateDirectImage SectionCreated NewPage PDFCreated ハンドラでは Image オブジェ クトの名称が取得できます。 また戻り値として画像オブジ ェクトを返すことにより、帳票 に表示できます ページの件数分、各メソッド が呼ばれます。 PDF 生成後に必要な処理を 記述します。 Copyright(C) SIOS Technology, Inc. 22 サンプルプログラム このサンプルではセクションの表示前に発生する SectionCreating イベントのハンドラを実装します。ハ ンドラでは、表示しているページが偶数または奇数で、セクションに表示する Data オブジェクトの背景 色を変更する処理を行います。 イベントハンドラを実装するには、フォームに配置した WRCComponent オブジェクトのアイコンを右クリ ックし、表示されたメニューより、プロパティを選択します。表示されたプロパティエディタの雷のアイコン をクリックします。 プロパティエディタに、イベントの一覧が表示されます。SectionCreating の右のセルをダブルクリック すると、コードエディタが表示され、イベントハンドラメソッド wrc_SectionCreating(String)が追加され ます。このメソッドに SectionCreating イベントが発生した際に行う処理を実装します。 VB を使用する場合は下記の手順でイベントハンドラを追加して下さい。 ①WRCComponent の選択 ②イベントハンドラの選択 Copyright(C) SIOS Technology, Inc. 23 サンプルプログラム イベントハンドラメソッド wrc_SectionCreating(String)処理を実装すると下記のようになります。 private void wrc_SectionCreating(string sectionName) { if (sectionName.Equals("GroupHeader1")) ------------------① { jp.co.tenartni.xreport.Data data = (jp.co.tenartni.xreport.Data)wrc.GetPrintObject("GroupHeader1","DataProduct"); ---② if (wrc.GetXReport().PageCount % 2 == 0) ----------------③ { data.FillColor = Color.Yellow.ToArgb(); ------------④ } else { data.FillColor = Color.White.ToArgb(); -------------④ } } } ① SectionCreating のイベントハンドラでは、文字列型の引数に、評価しているセクションの名称が渡 されます。このハンドラでは“GroupHeader1”というセクションの表示前に処理を行います。 ② 背景色を変更するデータオブジェクトを取得しています。セクションに配置されている各表示オブジ ェクトは、WRCComponent クラスの GetPrintObject メソッドを呼び出すことで取得できます。第1 引数にはセクション名、第2引数には表示オブジェクト名を指定します。 ③ 現在のページ番号が偶数か奇数か判定しています。 ④ ページ番号が偶数の場合と奇数の場合で、②で取得した Data オブジェクトの背景色として別々の 色を指定しています。 このサンプルを実行すると下図のようになります。ページ番号が偶数の場合と、奇数の場合では、背景 色が違う Data オブジェクトがあることを確認してください。 Copyright(C) SIOS Technology, Inc. 24 サンプルプログラム ■ サンプルアプリケーション「EventSample」の画面イメージ Copyright(C) SIOS Technology, Inc. 25 サンプルプログラム レポートのイベントを使用したサンプル 2 ◆ 概要 ここでは、メインレポートに設定された DataSet の行が移動したときに発生するイベント RowMoved の ハンドラを実装して、一行毎に Data オブジェクトのプロパティを変更する方法について説明します。 ◆ サンプルで使用するファイル プロジェクトファイル:[CD-ROOT] \Engine\dnet\sample\CS\RowEventSample\RowEventSample.csproj 帳票フォーム:[CD-ROOT] \Engine\dnet\sample\form\dNET\product_list.xml ◆ 解説 メインレポートに設定した DataSet の評価中の行が移動したときに発生する、RowMoved イベントのハ ンドラを実装します。ハンドラでは、評価中の行番号が偶数または奇数で、表示する Data オブジェクト の背景色を変更する処理を行います。 イベントハンドラを実装するには、フォームに配置した WRCComponent オブジェクトのアイコンを右クリ ックし、表示されたメニューより、プロパティを選択します。表示されたプロパティエディタの雷のアイコン をクリックします。 プロパティエディタに、イベントの一覧が表示されます。RowMoved の右のセルをダブルクリックすると、コ ードエディタが表示され、イベントハンドラメソッド wrc_RowMoved(int,System.Data.RowView)が追加され ます。このメソッドに RowMoved イベントが発生した際に行う処理を実装します。 Copyright(C) SIOS Technology, Inc. 26 サンプルプログラム イベントハンドラメソッド wrc_RowMoved(int,System.Data.RowView)処理を実装すると下記のようになりま す。 private void wrc_RowMoved(int { jp.co.tenartni.xreport.Data jp.co.tenartni.xreport.Data jp.co.tenartni.xreport.Data currentRowIndex, System.Data.DataRowView currentRow) priceData = null; costData = null; nameData = null; priceData = (jp.co.tenartni.xreport.Data)wrc.GetPrintObject("PageDetail1","DataPrice"); costData = ① (jp.co.tenartni.xreport.Data)wrc.GetPrintObject("PageDetail1","DataCost"); nameData = (jp.co.tenartni.xreport.Data)wrc.GetPrintObject("PageDetail1","DataProduct"); if (currentRowIndex % 2 == 0) ------------ ② { priceData.FillColor = System.Drawing.Color.Yellow.ToArgb(); costData.FillColor = System.Drawing.Color.Yellow.ToArgb(); nameData.FillColor = System.Drawing.Color.Yellow.ToArgb(); } else { priceData.FillColor = System.Drawing.Color.White.ToArgb(); costData.FillColor = System.Drawing.Color.White.ToArgb(); nameData.FillColor = System.Drawing.Color.White.ToArgb(); } ③ ③ } ① 背景色を変更するデータオブジェクトを取得しています。 ② 行番号が偶数か奇数かを判定しています。イベントハンドラの第一引数には行番号、第二引数に は行データが指定されます。 ③ ①で取得したデータオブジェクトに、偶数または奇数の場合でそれぞれ違う背景色を設定していま す Copyright(C) SIOS Technology, Inc. 27 サンプルプログラム ■ サンプルアプリケーション「RowEventSample」の実行イメージ 行番号が偶数の場合と、奇数の場合では、背景色が違うオブジェ クトがあることを確認してください。 Copyright(C) SIOS Technology, Inc. 28 サンプルプログラム レポートのイベントを使用したサンプル 3 ◆ 概要 ここでは、イメージオブジェクトが評価されるときに発生するイベント CreateDirectImage のハンドラを実装 して、動的にイメージ(System.Drawing.Bitmap)を作成して PDF を出力する方法について説明します。 サンプル帳票フォーム「DirectImageSample.xml」を WebReportCafe Designer で開いてください。この帳 票フォームには「Image1」と「Image2」というイメージオブジェクトが存在しますが、どちらのイメージオブジ ェクトにも画像の取得先を示す属性「イメージの場所」が指定されていないことが分かります。このサンプ ルでは、この2つのイメージオブジェクトに対して動的にイメージ(System.Drawing.Bitmap)を作成して設 定する方法について説明します。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT] \Engine\dnet\sample\CS\DirectImageSample\DynamicImageSample.csproj 帳票フォーム:[CD-ROOT] \Engine\dnet\sample\form\dNET\DirectImageSample.xml ◆ 解説 1. イメージを動的に作成するイベントの使用 WRCComponent クラスのイベント、「CreateDirectImage」イベントハンドラを追加することで、イメージを動 的に設定することが出来ます。このイベントに対する文字列型の引数には、イメージオブジェクトの名前 が渡されます。この引数により、現在処理されているイメージオブジェクト名を判定し、動的にイメージを 作成し、System.Drawing.Bitmap 型で戻り値として返す処理を実装することにより、各イメージオブジェク トに動的にイメージを渡すことができます。戻り値として null を返した場合は、イメージオブジェクトに設定 されたパスから画像データが取得されます。 2.イメージを動的に作成するイベントの使用するには、WRCComponent のプロパティを開きます。 CreateDirectImage の右 のセルをダブルクリック プロパティエディタに、イベントの一覧が表示されます。CreateDirectImage の右のセルをダブルクリック すると、コードエディタが表示され、イベントハンドラメソッド wrc_ CreateDirectImage (string)が追加され ます。このメソッドに CreateDirectImage イベントが発生した際に行う処理を実装します。 Copyright(C) SIOS Technology, Inc. 29 サンプルプログラム イベントハンドラメソッド wrc_ CreateDirectImage (string)処理を実装すると下記のようになります。 private System.Drawing.Bitmap wrc_CreateDirectImage(string imageName) { System.Drawing.Bitmap bitmap = null; //動的にBitmapイメージを作成します。 if (imageName=="Image1") { bitmap = new System.Drawing.Bitmap(170, 170); Graphics graphics = Graphics.FromImage(bitmap); string stringText = " * WebReportCafe *"; Font fonLable = new Font("MS Serif", 12,FontStyle.Bold); SizeF size = graphics.MeasureString(stringText, fonLable); graphics.DrawString(stringText, fonLable, Brushes.White, (bitmap.Width - size.Width) / 2, (bitmap.Height - size.Height) / 2); } //イメージファイルを読込んでBitmapイメージを作成します else if (imageName=="Image2") { System.IO.FileStream fileStream = new System.IO.FileStream("..\\..\\..\\..\\form\\image\\10art-ni_logo.jpg" ,System.IO.FileMode.Open,System.IO.FileAccess.Read); bitmap = new System.Drawing.Bitmap(fileStream); } else { } return bitmap; ① ② ① 動的に Bitmap イメージを作成します。CreateDirectImage イベントに対する文字列型の引数には、 イメージオブジェクトの名前が渡されます。この引数により、現在処理されているイメージオブジェクト名 を判定し、動的にイメージを作成します。作成したイメージ名が“Image1”の場合は、 「“* WebReportCafe *”」というイメージを作成(System.Drawing.Bitmap)して設定します。 ② イメージファイルを読込んでBitmapイメージを作成します。WRC Designerで作成したイメージ名が “Image2”の場合は、ファイルからイメージを取得して設定しています。 Copyright(C) SIOS Technology, Inc. 30 サンプルプログラム ■ サンプルアプリケーション「DirectImageSample」の画面イメージ Copyright(C) SIOS Technology, Inc. 31 サンプルプログラム 複数の帳票フォームから1つの PDF を作成するサンプル ◆ 概要 WebReportCafe では複数の帳票フォーム(XML 帳票定義ファイル)から、1つの PDF ファイルを作成す ることが出来ます。 MultiPDFComponent クラスは複数の帳票フォームから1つの PDF を生成する為の コンポーネントです。帳票フォーム(AAA.xml)と帳票フォーム(BBB.xml)と帳票フォーム(CCC.xml) を組 み合わせた場合、下記のような PDF が生成されます。 AAA.xml (2 頁) BBB.xml (2 頁) CCC.xml (1 頁)の場合 AAA AAA BBB BBB CCC MultiPDFComponent の制限事項 1.TotalPageNoオブジェクトを配置することはできません。-1が表示されます。 2.PDFオプションのパスワード暗号付き帳票フォームを複数設定するはできません。 3.PDFオプションのパスワード暗号付き帳票フォームを指定する場合は1番始めに設定する必要があります。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT]\Engine\dnet\sample\CS\MultiReportFormSample\MultiReportFormSample.csproj 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\form\dNET\sales_plan_list.xml 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\form\dNET\product_list_sales_outline.xml ◆ 解説 1.MultiReportForm クラスの「PDF 生成」ボタンクリック(createPdfBtn_Click)時のイベント処理 private void createPdfBtn_Click(object sender, System.EventArgs e) { productDataSet.PRODUCT_SALES.Clear(); dataAdapterProduct.Fill(productDataSet); estimateDataSet.ESTIMATE_LABEL.Clear(); dataAdapterEstimate.Fill(estimateDataSet); if (chkBoxEstimate.Checked && chkBoxProduct.Checked) { WRCComponent[] wrcComs = new WRCComponent[]{wrcEstimate,wrcProduct};① multiPDFCom.WRCComponent = wrcComs; multiPDFCom.CreatePDF(); --------② } ① 帳票フォームの数分の WRCComponent クラスを作成し、配列を作成します。配列にした順番で PDF が生成されます。 ②作成されたWRCComponentの配列を、MultiPDFComponentクラスのプロパティ「WRCComponent」に 設定します。CreatePDF()メソッドを使用してPDFを作成します。 Copyright(C) SIOS Technology, Inc. 32 サンプルプログラム ■ サンプルアプリケーション「MultiReportFormSample」の画面イメージ 8 ページ目から帳票が「製品別売上リスト」になります Copyright(C) SIOS Technology, Inc. 33 サンプルプログラム 入力データから PDF を生成するサンプル ◆ 概要 ここでは、データベースを使用せずに、画面上で入力されたデータから PDF を作成する方法について 説明します。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT]\Engine\dnet\sample\CS\ nputDataSample\InputDataSample.csproj 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\CS\InputDataSample\input_estimate_list.xml ※ サ ン プ ル で 使 用 す る帳 票 フ ォ ー ム ( input_estimate_list.xml ) は 仮 想 の SQL を 使 用 し て い る 為 WebReportCafe Designer 上からの PDF プレビューはできません。 ◆ 解説 今までのサンプルではデータソースに RDB(MS Access)を使用しましたが、今回のサンプルでは画面 から入力されたデータを元に、データ(DataSet)を作成し PDF を生成します。 WebReportCafe ではデータソース(RDB,CSV,XML,etc)に関わらず、DataSet に格納されたデータ から PDF を生成することが出来ます。 1.InputDataForm クラスの「PDF 生成」ボタンクリック(btnPdf_Click)時のイベント処理 private void btnPdf_Click(object sender, System.EventArgs e){ //帳票フォームの設定 wrc.FormFilePath = "..\\..\\input_estimate_list.xml"; //データの設定 wrc.DataSet=getEstimateDataSet(); ・・・・・・・>このメソッドで DataSet を作成します。 //出力パスの設定 wrc.OutputFilePath=".\\InputData.pdf"; //PDFの生成 wrc.CreatePDF(); //PDFプレビュー System.Diagnostics.Process.Start(".\\InputData.pdf"); } Copyright(C) SIOS Technology, Inc. 34 サンプルプログラム 2.InputDataForm クラスの getEstimateDataSet メソッド このメソッドでは入力されたデータから見積書の DataSet を作成します。 private DataSet getEstimateDataSet(){ DataSet dataSet = new DataSet(); DataTable table = new DataTable(); //テーブル名の設定 ・・・① table.TableName= "DUMMY"; //データ定義 ・・・② table.Columns.Add(new DataColumn("CUSTOMER_NAME",System.Type.GetType("System.String"))); table.Columns.Add(new DataColumn("CUSTOMER_PER",System.Type.GetType("System.String"))); table.Columns.Add(new DataColumn("CUSTOMER_DEPT",System.Type.GetType("System.String"))); //・・・・省略 //入力されたデータをDataSetに入れる ・・・③ DataRow row = table.NewRow(); row["CUSTOMER_NAME"]= txtCustomer.Text; row["CUSTOMER_PER"]= txtCustomer_per.Text ; row["CUSTOMER_DEPT"]= txtDept.Text ; //・・・・省略 table.Rows.Add(row); dataSet.Tables.Add(table); return dataSet; } ① DataSet の テ ー ブ ル 名 を 設 定 し ま す 。 DataSet の TableName に は 、 帳 票 フ ォ ー ム (input_estimate_list.xml)の「データセットテーブル名」プロパティと一致させる必要があります。 ② カラム情報を作成します。DataColumn に設定するカラム名は、帳票フォーム (input_estimate_list.xml)の各Dataオブジェクトに設定されている「フィールド名」プロパティと一致さ せる必要があります。 ③ 作成した行(DataRow)に入力されたデータを設定します。 Copyright(C) SIOS Technology, Inc. 35 サンプルプログラム ■ サンプルアプリケーション「InputDataForm」の画面イメージ 入力されたデータから PDF が作成され Adobe Reader が起動します。 Copyright(C) SIOS Technology, Inc. 36 サンプルプログラム プリンタにダイレクト印刷を行うサンプル ◆ 概要 ここでは、PDF を生成せずに直接プリンタへ印刷する方法について説明します。ダイレクト印刷機能を 使用することで、サーバーサイドからの一括印刷や大量印刷を実現することが出来ます。 ◆ サンプルで使用するファイル プロジェクトファイル: [CD-ROOT]\Engine\dnet\sample\CS\DirectPrintSample\DirectPrintSample.csproj 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\form\dNET\estimate_dept.xml ◆ 解説 今までのサンプルでは PDF を生成してから表示・印刷といった処理を行ってきましたが、このサンプル ではプリンタに直接印刷する方法について解説します。WRCComponent クラスの基本的な使用方法は PDF 作成と同じですが、印刷時のみに有効なプロパティとメソッドが幾つかあります。 WRCComponent クラスの印刷プロパティ プロパティ名 説明 DocumentName 印刷時に表示されるドキュメント名(ジョブ名)を設定します。 PrinterName 印刷時に出力するプリンター名を設定します。 設定しない場合は OS のデフォルトのプリンタが使用されます。 Copies 印刷時のコピーの部数を設定します。 デフォルトは1です。 PageSetupDialog このプロパティに System.Windows.Forms.PageSetupDialog が設定さ れている場合、Print()メソッド実行時に余白や用紙方向などのペー ジ設定を選択するダイアログが表示されます。 PrintDialog このプロパティに System.Windows.Forms.PrintDialog が設定されて いる場合、Print()メソッド実行時にプリンタを選択し、印刷するドキュ メント部分を選択するダイアログが表示されます。 CustomPageSettting 印刷時に System.Drawing.Printing.PageSettings を手動で設定する かどうか設定します。非定型用紙などを使用する場合に使用しま す。 WRCComponent クラスの印刷メソッド プロパティ名 説明 Print() 印刷処理を実行します。 印刷時にステータスダイアログが表示されます。 Print(boolean Dialog) 印刷処理を実行します。 引数に false を設定すると印刷ステータスダイアログは表示されま せん。 ShowPrintPreviewDialog 印刷プレビューダイアログを表示します。引数には表示するウィンド ウのサイズ(FormWindowState クラス)を指定します。 (FormWindowState size) Copyright(C) SIOS Technology, Inc. 37 サンプルプログラム 1.DirectPrintForm クラスの「印刷(ステータスダイアログ無し)」ボタンクリック(printBtn_Click)時のイ ベント処理 private void printBtn_Click(object sender, System.EventArgs e) { //DBベースからデータをロードする estimateDataSet1.ESTIMATE_EMP.Clear(); dataAdapter.Fill(estimateDataSet1); ・・・・・・・>このメソッドで DataSet を作成します。 //プリンター名を設定します。 if (printerNameCombo.SelectedItem !=null) { wrc.PrinterName = printerNameCombo.SelectedItem.ToString(); } //印刷を実行します ・・・① wrc.Print(false); } ① 印刷処理を実行します。WRCComponent クラスの Print(boolean printStatusDialog)メソッドの 引数に false を指定することで、印刷ステータスダイアログを非表示にしています。 2.DirectPrintForm クラスの「印刷プレビュー」ボタンクリック(previewBtn_Click)時のイベント処理 private void previewBtn_Click(object sender, System.EventArgs e) { //DBベースからデータをロードする estimateDataSet1.ESTIMATE_EMP.Clear(); dataAdapter.Fill(estimateDataSet1); //プリンター名を設定します。 if (printerNameCombo.SelectedItem !=null) { wrc.PrinterName = printerNameCombo.SelectedItem.ToString(); } //印刷プレビューを実行します ・・・① wrc.ShowPrintPreviewDialog(FormWindowState.Maximized); } ① 印刷プレビューを実行します。WRCComponent クラスの ShowPrintPreviewDialog ()メソッドを 使用するこで、印刷プレビューを実行することが出来ます。引数には表示するウィンドウのサイ ズを指定します。 Copyright(C) SIOS Technology, Inc. 38 サンプルプログラム 3.DirectPrintForm クラスの「印刷(プリンタダイアログ有り)」ボタンクリック(printDialogBtn_Click)時 のイベント処理 private void printDialogBtn_Click(object sender, System.EventArgs e) { //DBベースからデータをロードする estimateDataSet1.ESTIMATE_EMP.Clear(); dataAdapter.Fill(estimateDataSet1); //PageSetupDialogクラスの作成 System.Windows.Forms.PrintDialog pd = new System.Windows.Forms.PrintDialog(); //PageSetupDialogを設定します。 ・・・① wrc.PrintDialog = pd; //プリンタダイアログを表示する ・・・② if (pd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //OKがクリックされた時は印刷する wrc.Print(); } //WRCComponentの設定を基に戻します。 wrc.PrintDialog = null; } ① プ リ ン タ ダ イ ア ロ グ を 表 示 す る 場 合 は 、 WRCComponent ク ラ ス の PageSetupDialog に System.Windows.Forms.PrintDialog クラスを設定する必要があります。このプロパティが設定 されている場合は、Print()メソッド実行時にプリンタ選択ダイアログが表示されます。 ② PrintDialog クラスの ShowDialog()メソッドを実行するとプリンタ選択ダイアログが表示 されます。プリンタ選択ダイアログで OK が押され時に印刷を実行します。 Copyright(C) SIOS Technology, Inc. 39 サンプルプログラム ■ サンプルアプリケーション「DirectPrintForm」の画面イメージ 印刷処理が実行されます。 プリンタダイアログ 印刷プレビュー Copyright(C) SIOS Technology, Inc. 40 サンプルプログラム 画像データを作成するサンプル ◆ 概要 ここでは、画像データを作成する方法について説明します。画像出力機能を使用することで、Adobe Reader がインストールされていない環境でも、帳票のイメージを表示することが出来ます。 ◆ サンプルで使用するファイル プロジェクトファイル:[CD-ROOT]\Engine\dnet\sample\CS\ImageSample\ImageSample.csproj 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\CS\ImageSample\gensen.xml ◆ 解説 このサンプルでは画像データを作成し、表示する方法について解説します。WRCComponent クラスの基 本的な使用方法は PDF 作成の際と同じですが、画像データ作成時のみに有効なメソッドが幾つかあり ます。 WRCComponent クラスの画像生成機能の関連メソッド プロパティ名 説明 LoadPageImage() 全てのページの中間データを作成します。作成された中間データ は、一時ファイルに保存されます。 LoadPageImage(Boolean 全てのページの勇敢データを作成します。引き数により、中間デー onMemory) タをメモリ上に展開するか、一時ファイルに保存するかを指定できま す。 引き数に true を設定すると、全ての中間データをメモリ上に展開し ます。メモリリソースを消費しますが、高速に処理することが出来ま す。 GenerateImage(int page) LoadPageImage メソッドで作成した、中間データを元に、引き数で指 定したページの画像データの System.Drawing.Bitmap オブジェクトを 作成します。 このメソッドを呼び出す前に、LoadPageImage を実行する必要があ ります。 GenerateImage(int LoadPageImage メソッドで作成した、中間データを元に、引き数で指 page,float scale) 定したページの画像データの System.Drawing.Bitmap オブジェクトを 作成します。Scale 引き数には作成する画像データの倍率を指定す ることが出来ます。 このメソッドを呼び出す前に、LoadPageImage を実行する必要があ ります。 GenerateAllImage() 全ての画像データを一度に作成することが出来ます。使用方法は GenerateImage と同様です。戻り値は System.Drawing.Bitmap の配 列となります。 GenerateAllImage(float 倍率を指定して全ての画像データを一度に作成することが出来ま scale) す 。 使 用 方 法 は GenerateImage と 同 様 で す 。 戻 り 値 は System.Drawing.Bitmap の配列となります。 Copyright(C) SIOS Technology, Inc. 41 サンプルプログラム 1.メインのフォームロード時のイベント処理 private void ImageSampleForm_Load(object sender, System.EventArgs e) { //ダミーの行を作成 DataTable table = this.dataSet.Tables["MainTable"]; table.Rows.Clear(); table.Rows.Add(new Object[table.Columns.Count]); … … //帳票フォームをロード …① wrcComponent.LoadFormFile(); … … } ① WRCComponent を初期化します。初期化方法はPDF作成時と同様です。ここでは、LoadFormFile メソッドを呼び出し、プロパティに指定された帳票フォームを読み込んでいます。 2.入力データ変更時のイベント処理 private void textChanged(object sender, System.EventArgs e) { …… //全てのページの中間データを作成 …① wrcComponent.LoadPageImage(true); //指定されたページ番号の画像データを作成する …② System.Drawing.Bitmap bitmap = wrcComponent.GenerateImage(0, 2f); //新しいイメージデータを表示 …③ reportImage.Image = bitmap; reportImage.Refresh(); } ① WRCComponent の LoadPageImage を呼び出すことによって、画像データを作成するための中間デ ータを作成します。この例では 1 ページのみの帳票なので、引き数として true を設定し、メモリ上に中間 データを作成しています。 ② 指定したページの画像データ Bitmap オブジェクトを作成しています。この例では、ページ番号として 0 の先頭ページを指定し、画像の倍率には2を指定しています。 ③ 取得した画像データを PictureBox に設定し、表示します。 Copyright(C) SIOS Technology, Inc. 42 サンプルプログラム 3.「画像を保存」ボタンクリック時のイベント処理 private void saveBtn_Click(object sender, System.EventArgs e) { DialogResult ret = imageSaveDialog.ShowDialog(this); if (ret.Equals(DialogResult.OK)) { reportImage.Image.Save(imageSaveDialog.FileName); …① } } ③ ① 2 で設定した Bitmap オブジェクトを取り出し、ファイルに保存しています。 ■ サンプルアプリケーション「DirectPrintForm」の画面イメージ 入力データを更新すると 即座に反映されます 表示画像をファイ ルに保存します Copyright(C) SIOS Technology, Inc. 43 サンプルプログラム ASP.NET を利用した PDF 出力サンプル ◆ 概要 WebReportCafe では、Web アプリケーション環境からも簡単に PDF 出力することが出来ます。 クライアント環境には、Adobe Reader をインストールするだけで ASP.NET 上で作成した PDF をクライア ントの Web ブラウザに出力することが出来ます。ここでは、ASP.NET からの PDF 出力について説明しま す。 ◆ サンプルで使用するファイル プロジェクトファイル:[CD-ROOT]\Engine\dnet\sample\CS\WebAppSample\WebAppSample.csproj 帳票フォーム:[CD-ROOT]\Engine\dnet\sample\form\dNET\product_list.xml ◆ 解説 Web アプリケーションのサンプルを動作させるには「インターネット インフォメーション サービス」をイン ストール後、下記の設定を行う必要があります。 (※「インターネット インフォメーション サービス」のインストール方法については、マイクロソフト社の Web ページなどを参照してください。) 1.Windows のスタートメニューから、「コントロールパネル」→[管理ツール]→[インターネット インフォメ ーション サービス]を開きます。 2.仮想ディレクトリの作成 「既定の Web サイト」を右クリック→「新規作成」→「仮想ディレクトリ」をクリックします。 ウィザードに従い以下の項目を設定して下さい。 Copyright(C) SIOS Technology, Inc. 44 サンプルプログラム 仮想ディレクトリの作成手順 仮想ディレクトリ エイリアス [エイリアス]フィールドに、Web サンプルの別名を設定します。 C#の場合:WebAppSample VB の場合:WebAppSampleVB Web サイトのコンテンツディレクトリ パス 「参照ボタン」をクリックして、サンプルがインストールされているフォルダを選択します。 例:[CD-ROOT]\Engine\dnet\sample\CS\WebAppSample アクセス許可 [書き込み]、[ASP などのスクリプトを実行する]のチェックボックスを ON にします。 以上で仮想ディレクトリの作成は終了です。 Visual Studio を起動して、「ファイル」→「開く」→「プロジェ クト」からサンプルプロジェクトを開いてください。 PDF を作成するコードは、“PDF 作成”ボタンのクリックイベントハンドラとして下記のように実装します。 private void Button1_Click(object sender, System.EventArgs e) { Response.ContentType = "application/pdf"; ---------① productDataSet.PRODUCT.Clear(); dataAdapter.Fill(productDataSet); wrc.FormFilePath = Server.MapPath("./report/product_list.xml"); wrc.OutputFileStream = Response.OutputStream; ---------② wrc.CreatePDF(); Response.End(); } ① PDFが表示されるようにコンテントタイプを指定します。PDFをWebブラウザで表示させる為には、コ ンテントタイプを「application/pdf」に設定する必要があります。 ② 出力する System.IO.Stream を設定します。出力する Response オブジェクトの OutputStream を設 定します。CreatePDF メソッドが実行されると設定された OutputStream に PDF の内容が書き込まれま す。 Copyright(C) SIOS Technology, Inc. 45 サンプルプログラム ■ サンプルアプリケーション「WebAppSample」の画面イメージ Copyright(C) SIOS Technology, Inc. 46 サンプルプログラム 補足 DLL について WebReportCafe for .NET で帳票作成時に使用する DLL は、下記の 3 つです。 WRCdNET.dll ・・・・・・・・・・・・帳票を作成するロジックが実装されています。 WRCComponent.dll ・・・・・・・開発環境から使用するためのコンポーネント。 WRCDigSig.dll ・・・・・・・電子署名時をするためのコンポーネント。 外字について 1..NET 版の場合、Windows 上の外字フォントファイルを検索して取り込みます。 ※ Win2000 系([DRIVE]:/WINNT\Fonts\EUDC.TTE) ※ Win98 系([DRIVE]:/WINDOWS\Fonts\EUDC.TTE) 外字を表示するには、各クライアントマシンの OS にあらかじめ外字を登録しておく必要があります。 2.帳票作成時、WRC Designer のプロパティ「外字」を“はい”に設定します。 Copyright(C) SIOS Technology, Inc.