import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import wkc.pdf.PdfException;
import wkc.pdf.tool.Report;
import wkc.pdf.tool.ReportException;
import wkc.pdf.tool.StandardReportConfig;
import wkc.pdf.tool.Field;
import wkc.pdf.tool.Quadding;
import wkc.pdf.Type1Font;
import wkc.pdf.PdfRGBColor;
import wkc.pdf.PdfGrayColor;

public class OrderFormFin {
	private static File FORM_DIRECTORY_ROOT = new File("../resources/form");
	private static File OUTPUT_DIRECTORY_ROOT = new File(".");

	public static void main(String[] args) throws IOException, ReportException, PdfException {
		File outPdfFile = new File(OUTPUT_DIRECTORY_ROOT, "OrderFormFin.pdf");
		File formFile = new File(FORM_DIRECTORY_ROOT, "template.pdf");
		File datFile = new File(FORM_DIRECTORY_ROOT, "template.dat");
		FileOutputStream fout = new FileOutputStream(outPdfFile);
		Report report = null;
		try {
			report = new Report(formFile, datFile, fout);
			report.createPage(1);
			report.setDefaultFontSize(11);

			report.putFieldData("xFormType", "お客様控え");

			Field g0Field = report.getField("xGram.0");
			g0Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g0Field, "0");

			Field g1Field = report.getField("xGram.1");
			g1Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g1Field, "0");

