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

 

チュートリアル: iText.NET

グラフィックスステート

PDF シンタックス
PDF シンタックスは、次のようなものです。
0.3 g
15.000 27.000 m
7.947 5.292 l
26.413 18.708 l
3.587 18.708 l
22.053 5.292 l
f
45.000 57.000 m
37.947 35.292 l
56.413 48.708 l
33.587 48.708 l
52.053 35.292 l
f
0.7 g
15.000 57.000 m
7.947 35.292 l
26.413 48.708 l
3.587 48.708 l
22.053 35.292 l
f
45.000 27.000 m
37.947 5.292 l
56.413 18.708 l
33.587 18.708 l
52.053 5.292 l
f
上の例は、ページの左下の角に二つのグレースケールの四つの小さな星を描画しています。iText では、PdfContentByte.setLiteral のようなメソッドを使って、このシンタックスすべてを手書きすることもできますが、私の信じるところでは、それは容易ではありません。スクラッチから完全な PDF を書きたいなら、すべてのオブジェクトについてそれが何バイト目にあるかを知っておく必要があります。最初の例では、普通のテキストエディタでこの PDF を読むことができるように compression を false に設定しました。PDF の手書きはやらないほうがいいでしょう。
Example: java com.lowagie.examples.directcontent.graphics.Literal
Writing PDF Syntax directly to iText: see literal.pdf
例では、PDF シンタックスを setGrayFill(float)(g で終わる線)、moveTo(float, float)(m で終わる線)、lineTo(float, float)(l で終わる線)、fill()(f)といった iText の 簡単なメソッドを使って生成しています。
すべてのメソッドは、この章で説明されています。
先頭に戻る
グラフィックスステート
グラフィックスステートは、各ページの最初に初期化されます。現在の色(塗りつぶしのためにひとつ、筆書きのためにひとつあります)、現在の線幅、現在のダッシュパターンなど、すべてのパラメータには、デフォルトがあります。iText では、これらのデフォルトのほどんどを PdfContentByte クラスのメソッドで変更することができます。いくつかのパラメータは、特別な PdfDictionary(グラフィックスステートディクショナリー)であり PdfGState オブジェクトを使って変更します。
グラフィックスステートは、スタックに保存されています。グラフィックスステートを変更するなら、現在のステートを PdfContentByte.saveState() で保存し、その後 PdfContentByte.restoreState() で元に戻すことができます。
Example: java com.lowagie.examples.directcontent.graphics.State
Changing the Graphics State with saveState and restoreState: see state.pdf
例では、半径250ポイントの円を描いています。デフォルトの塗りつぶし色が黒であることが分かります。
cb.circle(260.0f, 500.0f, 250.0f);
cb.fill();
次に、ステートを保存し、塗りつぶし色を赤に変更します。
cb.saveState();
cb.setColorFill(Color.red);
cb.circle(260.0f, 500.0f, 200.0f);
cb.fill();
半径200ポイントの円は、赤色で描かれます。この二番目のステートを保存し、塗りつぶし色を青に変更します。
cb.saveState();
cb.setColorFill(Color.blue);
cb.circle(260.0f, 500.0f, 150.0f);
cb.fill();
半径150ポイントの円は、青色で描かれます。ステートを(塗りつぶし色が赤の)二番目のステートに戻します。
cb.restoreState();
cb.circle(260.0f, 500.0f, 100.0f);
cb.fill();
見て分かるように、半径100ポイントの円が赤色で描かれました。もともとのステートに戻すと、半径50ポイントの円が描かれます。
cb.restoreState();
cb.circle(260.0f, 500.0f, 50.0f);
cb.fill();
Remark that the saveState と restoreState の数はあわせなければならないことは、注意してください。saveState を呼び出す前に、グラフィックスステートを戻そうとすると、例外が発生します。

