PDFを自動生成
帳票定義体が作成できたら、CZ0906PdfBoundプロジェクトに帳票定義体 からPDFを生成するコードを追加します。
今回のサンプルでは、帳票定義体に設定するデータはASP.NET WebサービスのCZ0906Boundから受け取ることになるので、帳票定義体のあるCZ0906PdfBoundプロジェクトと同一ソリューションにしておくと、テスト時にデバッグ実行しやすくなります。
PDF出力用の参照設定
CZ0906PdfBoundサンプルでは、PDFの出力を行うためにActiveReportsのPDF出力用の参照設定を追加します。
Webフォームにコードを記述
ソリューションの準備ができたなら、帳票定義体からPDFを生成する コードを記述します。
Imports DataDynamics.ActiveReports Partial Class _Default Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load If Not Me.IsPostBack Then Using _web As New WebBillBound.BillBound Dim rpt As New Seikyu_Report() rpt.DataSource = _web.GetRecords("admin", "", "").Tables(0) ' 仮想プリンタを設定します。 rpt.Document.Printer.PrinterName = "" rpt.PageSettings.PaperKind = Drawing.Printing.PaperKind.A4 rpt.PageSettings.Orientation = Document.PageOrientation.Portrait rpt.PageSettings.Margins.Top = ActiveReport3.CmToInch(0.5F) rpt.PageSettings.Margins.Bottom = ActiveReport3.CmToInch(0.5F) ' rpt.Run() Using _stream As New System.IO.MemoryStream() Dim p As New DataDynamics.ActiveReports.Export.Pdf.PdfExport() p.Export(rpt.Document, _stream) _stream.Position = 0 Response.ContentType = "application/pdf" Response.AddHeader("content-disposition", _ "inline; filename=sample.pdf") Response.BufferOutput = True Response.BinaryWrite(_stream.ToArray()) End Using Response.End() End Using End If End Sub End Class
ブラウザでURLにDefault.aspxを指定すると、ASP.NETはDefault.aspx.vbのPage_Loadイベントを呼び出します。下記が、リスト3の処理内容です。
- BillBoundサービスを呼び出してDataSetを取得し、帳票定義体のDataSourceプロパティに設定
- PDFファイルを生成する際に参照するプリンタとして、仮想プリンタを設定
- Runメソッドで帳票を生成
- PdfExportを使ってDocumentをMemoryStreamに出力
- Webアプリのレスポンスとして、Response.BinaryWriteでMemoryStreamに設定されたPDFファイルの内容をブラウザに返却
(2)は、サーバにつながっているプリンタの情報を取得しないようにするためです。仮想プリンタを設定することにより、サーバにつながっているプリンタに依存せずPDFファイルを生成できます。
実行
CZ0906PdfBoundを実行すると、以下のようになります。
ブラウザが稼働しているPCの環境によっては、拡大率が低いときに罫線が非表示になる場合があります。