テキストを作成する
では、ドキュメントを書いてみましょう。まずは、基本中の基本である「テキスト」からです。これは、Documentの中に「Paragraph」というオブジェクトとして組み込んでいきます。
package jp.allabout;
import java.io.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
public class SampleApp {
public static void main(String[] args){
FileOutputStream out = null;
BufferedOutputStream bout = null;
PdfWriter writer = null;
Document doc = null;
try {
out = new FileOutputStream("test.pdf");
bout = new BufferedOutputStream(out);
doc = new Document(new Rectangle(0,0,500,500));
writer = PdfWriter.getInstance(doc, bout);
doc.open();
Font kaku_24 = new Font(BaseFont.createFont(
"HeiseiKakuGo-W5","UniJIS-UCS2-H",
BaseFont.NOT_EMBEDDED),18);
kaku_24.setColor(CMYKColor.RED);
doc.add(new Paragraph("これは、サンプルです。", kaku_24));
Font mincho_12 = new Font(BaseFont.createFont(
"HeiseiMin-W3", "UniJIS-UCS2-HW-H",
BaseFont.NOT_EMBEDDED),12);
doc.add(new Paragraph("サンプルとして作成したPDFファイルです。", mincho_12));
doc.add(new Paragraph("果たして、きれいにできたでしょうか。", mincho_12));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
doc.close();
System.out.println("ended...");
}
}
}
作成されたPDFファイルをAdobe Readerで開いてみる。テキストが書かれているのがわかる。 |
プログラムを実行すると、「test.pdf」というPDFファイルが作成されます。これを開いて中身を見てみましょう(Adobe ReaderなどのPDFファイルを閲覧するソフトが必要ですのでそれぞれで用意してください)。中には、赤いゴシック体と、黒い明朝体でテキストが3行表示されます。
では、ソースをざっと見てみましょう。Documentをopenするところまでは前回と同じですね。これ以降が、ドキュメントへのテキスト作成処理になります。テキストの作成には、「フォント」と「パラグラフ」の2つの要素が必要となります。これらは、「Font」「Paragraph」というクラスとして用意されています。ただし! 注意して欲しいのは、「このFontクラスは、java.awt.Fontではない」という点です。
ここで使っているFontは、com.lowagie.text.Fontクラスです。要するに、iText用に用意されているFontを使用するのですね。では、Fontインスタンスを作成しましょう。
Font kaku_24 = new Font(BaseFont.createFont(
"HeiseiKakuGo-W5","UniJIS-UCS2-H",
BaseFont.NOT_EMBEDDED),18);
ここでは、"HeiseiKakuGo-W5"というフォントを使用して、18ポイントの標準スタイルのフォントを作成しています。Fontは、以下のような形でインスタンスを作成します。
new Font()
new Font( [BaseFont] )
new Font( [BaseFont],サイズ )
new Font( [BaseFont],サイズ,スタイル )
new Fontするにはさまざまな引数の指定の仕方があります。ここにいくつかあげましたが、この他にもまだまだあるのです。ただし、実際の利用という点からすれば、「BaseFont」というクラスのインスタンスを引数指定して作成するのが一般的でしょう。
BaseFontは、文字通りベースとなるフォントです。ここでは日本語フォントを使用していますが、このような場合にBaseFontのインスタンスとして日本語フォントを用意し、これを引数に指定してFontを作成するのが基本となります。このBaseFontは、newではなくcreateFontメソッドを呼び出してインスタンスを作成します。
BaseFont.createFont( フォント名 , エンコーディング , embedded )
ここでは、第1引数に"HeiseiKakuGo-W5"、第2引数に"UniJIS-UCS2-H"という値を指定していますね。これが、日本語日本語各ゴシックフォントの基本設定となります。また第3引数にはフォントをPDFに埋め込むかどうかを示す真偽値を指定します。通常、これはfalseでよいでしょう。
これで、BaseFontインスタンスを作成し、それを利用してFontインスタンスを作成する、というところまでできました。次は、フォントの色の設定を行いましょう。
kaku_24.setColor(CMYKColor.RED);
フォントの色は、そのままFontインスタンスの「setColor」で設定することができます。ただし、注意したいのは、ここで設定するのはjava.awt.Colorインスタンスではない、という点です。色についても、やはりiText専用のクラスを利用することになります。これには、com.lowagie.text.pdf.CMYKColorというクラスを利用します。
このCMYKColorは、new CMYKColorとしてインスタンスを作成することもできますが、主な色についてはクラスフィールドとしてあらかじめ用意されているのでそれらを利用することもできます。ここでは、CMYKColor.REDをそのまま色に指定することにしました。
doc.add(new Paragraph("これは、サンプルです。", kaku_24));
こうしてフォントのインスタンスが完成したら、次はこれを利用してパラグラフを作成します。パラグラフは、文字通り「段落」のオブジェクトです。これは、「Paragraph」クラスのインスタンスとして作成をします。
new Paragraph( [String], [Font])
このように、テキストと使用するフォントを引数に指定してインスタンスを作成することで、そのフォントで指定したテキストを表示するパラグラフが作成されます。
作成されたParagraphは、Documentの「add」メソッドでドキュメントに組み込みます。このParagraphを作成してはaddする、ということを繰り返してドキュメントにテキストを作成していくのですね。