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;

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);
		    report.putFieldData(aamField, "3,540");
		  
		    report.putFieldData("xPayment.0",(String)null);//記述しなくてもよい
		    report.putFieldData("xPayment.1",(String)null);//記述しなくてもよい
		    report.putFieldData("xPayment.2",(String)null);//記述しなくてもよい
		    report.putFieldData("xCard.0",(String)null);//記述しなくてもよい
		    report.putFieldData("xCard.1",(String)null);//記述しなくてもよい
		    report.putFieldData("xCard.2",(String)null);//記述しなくてもよい
		    report.putFieldData("xCard.3",(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", "山田 太郎");

		    report.putFieldData("xSendDay.0",(String)null);//記述しなくてもよい
		    report.putFieldData("xSendDay.1",(String)null);//記述しなくてもよい
		    report.putFieldData("xSendDay.2",(String)null);//記述しなくてもよい	
		    report.putFieldData("xSendTime.0",(String)null);//記述しなくてもよい
		    report.putFieldData("xSendTime.1",(String)null);//記述しなくてもよい
		    report.putFieldData("xSendTime.2",(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");

		    report.putFieldData("xCustomerName", "山田 太郎");
		    report.putFieldData("xCustomerNo", "1234567");
		    report.putFieldData("xPostCode", "133-0061");
		    report.putFieldData("xAddress", "東京都江東区南砂町5-7-21");
		    report.putFieldData("xPhoneNo", "03-1234-5678");
		    report.putFieldData("xFree", "上記電話番号でつながらない場合は下記番号におねがいします。");
		    report.close();
		    report = null;
		} finally {
			if (report != null) {
				try {
					//必ずclose()を呼びます。
					report.close();
				} catch (ReportException e) {
					//例外処理
				}

			}
		}
	}
}