はじめに
インフラジスティックス社の提供するInfragistics NetAdvantageファミリー製品は、マルチプラットフォームでWindows Forms、ASP.NET、そしてWindows Presentation Foundationに対応した商用アプリケーションユーザーインターフェイスの構築をサポートするプレゼンテーションレイヤコンポーネント群であり、その高度なユーザーインターフェイスコントロールは、使い慣れた画面操作をユーザーに提供するサポートをします。
今回は、Windowsアプリケーション用として提供されているコンポーネントの中から、Infragistics Document Export Engine(図1)に注目して、その使い方を紹介したいと思います。
対象読者
- Visual Basic 2005/2008、Visual C# 2005/2008で開発を行っている人
- PDFやXPSでの出力に興味のある人
必要な環境・コンポーネントのインストール
必要な環境・コンポーネントについては、過去の記事で紹介しているものと変わりません。追加として、先日リリースされたVisual Studio 2008でも利用可能です。コンポーネントについては、Infragistics社のWebサイトから最新のNetAdvantage for .NET 2007 Volume 2をダウンロードし、インストールしてください。また、動作を確認するためには、Adobe ReaderとXPS Viewerが必要になります。
Infragistics Document Export EngineによるPDFによる出力
ビジネスアプリケーションでは、「レポート出力」という処理をもって、ひと通りのアプリケーションの流れが終わることが多いのではないでしょうか。そのレポートとして、最近は紙に出力するのではなく、PDF(Adobe Portable Document Format)などの電子文書として出力するケースも増えてきました。
PDFは、Adobeが作成したファイルフォーマットで、Adobe Readerを利用して表示することができます。Windowsに限らず多くの環境で利用できますし、内容を検索したり、印刷をできない用に制限したりと、いろいろと便利な機能を備えているため、多くの環境で利用されています。そんなPDFですが、.NETアプリケーションから出力しようとすると、今のところコンポーネントを利用するしか方法がありません。
NetAdvantageに含まれているDocument Export Engineを利用すると、PDFを.NETアプリケーションから作成することができます。その利用方法はオブジェクトモデルに基づいたものであり、.NETアプリケーション開発者にとってはスムーズに扱えることでしょう。説明はこの辺にして、そろそろDocument Export Engineを利用したPDF作成について見ていきましょう。
Visual Studioでプロジェクトを開始し、準備として「Infragistics2.Documents.v7.2」を参照設定で追加します(図2)。後は、using、Importsを使って、名前空間の指定をしておきましょう。名前空間が長めのため、このような指定を行うことで、プログラムを見やすくします。
using System.Diagnostics; using Infragistics.Documents.Graphics; using Infragistics.Documents.Report; using Infragistics.Documents.Report.Section; (略) private void btnCreatePDF_Click(object sender, EventArgs e) { Report report; ISection section; ICanvas canvas; report = new Report(); report.Info.Title = "レポートサンプル"; section = report.AddSection(); section.PageSize = PageSizes.A4; section.PageMargins.All = 35; canvas = section.AddCanvas(); canvas.Borders = new Borders(Pens.Black, 5); canvas.Paddings.All = 5; canvas.Pen = new Pen(Colors.Red, 5); canvas.Brush = new SolidColorBrush(new Color(255, 240, 240)); canvas.DrawRectangle( 50, 50, 180, 100, PaintMode.FillStroke); canvas.Font = new Font("メイリオ", 18); canvas.Brush = Brushes.Black; canvas.DrawString(70, 90, "日本語の文字です"); canvas.Pen = new Pen(Colors.Green, 5); canvas.DrawLine(250, 50, 320, 150); canvas.Pen = new Pen(Colors.Blue, 5); canvas.Brush = new SolidColorBrush(new Color(240, 240, 255)); canvas.DrawEllipse( 340, 50, 150, 100, PaintMode.FillStroke); report.Publish("sample.pdf", FileFormat.PDF); Process.Start("sample.pdf"); }
Imports System.Diagnostics Imports Infragistics.Documents.Graphics Imports Infragistics.Documents.Report Imports Infragistics.Documents.Report.Section (略) Private Sub btnCreatePDF_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs _ ) Handles btnCreatePDF.Click Dim report As Report Dim section As ISection Dim canvas As ICanvas report = New Report() report.Info.Title = "レポートサンプル" section = report.AddSection() section.PageSize = PageSizes.A4 section.PageMargins.All = 35 canvas = section.AddCanvas() canvas.Borders = New Borders(Pens.Black, 5) canvas.Paddings.All = 5 canvas.Pen = New Pen(Colors.Red, 5) canvas.Brush = _ New SolidColorBrush(New Color(255, 240, 240)) canvas.DrawRectangle( _ 50, 50, 180, 100, PaintMode.FillStroke) canvas.Font = New Font("メイリオ", 18) canvas.Brush = Brushes.Black canvas.DrawString(70, 90, "日本語の文字です") canvas.Pen = New Pen(Colors.Green, 5) canvas.DrawLine(250, 50, 320, 150) canvas.Pen = New Pen(Colors.Blue, 5) canvas.Brush = _ New SolidColorBrush(New Color(240, 240, 255)) canvas.DrawEllipse( _ 340, 50, 150, 100, PaintMode.FillStroke) report.Publish("sample.pdf", FileFormat.PDF) Process.Start("sample.pdf") End Sub
プログラム自体は、それほど難しいものではありません。Report
オブジェクトを生成し、Section
オブジェクトを追加します。Section
オブジェクトでは、ページサイズなどを指定することができます。今回は、一般的なA4サイズを指定しました。続いて、Canvas
オブジェクトをSection
に追加します。実際の出力処理は、このCanvas
オブジェクトに対して行っていくことになります。
Canvas
オブジェクトへの出力は、テキストを描画するDrawString()
メソッドや四角形を描画するDrawRectangle()
メソッドなど、.NET Frameworkでの描画処理とほぼ同じになっています。ただし、この際に利用できるオブジェクト(Pen
やBrush
、Color
など)は、.NET Frameworkで用意されているものではなく、Document Export Engineで提供されているという点には注意してください。
なお、一部のPDF作成コンポーネントでは、日本語の扱いに問題があるものも見かけます。Document Export Engineでは、フォントを指定するだけで簡単に日本語の出力も行えました。こういった点は、日本語でのビジネスアプリケーション作成にはうれしいところです。
ひと通りの描画処理が終わったら、Report.Publish()
メソッドを呼び出してPDFファイルを作成します。そして、作成が終わったらProcess.Start()
メソッドでPDFを表示しています(図3)。このために、あらかじめAdobe Readerをインストールしておく必要があります。