			Field g2Field = report.getField("xGram.2");
			g2Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g2Field, "1");

			Field g3Field = report.getField("xGram.3");
			g3Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g3Field, "0");

			Field g4Field = report.getField("xGram.4");
			g4Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g4Field, "1");

			Field g5Field = report.getField("xGram.5");
			g5Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g5Field, "0");

			Field g6Field = report.getField("xGram.6");
			g6Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g6Field, "0");

			Field g7Field = report.getField("xGram.7");
			g7Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g7Field, "0");

			Field g8Field = report.getField("xGram.8");
			g8Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g8Field, "0");

			Field g9Field = report.getField("xGram.9");
			g9Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(g9Field, "0");

			Field ac0Field = report.getField("xAmountC.0");
			ac0Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac0Field, "0");

			Field ac1Field = report.getField("xAmountC.1");
			ac1Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac1Field, "0");

			Field ac2Field = report.getField("xAmountC.2");
			ac2Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac2Field, "490");

			Field ac3Field = report.getField("xAmountC.3");
			ac3Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac3Field, "0");

			Field ac4Field = report.getField("xAmountC.4");
			ac4Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac4Field, "1,350");

			Field ac5Field = report.getField("xAmountC.5");
			ac5Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac5Field, "0");

			Field ac6Field = report.getField("xAmountC.6");
			ac6Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac6Field, "0");

			Field ac7Field = report.getField("xAmountC.7");
			ac7Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac7Field, "0");

			Field ac8Field = report.getField("xAmountC.8");
			ac8Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac8Field, "0");

			Field ac9Field = report.getField("xAmountC.9");
			ac9Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(ac9Field, "0");

			Field n0Field = report.getField("xNumber.0");
			n0Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n0Field, "0");

			Field n1Field = report.getField("xNumber.1");
			n1Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n1Field, "0");

			Field n2Field = report.getField("xNumber.2");
			n2Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n2Field, "0");

			Field n3Field = report.getField("xNumber.3");
			n3Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n3Field, "0");

			Field n4Field = report.getField("xNumber.4");
			n4Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n4Field, "0");

			Field n5Field = report.getField("xNumber.5");
			n5Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n5Field, "1");

			Field n6Field = report.getField("xNumber.6");
			n6Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n6Field, "0");

			Field n7Field = report.getField("xNumber.7");
			n7Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n7Field, "0");

			Field n8Field = report.getField("xNumber.8");
			n8Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(n8Field, "0");

			Field aa0Field = report.getField("xAmountA.0");
			aa0Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa0Field, "0");

			Field aa1Field = report.getField("xAmountA.1");
			aa1Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa1Field, "0");

			Field aa2Field = report.getField("xAmountA.2");
			aa2Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa2Field, "0");

			Field aa3Field = report.getField("xAmountA.3");
			aa3Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa3Field, "0");

			Field aa4Field = report.getField("xAmountA.4");
			aa4Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa4Field, "0");

			Field aa5Field = report.getField("xAmountA.5");
			aa5Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa5Field, "1,700");

			Field aa6Field = report.getField("xAmountA.6");
			aa6Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa6Field, "0");

			Field aa7Field = report.getField("xAmountA.7");
			aa7Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa7Field, "0");

			Field aa8Field = report.getField("xAmountA.8");
			aa8Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(aa8Field, "0");

			Field aamField = report.getField("xAllAmount");
			aamField.setQuadding(Quadding.RIGHT);
			aamField.setTextColor(PdfRGBColor.RED);
			report.putFieldData(aamField, "3,540");

			Field pm2Field = report.getField("xPayment.2");
			pm2Field.setFillColor(PdfGrayColor.BLACK);
			report.putFieldData(pm2Field, (String)null);

			Field cd0Field = report.getField("xCard.0");
			cd0Field.setFillColor(PdfGrayColor.BLACK);
			report.putFieldData(cd0Field, (String)null);

			Field cn0Field = report.getField("xCardNo.0");
			cn0Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(cn0Field, "1234");

			Field cn1Field = report.getField("xCardNo.1");
			cn1Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(cn1Field, "5678");

			Field cn2Field = report.getField("xCardNo.2");
			cn2Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(cn2Field, "9123");

			Field cn3Field = report.getField("xCardNo.3");
			cn3Field.setQuadding(Quadding.RIGHT);
			report.putFieldData(cn3Field, "4567");

			Field ctyField = report.getField("xCardTermY");
			ctyField.setQuadding(Quadding.RIGHT);
			report.putFieldData(ctyField, "2008");

			Field ctmField = report.getField("xCardTermM");
			ctmField.setQuadding(Quadding.RIGHT);
			report.putFieldData(ctmField, "08");

			report.putFieldData("xCardName", "山田 太郎");

			Field sdField = report.getField("xSendDay.1");
			sdField.setFillColor(PdfGrayColor.BLACK);
			report.putFieldData(sdField, (String)null);

			Field stField = report.getField("xSendTime.2");
			stField.setFillColor(PdfGrayColor.BLACK);
			report.putFieldData(stField, (String)null);

			Field yearField = report.getField("xYear");
			yearField.setQuadding(Quadding.RIGHT);
			report.putFieldData(yearField, "2003");

			Field monthField = report.getField("xMonth");
			monthField.setQuadding(Quadding.RIGHT);
			report.putFieldData(monthField, "12");

			Field dayField = report.getField("xDay");
			dayField.setQuadding(Quadding.RIGHT);
			report.putFieldData(dayField, "29");

			Field ctnField = report.getField("xCustomerName");
			ctnField.setFontName("MSGothic,Bold");
			report.putFieldData(ctnField, "山田 太郎");

			report.putFieldData("xCustomerNo", "1234567");

			Field postField = report.getField("xPostCode");
			postField.setFontSize(8);
			report.putFieldData(postField, "133-0061");

			report.putFieldData("xAddress", "東京都江東区南砂町5-7-21");

			Field phnField = report.getField("xPhoneNo");
			phnField.setFontName(Type1Font.COURIER);
			report.putFieldData(phnField,"03-1234-5678");


			Field freeField = report.getField("xFree");
			freeField.setOnMultiline(true);
			report.putFieldData(freeField, "上記電話番号でつながらない場合は下記番号におねがいします。\n 勤務先 \n  03-5555-5555");
			
			Field faxField = report.getField("xFax");
			faxField.setBorderStyle(Field.BORDER_STYLE_SOLID);
			faxField.setBorderColor(PdfGrayColor.BLACK);
			report.putFieldData(faxField, "FAX番号:03-4444-5555");
			
			report.close();
			report = null;
		} finally {
			if (report != null) {
				try {
					//必ずclose()を呼びます。
					report.close();
				} catch (ReportException e) {
					//例外処理
				}

			}
		}
	}
}