2007年1月26日金曜日

[ASP.NET] ASP.NETでPDFをStream出力

VB.NET で Webアプリケーションを作成します。
んで、参照設定で「CrystalDecisions.*」を設定。
次にプロジェクトにCrystalレポートファイルを追加します。
ファイル名(=クラス名)MDA20で保存します。

フォームにボタンを追加してクリックイベントに以下のコードを書くと
サーバ上にpdfファイルを作成せずにクライアントにダウンロードさせることが出来まっす。

あ、imports はテキトウに設定をしないとだめだす。

--------------------------

Dim Report As New ReportDocument
Dim exportOpts As New ExportOptions
Dim b As Byte()
Dim st As System.IO.Stream

'レポートをロード
Report = New Report20

'以下エクスポート処理
exportOpts = Report.ExportOptions

'PDFを指定
exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat

'
' PDFのオプション設定
'
Dim pdfOption As New PdfRtfWordFormatOptions
' ページ指定
pdfOption.FirstPageNumber = 1
exportOpts.FormatOptions = pdfOption

' ↓なぞ
Dim req As ExportRequestContext = New ExportRequestContext
req.ExportInfo = exportOpts

'出力先はStream
st = Report.FormatEngine.ExportToStream(req)

ReDim b(st.Length)
' データをバイト列に変換
st.Read(b, 0, Convert.ToInt32(st.Length))

' ブラウザに出力する場合はこれ
'Response.ContentType = "Application/pdf"
'Response.BinaryWrite(b)
'Response.End()

' 保存ダイアログを表示する場合はこっち
With HttpContext.Current.Response
.ContentType = "application/pdf"
' 日本語はだめっぽい
.AppendHeader("content-disposition", "attachment; filename=Report20.pdf")
.BinaryWrite(b)
.End()
End With

0 件のコメント: