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");
		  Field freeField = report.getField("xFree");
		  freeField.setOnMultiline(true);
		  report.putFieldData(freeField, "上記電話番号でつながらない場合は下記番号におねがいします。\n 勤務先 \n  03-5555-5555");
		  report.close();
		  report = null;
		} finally {
			if (report != null) {
				try {
					//必ずclose()を呼びます。
					report.close();
				} catch (ReportException e) {
					//例外処理
				}

			}
		}
	}
}