1. Top
  2. Java Tips
  3. iText(PDF)

iTextを利用してJavaからPDFファイルを作成する

本TIPSで紹介するiTextは、PDFをJavaで扱うためのライブラリです。これを使えば、PDFファイルを作成したり、ブラウザにPDFを出力したりすることができます。

必要なライブラリ

・itext-2.1.7.jar
・iTextAsian.jar(日本語フォント)

http://sourceforge.net/projects/itext/files/ から、上記のJARファイルをダウンロードしてください。
itext-2.1.7.jarだけでiTextは利用可能ですが、本体には日本語フォント用の設定が含まれていません。日本語を扱うために、iTextAsian.jarライブラリが必要です。

iText2.1.7.zip ダウンロード

ページの先頭へ

基本的な使い方

iTextを使うには、基本的に以下の5つのステップを踏みます。

1. 文書オブジェクトを生成
2. 文書の出力形式(PDF/RTF/HTML/XMLより選択可能)と出力先を設定
3. 文書の出力を開始
4. 文書にテキスト/表/画像などの要素を追加
5. 文書の出力を終了

【PDFファイルを出力するサンプル】
package test.iText;

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;

/**
 * PDFファイルを出力するサンプル
 * 
 * @author livetp.com
 */
public class ITextSample1 {
    
    public static void main(String[] args) {    
        // (1)文書オブジェクトを作成
        // A4横、左右上下の余白を設定
        Document document = 
            new Document(PageSize.A4.rotate(), 30, 30, 40, 50);

        try {
            // (2)文書の出力形式(PDF)と出力先を設定
            PdfWriter.getInstance(document, 
                  new FileOutputStream("C:\\ITextSample1.pdf"));

            // フォントの作成
            BaseFont baseFont = BaseFont.createFont(
                "HeiseiMin-W3",       // 平成明朝体
                "UniJIS-UCS2-HW-H",   // 横書き指定&英数を半角幅で印字
                BaseFont.NOT_EMBEDDED);
            
            Font font18 = new Font(baseFont, 18);
            Font font18b = new Font(baseFont, 18, Font.BOLD);

            // (3)文書の出力を開始
            document.open();

            // (4)文書にテキストを追加
            document.add(new Paragraph("サンプル文字出力", font18b));
            
            // 文書に表を追加
            Table table = new Table(3);
            table.setBorderWidth(1);
            table.setBorderColor(new Color(0, 0, 255));
            table.setPadding(5);
            table.setSpacing(0);
            Cell cell = new Cell(new Phrase("表のヘッダ", font18));
            cell.setHeader(true);
            cell.setColspan(3);
            table.addCell(cell);
            table.endHeaders();
            cell = new Cell("example cell with colspan 1 and rowspan 2");
            cell.setRowspan(2);
            cell.setBorderColor(new Color(255, 0, 0));
            table.addCell(cell);
            table.addCell("1.1");
            table.addCell("2.1");
            table.addCell("1.2");
            table.addCell("2.2");
            document.add(table);

            // (5)文書の出力を終了
            document.close();

        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


【サンプルPDF】
ITextSample1.pdf




ページの先頭へ

iTextの主なライブラリクラス

ここでは使用頻度の高いと思われるクラスとメソッドについて、簡単な使用方法をご紹介します。

iTextの主なクラス

クラス名 説明
Document 出力するPDF文書を表すクラスです。
PdfWriter 「Document」クラスをもとに、指定された出力先にPDF出力を行うクラスです。
Font フォントを指定するためのクラスです。色の指定も可能です。
HeaderFooter ヘッダー、フッターを設定するためのクラスです。
Chunk 文字列の最小単位を表すクラスです。単一のフォントで表現されます。
Phrase 文字列を設定するためのクラスです。複数のChunkクラスで構成されます。Chunkクラスを使用せずに直接文字列を設定することも可能です。
Paragraph 文字列を設定するためのクラスで、Phraseクラスを継承しています。このクラス独自にインデントや表示位置の設定ができます。複数のChunkクラス、Phraseクラスで構成されますが、直接文字列を設定することも可能です。
Table 表の出力を行うためのクラスです。
Cell 表の各セルの設定を行うためのクラスです。


iTextの主なメソッド

メソッド名 説明
doc.addTitle タイトルの設定
doc.addAuthor 作成者の設定
doc.addSubject サブタイトルの設定
doc.addCreationDate() 作成日の設定
doc.setMargins マージンの設定
doc.newPage() ページの作成
doc.getPageSize().getHeight() 文書の縦方向のpixel数を取得
doc.getPageSize().getWidth() 文書の横方向のpixel数を取得
tbl.setTotalWidth テーブルの幅を定義
tbl.setLockedWidth(true) setTotalWidthの値を使用
tbl.getDefaultCell().setPadding(1) 内容と境界線の間のスペースを設定
tbl.getDefaultCell().setBorderWidth(0.5f) 罫線の幅を設定 0.5pixel(約0.18mm)
tbl.getDefaultCell().setHorizontalAlignment セルの水平方向の配置を設定
中央:Element.ALIGN_CENTER
tbl.getDefaultCell().setVerticalAlignment セルの垂直方向の配置を設定
中央:Element.ALIGN_MIDDLE
tbl.getDefaultCell().setBackgroundColor 背景色を設定
tbl.getDefaultCell().setLeading(16f, 0f); 行の幅を設定


iTextのフォント

フォントの設定には、Fontクラスを使用します。
日本語フォントを使用する際は、BaseFont#createFontメソッドにてBaseFontインスタンスを作成して下さい。BaseFont#createFontの第1引数には使用するフォント名を、第2引数にはエンコーディング名を設定します。

iTextで利用可能な日本語フォント

フォント名 説明
KozMinPro-Regular 小塚明朝-Pro
HeiseiMin-W3 平成明朝-W3
HeiseiKakuGo-W5 平成角ゴ-W5


iTextで利用可能なエンコーディング

エンコーディング名 説明
UniJIS-UCS2-H Adobe日本語文字のUniCode用エンコーディング(横書き)
UniJIS-UCS2-V Adobe日本語文字のUniCode用エンコーディング(縦書き)
UniJIS-UCS2-HW-H UniJIS-UCS2-Hのうち、英数を半角幅に変更したエンコーディング
UniJIS-UCS2-HW-V UniJIS-UCS2-Vのうち、英数を半角幅に変更したエンコーディング


ページの先頭へ