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

フォントの属性

幅とグリフの高さ
FontFactory から Font を得るときも、Font クラスを直接構築するときも、フォントサイズは、いつも指定する。このサイズは、グリフの高さをポイント単位で指定します。おのおののグリフの高さや、その幅については、何も語っていません。
おのおののグリフの幅と高さは、フォントファイルで定義されています。あるテキストをある領域に納める必要があるならば、そのテキスト文字列の幅と高さをあらかじめ知っておきたいでしょう。幅については、Chunk クラスに問い合わせることができますが、BaseFont クラスの BaseFont.getWidthPoint(java.lang.String, float)BaseFont.getAscentPoint(java.lang.String, float)getDescentPoint(java.lang.String, float) を使えば、そのさまざまな特性を問い合わすことができます。
テキストは、'基本線'の上に書かれます。アセント (ascent) は、テキストのグリフによる基本線を基準にした最高の高さを表します。これは、いつでも正の値です。デセント (descent) は、基本線を基準にした最深の深さを表します。このは、いつでも負の値になります。テキストの高さは、(ascent - descent) です。これらの基本メソッドの働きは下の例を見てください。幅、アセント、デセントを得るためのほかのメソッドが必要ならば、APIを確認してください。
Example: java com.lowagie.examples.fonts.styles.WidthHeight
Asking a font for the width/height of a textstring: see widthheight.pdf
ある場合には、おのおののグリフごとに幅を完全に制御したいかもしれません。ご心配なく。BaseFont.getWidths() によって幅を変更し、BaseFont.setForceWidthsOutput(boolean) によって BaseFont にその幅を使うように指定するだけで、そのようなことが可能です。
Example: java com.lowagie.examples.fonts.styles.FixedFontWidth
Changing the width of the font glyphs: see fixedfontwidth.pdf
先頭に戻る
フォントスタイル
フォントには、太字 (bold)、斜体 (italic) のスタイルはない
ある種のフォントファミリーは、フォントを太字や斜体で表示するための定義はありません。このような場合でも、iText ではグリフの描画法を変更することにより太字フォントのシミュレートが可能です(筆書きと塗りつぶし参照)。斜体も、Chunk を歪めることによりシミュレート可能です。
フォントスタイルの伝播
'フォントの伝播'について知っておかなければならない規則がいくつかあります。
あるフォント(デフォルトフォントではない)のコンテンツを含む Phrase あるいは Paragraph を作成し、それにさらにコンテンツを加えるとき、最初のオブジェクトのフォントスタイルを伝播することもできます。次の例の、'Hello 1!' と 'Hello 2' に起こることがそれです。
Phrase myPhrase =
  new Phrase("Hello 1! ",
    new Font(Font.TIMES_ROMAN, 8, Font.BOLD));
myPhrase.add(
  new Phrase("some other font ",
    new Font(Font.HELVETICA, 8)));
