前回の記事では、作成した帳票をPrintToPrinter()メソッドでプリンタに出力しました。
参考:CrystalReportsで自作DataSetを元に帳票を印刷する。
帳票の結果を常に印刷したい場合は前回の方法で問題ないのですが、出力結果をメールしたい場合等においては結果をpdfの電子媒体として保存したい場合もあります。このような場合はCrystalReportDocumentクラスが持っているExportOptionsプロパティを指定する事によって、プリンタではなくPDFファイルへ出力する事が可能です。
PDF出力を行う処理は以下の通りです。
※下記のコードは前回の記事で作成したプログラムを元にしていますので、帳票レイアウト作成などの手順について知りたい場合は過去記事を参照してください。
private void button1_Click( object sender, EventArgs e ) { // レコード定義を行う DataTable table = new DataTable(); table.Columns.Add("id", Type.GetType("System.String")); table.Columns.Add("name", Type.GetType("System.String")); table.Columns.Add("price", Type.GetType("System.Int32")); // 印字データを追加 DataRow row; row = table.NewRow(); row["id"] = "iten_no1"; row["name"] = "りんご"; row["price"] = 200; table.Rows.Add(row); row = table.NewRow(); row["id"] = "iten_no2"; row["name"] = "みかん"; row["price"] = 220; table.Rows.Add(row); row = table.NewRow(); row["id"] = "iten_no3"; row["name"] = "ばなな"; row["price"] = 40; table.Rows.Add(row); // 印字データをセット crystalReport1.SetDataSource( table ); crystalReport1.Refresh(); // プリンタに印刷 //crystalReport1.PrintToPrinter( 0, false, 0, 0 ); // PDF形式でファイル出力 try { // 出力先ファイル名を指定 CrystalDecisions.Shared.DiskFileDestinationOptions fileOption; fileOption = new CrystalDecisions.Shared.DiskFileDestinationOptions(); fileOption.DiskFileName = "c:\\work\\output.pdf"; // 外部ファイル出力をPDF出力として定義する CrystalDecisions.Shared.ExportOptions option; option = crystalReport1.ExportOptions; option.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile; option.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat; option.FormatOptions = new CrystalDecisions.Shared.PdfRtfWordFormatOptions(); option.DestinationOptions = fileOption; // pdfとして外部ファイル出力を行う crystalReport1.Export(); } catch (Exception ex) { MessageBox.Show( ex.Message ); } } |
今回変更があった場所は、try内の記述です。
まず元にDiskFileDestinationOptionsオブジェクトを使用して、pdfファイルの出力先を決定します。
次にcrystalReportDocument.ExportOptionsが管理している4つのプロパティをセットする事で、データをpdf形式でファイル出力する事を定義しています。
最後にcrystalReportDocument.Export()をコールし、実際にpdfファイルを作成します。
このプログラムを実行しすると、以下のようにpdfファイルが作成されるはずです。
中身も、前回作成したものと同じになっています。
関連記事
コメントを残す