2022年7月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
無料ブログはココログ

« Oracle ELSIF | トップページ | 電源とケースを購入 »

CrystalReports ASP.NETでPDF出力

ASP.NETでCrystalReportsを利用する場合に、CrystalViewerを利用する方法がありますが、
データ件数が多かったり、サブレポートを使用していたりするとViewerのレスポンスが悪く、パフォーマンス的に問題になることがあります。(推測ですがページ移動する毎に再度データを読み込んだりしているのでは・・・)
PDFに出力すると、レポート自体をイメージで出力するのでレスポンスが改善される場合があります。

ASP.NETからPDF出力する簡単な例(C#)
※VS2003

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

// rptName:ファイル名指定します
// (例) ExportToPDF(@"C:\Inetpub\wwwroot\WebApplication1\CrystalReport1.rpt");

private void ExportToPDF (string rptName)
{
    ReportDocument Report = new ReportDocument();

    // レポートファイルの読み込み
    Report.Load(rptName);

    // オプションを取得および設定
    ExportOptions exportOpts;
    exportOpts = Report.ExportOptions;
    exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat;
    exportOpts.FormatOptions = new PdfRtfWordFormatOptions();

    ExportRequestContext req = new ExportRequestContext();
    req.ExportInfo = exportOpts;

    // ストリームへエクスポート
    System.IO.Stream outStream = Report.FormatEngine.ExportToStream(req);

    byte[] bLength = new byte [outStream.Length];
    outStream.Read(bLength, 0, (int)outStream.Length);
    outStream.Close();

    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "Application/pdf";

    // ダイアログ表示
    Response.AddHeader("content-disposition","attachment; filename=test.pdf");

    // HTTP 出力ストリームに書き込み
    Response.BinaryWrite(bLength);
    Response.End();

}

・Report.FormatEngine.ExportToStreamでストリームにエクスポートしています。
・Response.ContentTypでPDFを指定します。
・Response.BinaryWriteでクライアントに送信しています。


2007/07/28 追記

// ダイアログ表示
Response.AddHeader("content-disposition","attachment; filename=test.pdf");


« Oracle ELSIF | トップページ | 電源とケースを購入 »

CrystalReports」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: CrystalReports ASP.NETでPDF出力:

« Oracle ELSIF | トップページ | 電源とケースを購入 »