iTextを使用して会社解散の「清算結了」書類を作成するJavaのアプリケーション

iTextを使用して会社解散の「清算結了」書類を作成するJavaのアプリケーションを作成しました。
アプリケーションを実行するには下記のライブラリが必要となります。

作成する「清算結了」の原本となる異動届出書(PDFファイル)は下記のURLよりダウンロードできます。


package jp.co.hoshisoft;

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

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;

public class CreatePDF1 {

public static void main(String[] args) {
CreatePDF1 main = new CreatePDF1();
main.exec1();
}

public void exec1() {
PdfReader reader = null;
BaseFont bf = null;
Document document = null;
try {
reader = new PdfReader("異動届出書.pdf");

Rectangle psize = reader.getPageSize(1); // 最初のページのサイズを取得
float width = psize.getHeight();
float height = psize.getWidth();

document = new Document(new Rectangle(height, width));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("異動届出書(清算結了).pdf"));
document.open();

PdfContentByte over = writer.getDirectContent();

bf = BaseFont.createFont("HeiseiKakuGo-W5","UniJIS-UCS2-HW-H",false);

for(int i=1;i<=4;i++) {
document.newPage();
PdfImportedPage page1 = null;
if(i == 1) {
page1 = writer.getImportedPage(reader, 1);
}
else if(i == 2) {
page1 = writer.getImportedPage(reader, 2);
}
else if(i == 3) {
page1 = writer.getImportedPage(reader, 4);
}
else if(i == 4) {
page1 = writer.getImportedPage(reader, 4);
}

over.addTemplate( page1, 1, 0, 0, 1, 0, 0);

over.beginText();

over.setFontAndSize(bf, 10);
over.setTextMatrix(121, 712);
over.showText("22 02 01");

switch(i) {
case 1:
over.setFontAndSize(bf, 10);
over.setTextMatrix(97, 678);
over.showText("王子");
break;
case 2:
over.setFontAndSize(bf, 10);
over.setTextMatrix(92, 680);
over.showText("荒川");
break;
case 3:
over.setFontAndSize(bf, 10);
over.setTextMatrix(92, 693);
over.showText("王子");
break;
case 4:
over.setFontAndSize(bf, 10);
over.setTextMatrix(92, 677);
over.showText("荒川");
break;
}

over.setFontAndSize(bf, 10);
over.setTextMatrix(208, 730);
over.showText("レ");

over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 770);
over.showText("ユウゲンガイシャXXXXXX");

over.setFontAndSize(bf, 10);
over.setTextMatrix(360, 753);
over.showText("有限会社XXXXXXX");

over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 738);
over.showText("トウキョウトXXXXXXXX");

over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 729);
over.showText("999-9999");

over.setFontAndSize(bf, 10);
over.setTextMatrix(360, 718);
over.showText("東京都XXXXXXXXXXXXXX");

over.setFontAndSize(bf, 8);
over.setTextMatrix(385, 708);
over.showText("03 9999 9999");

over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 697);
over.showText("999-9999");

over.setFontAndSize(bf, 10);
over.setTextMatrix(360, 686);
over.showText("東京都XXXXXXXXXX");

over.setFontAndSize(bf, 8);
over.setTextMatrix(385, 676);
over.showText("99 9999 9999");

over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 665);
over.showText("ニッポン タロウ");

over.setFontAndSize(bf, 10);
over.setTextMatrix(360, 648);
over.showText("日本 太郎");

if(i != 2) {
over.setFontAndSize(bf, 8);
over.setTextMatrix(360, 633);
over.showText("999-9999");

over.setFontAndSize(bf, 10);
over.setTextMatrix(360, 622);
over.showText("東京都XXXXXXXXXXXXXX");

over.setFontAndSize(bf, 8);
over.setTextMatrix(385, 612);
over.showText("03 9999 9999");
}

over.setFontAndSize(bf, 7);
over.setTextMatrix(145, 555);
over.showText("コンピュータソフト開発");

over.setFontAndSize(bf, 10);
over.setTextMatrix(160, 525);
over.showText("3,000,000");

over.setFontAndSize(bf, 10);
over.setTextMatrix(160, 495);
over.showText("3,000,000");

over.setFontAndSize(bf, 10);
over.setTextMatrix(340, 554);
over.showText("04   01      03   31");

over.setFontAndSize(bf, 10);
over.setTextMatrix(350, 488);
over.showText("1");

over.setFontAndSize(bf, 10);
over.setTextMatrix(500, 488);
over.showText("1");

over.setFontAndSize(bf, 10);
over.setTextMatrix(63, 335);
over.showText("残余財産確定");

over.setFontAndSize(bf, 8);
over.setTextMatrix(463, 339);
over.showText("平22 01 31");

over.setFontAndSize(bf, 10);
over.setTextMatrix(63, 315);
over.showText("清算結了");

over.setFontAndSize(bf, 8);
over.setTextMatrix(463, 315);
over.showText("平22 ・02 ・01");

over.setFontAndSize(bf, 8);
over.setTextMatrix(460, 300);
over.showText("(平22 ・02 ・01)");

over.endText();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} finally {
if(document != null) {
document.close();
}
}
}
}