myPhrase.add(
  new Phrase("This is the end of the sentence.\n",
    new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
最初の Phrase ('Hello 1!')は太字であり、そこに斜体テキストを加えていますが、太字は伝播しているので、印刷されるテキストは、太字斜体になっています。
最初の Phrase のフォント(スタイル)が定義されていないならば、フォントは伝播しません。
myPhrase = new Phrase(12);
myPhrase.add(
  new Phrase("Hello 2! ",
    new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));
myPhrase.add(
  new Phrase("This is the end of the sentence.\n",
    new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
見て分かるように、'This is the end of the sentence' は斜体ですが、太字ではありません。フォントは伝播していません。同じことは、Font オブジェクトを得るために FontFactory を使う場合も起こります。これは、FontFactory が、Font の構築に、他の方法を使っているからです。
myPhrase =
  new Phrase("Hello 3! ",
    FontFactory.getFont(FontFactory.TIMES_ROMAN, 8, Font.BOLD));
myPhrase.add(
  new Phrase("some other font ",
    FontFactory.getFont(FontFactory.HELVETICA, 8)));
myPhrase.add(
  new Phrase("This is the end of the sentence.\n",
    FontFactory.getFont(FontFactory.TIMES_ROMAN, 8, Font.ITALIC)));
先に示した通り、FontFactory は、Font を得るもっとも安全な方法です。これを使えば、その前がどのようなフォントスタイルかにかかわらず、予想されるフォントスタイルがいつでも得られます。フォントの伝播はある場合には便利ですが、ちょっと気まぐれな機能です。
Example: java com.lowagie.examples.fonts.styles.FontStylePropagation
Explains the mechanism of Font Style Propagation: see FontStylePropagation.pdf
下線と取り消し線
下線と取り消し線は、本当はフォントには関係ありませんが、どちらの'スタイルタイプ'も Font.UNDERLINE および Font.STRIKETHRU として、Font クラスに加えられています。例では、PDF、RTF、HTML を生成しています。しかし、PDF を作成するだけならば、Chunk の機能を使うのがよりよい方法です。Font.UNDERLINE と Font.STRIKETHRU は、この機能についてデフォルトの値を使ってしまいます。線の高さ、幅、色などを完全に制御したいならば、Chunk の章に記載した、Chunk.setUnderline メソッドを使う必要があります。
Example: java com.lowagie.examples.fonts.styles.ExtraStyles
Demonstrates how to underline or strike through text: see ExtraStyles.pdf ExtraStyles.rtf ExtraStyles.html
フォントの色

フォントの色を変更したいなら、 FontFactory に、その色のほかのフォントを問い合わせるだけです。

font red =
  FontFactory.getFont(
    FontFactory.COURIER,
    Font.DEFAULTSIZE,
    Font.NORMAL,
    new Color(0xFF, 0x00, 0x00));
It's a little more complicated if you want to change the color of some text you want to add at an absolute position. As you can read in the Text State chapter, you have to use class BaseFont and this class doesn't have a color value. In this case, you have to know that, according to the PDF specs, characters are seen as 'shapes'. Those shapes are filled with a certain color. So if you want to change the color of the font, you need to change the color with the 'ColorFill' of your choice in PdfContentByte:

絶対位置に追加したテキストの色を変えたい場合は、少し複雑です。テキストステートの章を読めば分かりますが、BaseFont クラスを使輪なければならないにもかかわらず、それには色の値はありません。この場合には、PDF の仕様に従い、文字は'シェイプ'として見えているということを知らなければならない。これらのシェイプは、ある色で塗りつぶされます。そのため、フォントの色を変えたいならば、PdfContentByte で、'ColorFill' の色を変更する必要がある。

BaseFont bf =
  FontFactory.getFont(FontFactory.COURIER).getCalculatedBaseFont();
cb.beginText();
cb.setRGBColorFill(new Color(0x00, 0x00, 0xFF));
cb.setFontAndSize(bf, 12);
cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text + "This text is centered", 250, 700, 0);
cb.endText();
Example: java com.lowagie.examples.fonts.styles.FontColor
Shows how to change the color of a font: see FontColor.pdf
先頭に戻る
方向
文書にオブジェクトを追加するとき、iText はデフォルトでは、左から右へとテキストを書いていきます。もちろん、その反対方向へ書いていく言語もあります。たとえば、アラビア語やヘブライ語は右から左へ書きます。多くのアジア文字も縦書きされます。たとえば、日本語はページの右上から列に沿って書きます。
書く方向の変更
iText では、Table および Column の二つのオブジェクトでテキストの書く方向を変更することができます。どちらのオブジェクトも、方向を変更する次の値のうちのひとつをとるメソッド(ColumnText.setRunDirection(int) PdfPTable.setRunDirection(int))があります。次の例は、NO_BIDI と RTL を ColumnText(1ページ目)および PdfPTable(2ページ目)に使った例のデモです。
Example: java com.lowagie.examples.fonts.styles.RightToLeft
Writing text from left to right: see righttoleft.pdf
絶対位置に RTL テキストを加えるならば、常に ColumnText オブジェクトを使わなければなりません。次の例では、RTL テキストを20度回転させて追加しています。
Example: java com.lowagie.examples.fonts.styles.ComplexText
Writing text from left to right at absolute positions: see complextext.pdf
縦書きテキスト
PDF に縦書きテキストを追加したいなら、VerticalText オブジェクトを使う必要がある。これは、テキストを縦に書いていきます。縦書きテキストを参照していますが、そのネーミングは横書きテキストに従います。Element.LEFT_ALIGN により整列されると、実際には上に寄せられます。どのように動作するかは、次の例を見てください。
Example: java com.lowagie.examples.fonts.styles.Vertical
Writing vertical text: see vertical.pdf
Extra jars needed in your CLASSPATH: iTextAsian.jar
先頭に戻る

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