SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Infragistics NetAdvantageチュートリアル(AD)

WindowsアプリケーションにXPS/PDF出力機能を追加する

Infragistics NetAdvantageチュートリアル その6 - XPS/PDF出力

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

Infragistics NetAdvantageファミリー製品は、Windows Forms、ASP.NET、そして、Windows Presentation Foundationに対応した、高度なユーザーインターフェースを提供するコンポーネント群で、使い慣れた画面操作をユーザーに提供するサポートをします。今回は、PDFやXPSといった電子文書を出力するための「Infragistics Document Export Engine」に注目して、その使い方を紹介します。

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

はじめに

 インフラジスティックス社の提供するInfragistics NetAdvantageファミリー製品は、マルチプラットフォームでWindows Forms、ASP.NET、そしてWindows Presentation Foundationに対応した商用アプリケーションユーザーインターフェイスの構築をサポートするプレゼンテーションレイヤコンポーネント群であり、その高度なユーザーインターフェイスコントロールは、使い慣れた画面操作をユーザーに提供するサポートをします。

 今回は、Windowsアプリケーション用として提供されているコンポーネントの中から、Infragistics Document Export Engine(図1)に注目して、その使い方を紹介したいと思います。

図1 - Infragistics.Documents
図1 - Infragistics.Documents

対象読者

  • Visual Basic 2005/2008、Visual C# 2005/2008で開発を行っている人
  • PDFやXPSでの出力に興味のある人

必要な環境・コンポーネントのインストール

 必要な環境・コンポーネントについては、過去の記事で紹介しているものと変わりません。追加として、先日リリースされたVisual Studio 2008でも利用可能です。コンポーネントについては、Infragistics社のWebサイトから最新のNetAdvantage for .NET 2007 Volume 2をダウンロードし、インストールしてください。また、動作を確認するためには、Adobe ReaderXPS 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を使って、名前空間の指定をしておきましょう。名前空間が長めのため、このような指定を行うことで、プログラムを見やすくします。

図2 - 参照設定
図2 - 参照設定
リスト1 - PDF作成(C#版)
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");
}
リスト2 - PDF 作成(Visual Basic 版)
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での描画処理とほぼ同じになっています。ただし、この際に利用できるオブジェクト(PenBrushColorなど)は、.NET Frameworkで用意されているものではなく、Document Export Engineで提供されているという点には注意してください。

 なお、一部のPDF作成コンポーネントでは、日本語の扱いに問題があるものも見かけます。Document Export Engineでは、フォントを指定するだけで簡単に日本語の出力も行えました。こういった点は、日本語でのビジネスアプリケーション作成にはうれしいところです。

 ひと通りの描画処理が終わったら、Report.Publish()メソッドを呼び出してPDFファイルを作成します。そして、作成が終わったらProcess.Start()メソッドでPDFを表示しています(図3)。このために、あらかじめAdobe Readerをインストールしておく必要があります。

図3 - 出力したPDF
図3 - 出力したPDF

次のページ
Infragistics Document Export Engine DOMによるXPS出力

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Infragistics NetAdvantageチュートリアル連載記事一覧

もっと読む

この記事の著者

こだかかおる(コダカカオル)

Microsoft Most Valuable Professional Visual Developer - Visual C# .NETによるアプリケーション開発を中心に、IT全般について何でもやるソフトウェアエンジニア。更新をさぼりがちなWebサイトはこちら(http://www.antoine.st/)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2476 2008/07/14 19:35

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング