Java iText


インストール環境 OS:Microsoft Windows Me
インストール元 http://itext.sourceforge.net/downloads/
ファイル iText.jar    02-May-2003 07:16 649k
  iTextAsian.jar 02-May-2003 07:16 322k
 
クラス 概要
Document 文書全体を表すクラス。
PdfWriter 文書からPDFを作成するクラス。
PdfContenByte PDFの描画先を表す。
Chunk 単一フォントで構成される文字列。
Phrase 複数のChunk、複数のフォントで構成される文字列。
Paragraph 複数のChunk、Paragraphで構成される文書単位。
HeaderFooter ヘッダー/フッターを扱う。
Table 表全体を表す。
Cell セルを表す。
Font 描画に使うフォントを現す。
BaseFont さまざまなフォント用クラスの基底クラス。日本語表示は必須。
 
実行環境
OS:Microsoft Windows Me
 
明日のための其の壱 PDFの書き込み(PDFWriterオブジェクト) Sample1.pdf
 C:\javaに下記ファイル作成しJavaクラスの実行
 
ソースファイル:C:\java\Sample1.java
import java.io.FileOutputStream;
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.BaseFont;

public class Sample1 {
public static void main(String[] args) {
try {
// Document,PdfWriterオブジェクトを作成
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("Sample1.pdf"));
document.open();

// キャンバスを取得
PdfContentByte cb = writer.getDirectContent();

// 文字列を描画
BaseFont bf = BaseFont.createFont("Times-Roman", "Cp1252", false);
cb.beginText();
cb.setFontAndSize(bf, 16);
cb.showTextAligned(PdfContentByte.ALIGN_LEFT,"Hello PDF !", 100, 700, 0);
cb.endText(); 
document.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
 
コンパイルファイル:C:\java\cpl.bat
set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar
C:\j2sdk1.4.1_02\bin\javac -deprecation Sample1.java
pause
 
実行ファイル:C:\java\run.bat
set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar
C:\j2sdk1.4.1_02\bin\java Sample1
pause
 
実行結果:DOSプロンプト
C:\java>set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar

C:\java>C:\j2sdk1.4.1_02\bin\java Sample1

C:\java>pause
続けるにはどれかキーを押してください . . .
 
 
明日のための其の弐 PDFの書き込み(Documentオブジェクト) Sample2.pdf
 C:\javaに下記ファイル作成しJavaクラスの実行
 
ソースファイル:C:\java\Sample2.java
import java.awt.Color;
import java.io.FileOutputStream;
import com.lowagie.text.*;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;

public class Sample2 {

// 明細用データ
private static String[][] data = {
{"300-01", "ファイズドライバー", "2", "個", "300", "600"},
{"300-02", "ファイズエッジ", "1", "個", "300", "300"},
{"200-01", "ファイズフォン(ミッションメモリー付)", "2", "個", "200", "400"},
{"200-02", "ファイズポインター", "1", "個", "200", "200"},
{"200-03", "ファイズショット", "1", "個", "200", "200"},
{"200-04", "スマートパッド", "1", "個", "200", "200"}
};
public static void main(String[] args) {
try{
// 明朝体,ゴシック体フォントを設定
BaseFont mincho = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false);
BaseFont gothic = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H",false);
Font min10 = new Font(mincho, 10);
Font goth10 = new Font(gothic, 10);

// Documentオブジェクトを生成
Document document = new Document(PageSize.A4);
// PdfWriterオブジェクトを生成
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("Sample2.pdf"));

// ヘッダー/フッターを設定
HeaderFooter header = new HeaderFooter(new Phrase(new Chunk("2003/05/18", new Font(mincho, 10, Font.UNDERLINE))), false);
header.setAlignment(Element.ALIGN_RIGHT);
header.setBorderColor(Color.white);
document.setHeader(header);

HeaderFooter footer = new HeaderFooter(new Paragraph("子供達の代表", new Font(mincho, 12)), false);
footer.setAlignment(Element.ALIGN_CENTER);
document.setFooter(footer);

// ドキュメントをオープン
document.open();

// 文を挿入
Paragraph para1 = new Paragraph("請 求 書", new Font(gothic, 20, Font.BOLD));
para1.setAlignment(Element.ALIGN_CENTER);
document.add(para1);
Paragraph para2 = new Paragraph(50, "ママ 様", new Font(mincho, 15, Font.UNDERLINE));
para2.setAlignment(Element.ALIGN_LEFT);
document.add(para2);
Paragraph para3 = new Paragraph(40, "下記の通り請求いたします。", new Font(mincho, 12));
para3.setAlignment(Element.ALIGN_CENTER);
document.add(para3);

// 表を出力
Table tbl_hd = new Table(2);
tbl_hd.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
tbl_hd.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
tbl_hd.setPadding(4);

int widthA[] = {35,65};
tbl_hd.setWidths(widthA); // 各セル幅の比率を設定(パーセント)
tbl_hd.setWidth(50); // テーブル全体の大きさを設定(パーセント)

Cell cellA1 = new Cell(new Phrase("件名", new Font(gothic, 15)));
cellA1.setGrayFill(0.9f);
Cell cellA2 = new Cell(new Phrase("合計金額", new Font(gothic, 15)));
cellA2.setGrayFill(0.9f);
Cell cellA3 = new Cell(new Phrase("1,995円", new Font(mincho, 15)));
cellA3.setHorizontalAlignment(Element.ALIGN_RIGHT);

tbl_hd.addCell(cellA1);
tbl_hd.addCell(new Phrase("ファイズグッズ代", new Font(mincho, 15)));
tbl_hd.addCell(cellA2);
tbl_hd.addCell(cellA3);

document.add(tbl_hd);

Paragraph para4 = new Paragraph("明細書", new Font(gothic, 13));
para4.setAlignment(Element.ALIGN_CENTER);
document.add(para4);

Table tbl_dt = new Table(6);
tbl_dt.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
tbl_dt.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
tbl_dt.setPadding(4);
tbl_dt.setOffset(0);

int widthC[] = {10,40,10,10,15,15};
tbl_dt.setWidths(widthC);
tbl_dt.setWidth(100);

Cell cellC1 = new Cell(new Phrase("CODE", goth10));
cellC1.setGrayFill(0.9f);
Cell cellC2 = new Cell(new Phrase("品目・摘要", goth10));
cellC2.setGrayFill(0.9f);
Cell cellC3 = new Cell(new Phrase("数量", goth10));
cellC3.setGrayFill(0.9f);
Cell cellC4 = new Cell(new Phrase("単位", goth10));
cellC4.setGrayFill(0.9f);
Cell cellC5 = new Cell(new Phrase("単価", goth10));
cellC5.setGrayFill(0.9f);
Cell cellC6 = new Cell(new Phrase("金額", goth10));
cellC6.setGrayFill(0.9f);

tbl_dt.addCell(cellC1);
tbl_dt.addCell(cellC2);
tbl_dt.addCell(cellC3);
tbl_dt.addCell(cellC4);
tbl_dt.addCell(cellC5);
tbl_dt.addCell(cellC6);

// 明細行を埋める
for(int i = 0; i < data.length; i++){
Cell cell = new Cell(new Phrase(data[i][0], min10));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
tbl_dt.addCell(cell);
cell = new Cell(new Phrase(data[i][1], min10));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
tbl_dt.addCell(cell);
cell = new Cell(new Phrase(data[i][2], min10));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
tbl_dt.addCell(cell);
cell = new Cell(new Phrase(data[i][3], min10));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
tbl_dt.addCell(cell);
cell = new Cell(new Phrase(data[i][4], min10));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
tbl_dt.addCell(cell);
cell = new Cell(new Phrase(data[i][5], min10));
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
tbl_dt.addCell(cell);
}

//空白行を作成
for (int i = data.length; i < 10; i++) {
for (int j = 0; j < 6; j++) {
tbl_dt.addCell(Cell.EMPTY_CELL);
}
}

Cell cellC7 = new Cell(new Phrase("小計", goth10));
cellC7.setGrayFill(0.9f);
cellC7.setColspan(5);
Cell cellC8 = new Cell(new Phrase("1,900", min10));
cellC8.setHorizontalAlignment(Element.ALIGN_RIGHT);
Cell cellC9 = new Cell(new Phrase("消費税等", goth10));
cellC9.setGrayFill(0.9f);
cellC9.setColspan(5);
Cell cellC10 = new Cell(new Phrase("95", min10));
cellC10.setHorizontalAlignment(Element.ALIGN_RIGHT);
Cell cellC11 = new Cell(new Phrase("合計", goth10));
cellC11.setGrayFill(0.9f);
cellC11.setColspan(5);
Cell cellC12 = new Cell(new Phrase("1,995", min10));
cellC12.setHorizontalAlignment(Element.ALIGN_RIGHT);
Cell cellC13 = new Cell(new Phrase("備考", goth10));
cellC13.setGrayFill(0.9f);
cellC13.setRowspan(3);
cellC13.setVerticalAlignment(Element.ALIGN_TOP);
Cell cellC14 = new Cell(new Phrase("数量が2個分は兄弟分", goth10));
cellC14.setRowspan(3);
cellC14.setColspan(5);
cellC14.setHorizontalAlignment(Element.ALIGN_LEFT);

tbl_dt.addCell(cellC7);
tbl_dt.addCell(cellC8);
tbl_dt.addCell(cellC9);
tbl_dt.addCell(cellC10);
tbl_dt.addCell(cellC11);
tbl_dt.addCell(cellC12);
tbl_dt.addCell(cellC13);
tbl_dt.addCell(cellC14);

document.add(tbl_dt);

// ドキュメントをクローズ
document.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
 
コンパイルファイル、実行ファイル、実行結果は略