2012年4月28日土曜日

Java PDF iText(その2 日本語)

前回, 入門ということで, iText をダウンロードして, 簡単なPDFを作りました。

今回は, itext-asian.jar  を使って, 日本語を入力していきましょう。

前回の記事

まず, itext-asian.jar をBuild Pathに入れましょう。 ダウンロード方法は, 前回の記事を参考にしてください。

こいつは, アジア系の2バイトの文字などのためのライブラリです。

このライブラリを使って, 日本語のフォントを取ってきます。 そのフォントを使って日本語を入力します
手順はこれだけです。

新たに追加したプログラムは以下です。



public static Font getJPFont() throws IOException, DocumentException
{
return new Font( BaseFont.createFont( "HeiseiKakuGo-W5", "UniJIS-UCS2-H",   BaseFont.NOT_EMBEDDED ), 11 );
}


このプログラムは, itext で日本語のフォントを作っています。
フォントの名前と, エンコード, 文字の大きさ(pt)を指定しています。
このあたりの詳しいことは調べてみたら, CodeZine(山田 祥寛さん)の記事 に解説がありました。

準備はこれだけです。
では日本語を入れていきましょう。


private static void addJapanese( Document document ) throws IOException, DocumentException
{
Font font = getJPFont();
Paragraph preface = new Paragraph();
preface.add( new Paragraph("阿良々々木さん, かみまみま。", font));
document.add(preface);
}

さっきあったフォントを返す関数を使って,  パラグラフを作って, 直接日本語を入力しました。

プログラムの全体 です。


public class FirstSample
{
private static String FILE_NAME = "c:\\PDF\\test.pdf";

/**
* @param args
*/
public static void main(String[] args) throws FileNotFoundException, DocumentException, IOException
{
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_NAME));
document.open();
// Here is operations of PDF
addMetaData( document );
addTitlePage( document );
addJapanese(document);
document.close();
}

private static void addMetaData( Document document )
{
document.addTitle("My First PDF");
document.addSubject("PDF Sample");
document.addKeywords("PDF Programming");
document.addAuthor("atmarkplant");
document.addCreator("atmarkplant");
}

public static Font getJPFont() throws IOException, DocumentException
{
return new Font( BaseFont.createFont( "HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED ), 11 );
}

private static void addTitlePage( Document document ) throws DocumentException, IOException
{
Paragraph preface = new Paragraph();
preface.add( new Paragraph("Arararagi-san"));
document.add(preface);
}

private static void addJapanese( Document document ) throws IOException, DocumentException
{
Font font = getJPFont();
Paragraph preface = new Paragraph();
preface.add( new Paragraph("阿良々々木さん, かみまみま。", font));
document.add(preface);
}
}

結果はこんな感じです。

入力した日本語がきれいに表示されました。









0 件のコメント:

コメントを投稿