次の例は、PdfGState オブジェクトを使ったステートの変更法を示しています。
Example: java com.lowagie.examples.directcontent.graphics.GState
Changing the Graphics State with setGState: see gstate.pdf
先頭に戻る
パラメータを変更するメソッド
PDF Reference Manual (4.3節) の Table 4.2 と 4.3 にグラフィックスステートで利用可能なすべてのパラメータが与えられています。次のテーブルに、これらのパラメータを列挙します。iText では(そのようなメソッドが可能なら)これらの値を変更するためのメソッドを追加していきます。
デバイス独立グラフィックスステートパラメータ
CTM Image あるいは PdfTemplate を加えるとき、変換行列のために (a, b, c, d, e, f) 値を追加します。これらの値の意味は、チュートリアルの他の場所で説明します。
クリッピングパス Mclip() メソッドと eoClip() メソッドは、出力をクリップするために使います。
色空間 setDefaultColorspace(com.lowagie.text.pdf.PdfName, com.lowagie.text.pdf.PdfObject)
さまざまな setColor メソッドのオーバーロードは、色空間を自動的に変更します。より詳しい情報と例は、の章を参照してください。
RGB 色 (デバイス独立)
setRGBColorFill(int, int, int)setRGBColorFillF(float, float, float)resetRGBColorFill()setRGBColorStroke(int, int, int)setRGBColorStrokeF(float, float, float)resetRGBColorStroke() といったメソッドは、色空間を DeviceRGB に自動的に変換します。
int のパラメータをとるメソッドは、通常、0xFFから0xFFの値をとります。float のパラメータをとるメソッドは、通常、0fから1fの値をとります。(デフォルトは、黒です)
CMYK 色 (デバイス独立)
setCMYKColorFill(int, int, int, int)setCMYKColorFillF(float, float, float, float)resetCMYKColorFill()setCMYKColorStroke(int, int, int, int)setCMYKColorStrokeF(float, float, float, float)resetCMYKColorStroke() といったメソッドは、色空間を DeviceCMYK に自動的に変換します。
白黒
setGrayFill(float)resetGrayFill()setGrayStroke(float)resetGrayStroke() といったメソッドは、色空間を DeviceGray(デフォルト)に自動的に変換します。float の値は、0(黒)から1(白)間でです。
スポットカラー (デバイス独立)
setColorFill(com.lowagie.text.pdf.PdfSpotColor, float)setColorStroke(com.lowagie.text.pdf.PdfSpotColor, float)
拡張色
setColorFill(java.awt.Color)setColorStroke(java.awt.Color)
より詳しい情報と例は、の章を参照してください。
テキストステート テキストの章を見てください。
線の幅 setLineWidth(float) 
パラメータは線の幅を表します。(デフォルトは、1)
ラインキャップ setLineCap(int)
パラメータは、PdfContentByte.LINE_CAP_BUTT (デフォルト)、PdfContentByte.LINE_CAP_ROUNDPdfContentByte.LINE_CAP_PROJECTING_SQUARE をとりえます。
線の連結 setLineJoin(int)
パラメータは、PdfContentByte.LINE_JOIN_MITER (デフォルト)、PdfContentByte.LINE_JOIN_ROUNDPdfContentByte.LINE_JOIN_BEVEL をとりえます。
マイタリミット setMiterLimit(float)
パラメータは、線をつなぐ時のある制限値。それを超えたときには、結合点は鋭角結合から面取り接合に変更される。
点線のパターン setLineDash(float), setLineDash(float[], float), setLineDash(float, float) or setLineDash(float, float, float).
パラーメータには、点線のパターンを記述します(デフォルト=実線)。
レンダリングインテント PNG イメージを表示するときに、内部で使用される。
筆書きの調整 iText では実装されていない。
ブレンドモード setBlendMode(com.lowagie.text.pdf.PdfName)
PdfGState.BM_NORMAL, PdfGState.BM_COMPATIBLE, PdfGState.BM_MULTIPLY, PdfGState.BM_SCREEN, PdfGState.BM_OVERLAY, PdfGState.BM_DARKEN, PdfGState.BM_LIGHTEN, PdfGState.BM_COLORDODGE, PdfGState.BM_COLORBURN, PdfGState.BM_HARDLIGHT, PdfGState.BM_SOFTLIGHT, PdfGState.BM_DIFFERENCE or PdfGState.BM_EXCLUSION
ソフトマスク Image.makeMask() および Image.setImageMask(com.lowagie.text.Image)
α値 setFillOpacity(float) および setStrokeOpacity(float)
α値の出所 setAlphaIsShape(boolean)


デバイス独立グラフィックスステートパラメー
刷り重ね setOverPrintStroking(boolean) および setOverPrintNonStroking(boolean)
刷り重ねモードmode 未実装
black generation 未実装
undercolor removal 未実装
transfer 未実装
halftone 未実装
flatness setFlatness(float)
パラメータは、デバイスピクセル単位の距離。
smootness 未実装
先頭に戻る
パスの構築と描画

構築
PDF Reference Manual 4.4 節(194ページ)で、パスが取り扱われています。
パスは形、軌道、領域と呼べるものすべてを定義します。これらは、線の描画、塗りつぶす形の定義、ほかのグラフィックスをクリップするための境界を指定するために使われます。
Reference Manual 表 4.9 に、パス構築演算子の総覧が与えられています。次のテーブルに、これらの演算子と iText の PdfContentByte クラスにおける対応するメソッドを示します。
m moveTo(float, float)
l lineTo(float, float)
c curveTo(float, float, float, float, float float)
v curveTo(float, float, float, float)
y curveFromTo(float, float, float, float)
h closePath()
re rectangle(float, float, float, float)
これらのメソッド(特に、curveTo~)の詳細については、PDF Reference Manual 4.4.1 節あるいは、API ドキュメントを読んでください。
簡単に使えるように、iText には、いくつかの拡張メソッドが加えられています。
描画
パスがパスを描画しないということを理解することは非常に重要です! パスを構築しても、PDF インタプリタがどうされるのかは知りません。描画したいなら、パス描画演算子を使わなければなりません。それらの演算子は、Reference Manual の表 4.10 に列挙されています。ここに、そその対応する iText のメソッドを列挙します。
S stroke()
s closePathStroke()
f fill()
F 使われていない(と reference manual に書かれている)
f* eoFill()
B fillStroke()
B* eoFillStroke()
b closePathFillStroke()
b* closePathEoFillStroke()
n newPath()

PdfContentByte を使う
これまでに説明したメソッドのいくつかを使ったデモです。
Example: java com.lowagie.examples.directcontent.graphics.Circles
Draws some concentric circles: see circles.pdf
先頭に戻る

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