Home • ChemFormatter • iText.NET • JFreeChart.NET • ConcatPDF • iTextFront • TIFF2PPT • J by J# • Programming J#
MSN Search

iText.NET

iText .NET
@SourceForge
ライセンス
更新履歴
ダウンロード
使い方
J# Examples
C# Examples
VB.NET Examples
コンパイル
ConcatPDF
iText (Java)
J by J#

SourceForge.net Logo

 

ページイベント

ページイベントメソッド
PDF ファイルをiText の高機能オブジェクトを生成するには、Document オブジェクトに構造化されたコンテンツを加えていきます。このコンテンツは、PdfWriter によって自動的に PDF シンタックスへ変換されます。この隠された(パッケージプライベートな)オブジェクトである PdfDocument オブジェクトは、コンテンツを適切なページに描画するための責務を果たします。これをしている間、コンテンツを加えるプロセス(あなたが作成したプログラム)は、この PDF 特有の働きについては、何も気を止めません。PdfWriter PdfWriter.getPageNumber() によって現在のページ番号を問い合わせることはできますが、非常に限定されたことだけです。Writerで起こることを制御したいようなときには、PdfPageEvent を加える必要があります。
// class MyPageEvent implements the PdfPageEvent interface
MyPageEvent event = new MyPageEvent();
writer.setPageEvent(event);
PdfPageEvent インターフェイスは、次のメソッドを含んでいるので、作成した MyPageEvent クラスでこれらを実装しなければなりません。 もちろん、これらのメソッドがすべてが常に必要というわけではないので、PdfPageEvent インターフェースを実装するよりは、PdfPageEventHelperを継承するほうが簡単な方法です。このクラスには、上記のメソッドすべての'空'の実装が入っているので、必要なメソッドのみを実装するだけですみます。

文書を開くとき、閉じるとき、ページが始まるとき、終わるとき

文書が開かれ、最初のページが初期化されると、onOpenDocument メソッドと最初の onStartPage メソッドが呼び出されます。onOpenDocument は、ほとんどの場合ページイベントの実装で使われるパラメータの初期化に使われます。onStartPage は、新しいページの初期化が終わるたびに呼び出されます。onEndPage は、新しいページの初期化が始まる前に呼び出されます。これは、ヘッダやフッタを追加する最もよい方法です。onStartPage メソッドでヘッダやフッタを追加することは、各種の奇妙な効果が発生する(例えば、不必要な空白のページが文書の最後にできてしまう)ので推奨しません。onCloseDocument メソッドは、すべてのストリームが閉じられる前に呼び出されます。これは、'page X of Y' で示されるようなフッタがあるような場合に、テンプレートへ総ページ数を埋める理想的な場所です。 Y の正確な値は、文書を閉じる前にしかわかりません。これらのメソッドの実装においては、イベントによって引き起こされた Writer のインスタンスにかかる Document オブジェクトのが得られます。これは、構造化されたコンテンツを加えたオブジェクトとは異なります。これは、隠された PdfDocument オブジェクトです。このオブジェクトのメソッドのうち呼び出すことができるものは、限られています。

段落、章、節の追加

段落を加えるときに、現在のページ上でのY座標を知りたいこともある。下の例では、しおりを自動的に追加していることがわかるだろう。アウトラインツリーのいずれのエントリーも段落の最初の場所を指し示している。このアウトラインツリーは、onParagraph イベントで生成されている。段落の後ろに、なにかのオブジェクトを絶対位置で追加する必要があるときは、onParagraphEnd メソッドを使うだけです。
onChapteronSectiononChapterEndonSectionEnd の各メソッドは同じですが、はじめの二つは、章あるいは節のタイトルを渡しています。これは、(下の'Romeo and Juliet'の例のような)ヘッダやフッタを設定するためや、目次を構築するために使うことができます。

ジェネリックタグ
ジェネリックタグは、Chunk オブジェクトにジェネリック機能を追加するときなどに説明をしています。'Romeo and Juliet' の例では、このメソッドを劇中のキャラクタごとの登場回数を数えるために使っています。
先頭に戻る
応用例
ヘッダー/フッター
ヘッダーあるいは/およびフッターを文書の各ページに加えたいならば、onEndPage イベントでこれを行わなければなりません。
Example: java com.lowagie.examples.directcontent.pageevents.EndPage
Headers and footers in an EndPage event: see endpage.pdf
Page X of Y

この例では、ヘッダーとフッターを加えるだけではありません。'page X of Y' を表示するフッターにテンプレートを使っています。全ページ数を onCloseDocument イベントで PdfTemplate に加えています。見て解るように、透かしは onStartPage で加えることもできますが、onEndPage でもできます。(各ページのテキストの周りに四角形も描画しています。)

Example: java com.lowagie.examples.directcontent.pageevents.PageNumbersWatermark
Making a document with a header containing 'page x of y' and with a watermark on every page.: see pageNumbersWatermark.pdf
External resources for this example: logo.gif
しおり
This example was already mentioned in the chapter onこの例は、しおりの章でも紹介しました。
先頭に戻る
ロメオとジュリエット: XML から PDF への変換
この例は、iText のもっとも興味深い機能を組み合わせたものです。 ウイリアム=シェークスピアの『ロメオとジュリエット』の完全な脚本を含む XML ファイル(playRomeoJuliet.xml)があります。XML のタグを iText が理解できるようなに変換するタグマップ (tagmapRomeoJuliet.xml) を定義しました。iText は、このタグマップを使って XML を解析し、PDF を生成します。
Speaker クラスは、すべての発言者それぞれを追跡するためにあります。ページイベントの実装を見ればわかるように、onGenericTag メソッドにおいて発言者のリストが更新されます。onOpenDocument メソッドで初期化の処理をし、onChapter メソッドで現在の演技を追跡し、この情報を文書の偶数ページにヘッダとして追加し、onPageEnd メソッドで 'page X of Y'-フッタを書き込み、最後に、onCloseDocument メソッドでこの Y の値を設定します。文書の解析が終了した後に、イベントクラスの出力から発言者のアルファベット順リストを取り出し、この情報を含む追加のページを加えます。
Example: java com.lowagie.examples.directcontent.pageevents.Events
Using PageEvents: see RomeoJuliet.pdf
External resources for this example: tagmapRomeoJuliet.xml playRomeoJuliet.xml
Extra jars needed in your CLASSPATH: crimson.jar
先頭に戻る

Copyright (C) 2001-2007 Kazuya Ujihara. All rights reserved.