top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
iText を使って PDF ファイルを新規作成するサンプルです。このサンプルは、任意座標に文字や線を出力することを目的としています。
iText を使って PDF ファイルを新規作成するサンプルです。このサンプルは、任意座標に文字や線を出力することを目的としています。
確認に利用した動作環境。
Sun Java2 SDK 1.5.0_19 (Windows版)
iTexthttp://sourceforge.net/projects/itext/ http://itextpdf.com/
iText-2.1.7.jar WritePdfSample.java
``` /*
import java.awt.Color; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream;
import com.lowagie.text.Document; import com.lowagie.text.PageSize; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfWriter;
public class WritePdfSample { public static final int MARGIN_X = 20; public static final int MARGIN_Y = 20;
public static void main(final String[] args) throws Exception {
final BufferedOutputStream outStream = new BufferedOutputStream(
new FileOutputStream("sample.pdf"));
try {
new WritePdfSample().writePdf(outStream);
outStream.flush();
} finally {
outStream.close();
}
}
void writePdf(final OutputStream outStream) throws Exception {
final Document document = new Document(PageSize.A4.rotate(), 50, 50,
50, 50);
final PdfWriter writer = PdfWriter.getInstance(document, outStream);
document.open();
for (int page = 1; page <= 2; page++) {
if (page != 1) {
document.newPage();
}
writePage(writer);
}
document.close();
writer.close();
}
void writePage(final PdfWriter writer) throws Exception {
final BaseFont bf = BaseFont.createFont(
"c:\\windows\\fonts\\msgothic.ttc,1", BaseFont.IDENTITY_H,
BaseFont.EMBEDDED);
for (int x = 0; x < 10; x++) {
for (int y = 0; y < 10; y++) {
final PdfContentByte cb = writer.getDirectContent();
cb.saveState();
cb.beginText();
cb.moveText(MARGIN_X + x * 100, MARGIN_Y + y * 100);
cb.setFontAndSize(bf, 10);
cb.showText("" + x + ", " + y);
cb.endText();
cb.restoreState();
}
}
for (int x = 0; x < 10; x++) {
final PdfContentByte cb = writer.getDirectContent();
cb.saveState();
cb.setColorStroke(Color.BLACK);
cb.setLineDash(3, 3, 0);
cb.moveTo(MARGIN_X + x * 100, MARGIN_Y + 0);
cb.lineTo(MARGIN_X + x * 100, MARGIN_Y + 500);
cb.stroke();
cb.restoreState();
}
for (int y = 0; y < 10; y++) {
final PdfContentByte cb = writer.getDirectContent();
cb.saveState();
cb.setColorStroke(Color.BLACK);
cb.setLineDash(3, 3, 0);
cb.moveTo(MARGIN_X + 0, MARGIN_Y + y * 100);
cb.lineTo(MARGIN_X + 800, MARGIN_Y + y * 100);
cb.stroke();
cb.restoreState();
}
}
} ```
次は、既存 PDF ファイルをフォームとして、PDF 更新作成の方法を調べます。
関連する日記
2009/12/09 日記: Java: iText を用いた フォーム PDF ファイルをもちいて PDF ファイルを作成するサンプル
2005/06/12 日記: Java: OpenOffice.org SDKを用いた PDFファイルを新規作成するサンプル
ところで、iText を調べていたところ、iText のバージョンが 2.1.7 から 5.0.0 へと変更された際に、ライセンスが GNU LGPL から Affero GNU Public License に変更されているように見えました。SourceForge.net 上の記述やソースコード・ヘッダーのライセンス記載から、そのように読み取られます。私は GNU LGPL ファンなので、GNU AGPL に変わるのは少し残念です。