Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

帳票Webアプリ実践構築ガイド
ActiveReports for .NETを使いこなす!~その2

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/06/12 15:00
目次

PDFを自動生成

 帳票定義体が作成できたら、CZ0906PdfBoundプロジェクトに帳票定義体 からPDFを生成するコードを追加します。

 今回のサンプルでは、帳票定義体に設定するデータはASP.NET WebサービスのCZ0906Boundから受け取ることになるので、帳票定義体のあるCZ0906PdfBoundプロジェクトと同一ソリューションにしておくと、テスト時にデバッグ実行しやすくなります。

図9 ASP.NET WebサイトとASP.NET Webサービスのソリューションを作成
図9 ASP.NET WebサイトとASP.NET Webサービスのソリューションを作成

PDF出力用の参照設定

 CZ0906PdfBoundサンプルでは、PDFの出力を行うためにActiveReportsのPDF出力用の参照設定を追加します。

図10 PdfExportへの参照を追加
図10 PdfExportへの参照を追加

Webフォームにコードを記述

 ソリューションの準備ができたなら、帳票定義体からPDFを生成する コードを記述します。

リスト3 Default.aspx.vb
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の処理内容です。

  1. BillBoundサービスを呼び出してDataSetを取得し、帳票定義体のDataSourceプロパティに設定
  2. PDFファイルを生成する際に参照するプリンタとして、仮想プリンタを設定
  3. Runメソッドで帳票を生成
  4. PdfExportを使ってDocumentをMemoryStreamに出力
  5. Webアプリのレスポンスとして、Response.BinaryWriteでMemoryStreamに設定されたPDFファイルの内容をブラウザに返却
※注

(2)は、サーバにつながっているプリンタの情報を取得しないようにするためです。仮想プリンタを設定することにより、サーバにつながっているプリンタに依存せずPDFファイルを生成できます。

実行

 CZ0906PdfBoundを実行すると、以下のようになります。

図11 CZ0906PdfBoundの実行結果
図11 CZ0906PdfBoundの実行結果
※注

 ブラウザが稼働しているPCの環境によっては、拡大率が低いときに罫線が非表示になる場合があります。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 初音玲(ハツネアキラ)

     国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。  個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。  Microsoft MVP for Windows Development...

バックナンバー

連載:現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5