SHOEISHA iD

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

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

ComponentZine(ComponentOne)

書式を持った文書をPDF化する.NET アプリケーションの作成

ComponentOne Studio Enterprise 2011JのPDF for .NETコンポーネントを使ったアプリケーションの作成

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

C1PdfDocumentコントロールについて

 PDF for .NETのC1PdfDocumentコントロールは、.NET FrameworkアプリケーションからPDFドキュメントを作成できるライブラリです。PDFフォーム、電子署名、セキュリティ、圧縮、アウトライン、ハイパーリンク、添付ファイルなどの、PDFが持つ高度な機能を利用できます。

テキストの描画機能

 PDF for .NETの最大の特長は、使い方が簡単であることです。ドキュメントに内容を追加するための方法は、.NET FrameworkのGraphicsクラスの使い方と良く似ています。.NETでのテキストとグラフィックスの表示方法を知っていれば、PDF for .NETの使い方はすぐ身につきます。

 例えば、データをテキストとしてPDFドキュメントにするには、C1PdfDocumentクラスの「DrawString」メソッドを使用します。このメソッドは、テキストを指定の四角形の左上に配置し、四角形内でテキストを折り返します。描画用の四角形は、RectangleFクラスで四角形のサイズと描画位置を指定するため、自由なレイアウトで作成できます。また、テキストの描画に際し、使用するフォントと描画色を指定できるため、書式を設定したテキストとして描画することもできます。

 オーバーロードされているDrawStringメソッドでは、引数にStringFormatオブジェクトを指定できるメソッドもあるので、配置、方向、タブストップなどのテキストレイアウト情報や、省略記号の挿入、国別の代替の数字形式などの表示方法も指定してテキストを描画できます。

 次のコードは、ヘルプファイルにあるテキスト描画のサンプルコードです。最初にフォントと描画領域の四角形と描画する文字列を作成しDrawStringメソッドを実行、引数にStringFormatオブジェクトを使って文字の配置を指定して描画しています。ほとんどの文字の描画は、このような手法でPDFドキュメントに描画していきます。

Visual Basic
Dim font As New Font("MS PGothic", 12)
Dim rect As New RectangleF(72, 72, 100, 100)
Dim text As String = "小さい矩形領域内に描画するための長いテキスト。"

' テキストを中央配置します。
Dim sf As New StringFormat()
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
C1PdfDocument1.DrawString(text, font, Brushes.Black, rect, sf)
C1PdfDocument1.DrawRectangle(Pens.Gray, rect)
C#
Font font = new Font("MS PGothic", 12);
RectangleF rect = new RectangleF(72, 72, 100, 100);
string text = "小さい矩形領域内に描画するための長いテキスト。";

// テキストを中央配置します。
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
c1PdfDocument1.DrawString(text, font, Brushes.Black, rect, sf);
c1PdfDocument1.DrawRectangle(Pens.Gray, rect);
描画したテキスト(ヘルプより抜粋)
描画したテキスト(ヘルプより抜粋)

C1PdfDocumentクラスとメンバの特徴

 C1PdfDocumentクラスは、ドキュメントを作成/保存する方法を提供するクラスです。C1PdfDocumentクラスのインスタンスを作成すると、1ページの空白ページを持つPDFドキュメントを持ちます。メンバメソッドには、テキストや図形を描画するメソッドが多く属しており、これらのメソッドを使ってデータをPDFドキュメント化します。

 テキストの描画には、DrawStringメソッド以外にDrawStringRtfメソッドがあります。このメソッドは、文字のサイズや描画色、描画位置などの属性を持つテキスト「リッチテキスト」を描画します。WindowsフォームのRichTextBoxコントロールで、このリッチテキストを描画できます。

C1PdfDocumentクラスの描画用メンバメソッド(抜粋)
メソッド 説明
Clear ドキュメントを初期状態に戻します
Dispose コントロールで使用されるすべてのリソースを解放します
DrawArc RectangleF構造体で指定された楕円の一部を表す円弧を描画します
DrawBezier 4つのPointF構造体で定義されるベジェ曲線を描画します
DrawBeziers PointF構造体の配列から一連のベジェ曲線を描画します
DrawEllipse 楕円を描画します
DrawImage イメージを描画します
DrawLine 直線を描画します
DrawLines PointF構造体の配列を結ぶ一連の直線を描画します
DrawPie RectangleF構造体で定義される楕円と2つの角度によって指定された扇形を描画します
DrawPolygon PointF構造体の配列で定義された多角形を描画します
DrawRectangle 四角形を描画します
DrawString プレーンテキストを描画します
DrawStringHtml HTMLテキストを描画します
DrawStringRtf リッチテキストを描画します
FillArc RectangleF構造体で指定された楕円の一部を表す円弧の内部を塗りつぶします
FillEllipse 塗りつぶされた楕円を描画します
FillPie RectangleF構造体で定義される楕円と2つの角度によって指定された扇形の内部を塗りつぶします
FillPolygon 塗りつぶされた多角形を描画します
FillRectangle 塗りつぶされた四角形を描画します
MeasureString 指定したFontで描画した場合の、指定した文字列を計測します
MeasureStringHtml 指定されたFontオブジェクトで表示されたときのHTML文字列を計測します
MeasureStringRtf 指定されたFontオブジェクトで描画されたRTF文字列のサイズを測定します
NewPage 新しいページを開始します
Write PDFストリームの現在のページに生のコンテンツを書き込みます

PDFドキュメントの作成

 PDFドキュメントを作成する方法もとても簡単で、保存するファイル名を引数に指定し、Saveメソッドを実行するだけです。作業の流れは、以下のたった3つです。

  1. コンテンツとなるテキストや図形を描画する
  2. 保存するファイル名を作成する
  3. Saveメソッドを実行する

ドキュメントプロパティの設定が可能

 PDFドキュメントには、作成者やタイトルなどの情報をプロパティとして含めることができます。これらのドキュメントプロパティはDocumentInfoクラスの次のプロパティを使って設定します。

DocumentInfoクラスのプロパティ
設定内容 操作プロパティ
タイトル Title
作成者 Author
サブタイトル Subject
キーワード Keywords
アプリケーション Creator
PDF Producer Produce
設定した内容はPDFドキュメントの「文書のプロパティ」に表示される
設定した内容はPDFドキュメントの「文書のプロパティ」に表示される

次のページ
フォームの作成

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

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6342 2012/01/24 10:57

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング