import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;


import wkc.pdf.PdfException;
import wkc.pdf.tool.Report;
import wkc.pdf.tool.ReportException;
import wkc.pdf.tool.StandardReportConfig;
import wkc.pdf.tool.Quadding;
import wkc.pdf.tool.Field;
import wkc.pdf.PdfGrayColor;
import wkc.pdf.PdfImage;
import wkc.pdf.Info;


public class Chapter2 {
  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, "Chapter2.pdf");
    File formFile = new File(FORM_DIRECTORY_ROOT, "template2.pdf");
    File datFile = new File(FORM_DIRECTORY_ROOT, "template2.dat");
    FileOutputStream fout = new FileOutputStream(outPdfFile);
    try {

      Report report = new Report(formFile, datFile, fout);

      //お客様情報
      String customerAdrs = "〒111-0051\n東京都台東区蔵前2-17-3\nJFE江戸川ビル";
      String customerCName ="JFEエンターテイメント株式会社";
      String customerBusyo1 = "企画部";
      String customerName = "部長 渡\ue000 健二様";
      //KSI情報
      String ksiAdrs = "〒136-8582\n東京都江東区南砂2丁目36-11";
      String ksiName = "川鉄情報システム株式会社";
      String ksiBusyo1 = "システムインテグレーション事業部";
      String ksiBusyo2 = "Web・オブジェクト指向事業推進部 営業Gr";
      String ksiPhone = "TEL03 (5665) 6318 FAX 03 (5665) 6389";
      //請求年月日
      String xYMD = "2004年 6月 5日";
      //お客様企業名
      String ccName = "JFEエンターテイメント株式会社";
      //内訳1
      Object[][] uchiwake = new Object[5][5];
      uchiwake[0][0] = "2003年度ネットワーク保守(第1四半期分)";
      uchiwake[0][1] = new Integer(1260000);
      //振込先
      String furikomi = "お支払い期限 2004年07月01日\nお振込先 みずは銀行 本店 当座貯金No.00010**\n     口座名義 カワテツジョウホウシステム(カブ)";
      report.createPage(1);

      //会社ロゴ
      //かならずページを作成してから画像オブジェクトを作る。
      PdfImage rogo = report.createImage(new File("resources/rogo.png"));

      report.setDefaultFontSize(10);
      report.putFieldData("xInfoAdrs", customerAdrs);
      report.putFieldData("xInfoCName", customerCName);
      report.putFieldData("xInfoBusyo.1", customerBusyo1);
      Field xInfoName_phone = report.getField("xInfoName_phone");
      xInfoName_phone.setIsEmbeddedFont(true);
      report.putFieldData(xInfoName_phone, customerName);

      report.putFieldData("xOnchu", (String)null);
      report.putFieldData("xYMD", xYMD);
      report.putFieldData("xNo.0", (String)null);
      report.putFieldData("xNo.1", "03J90005");
      report.putFieldData("xTitle", "請求書");
      report.putFieldData("xCComName", ccName);
      report.putFieldData("xCode.0", (String)null);
      report.putFieldData("xCode.1", "5129");
      report.putFieldData("xRogo", rogo);

      report.putFieldData("xInfoRightAdrs", ksiAdrs);
      report.putFieldData("xInfoRightBusyo.1", ksiBusyo1);
      report.putFieldData("xInfoRightBusyo.2", ksiBusyo2);
      report.putFieldData("xInfoRightName_phone", ksiPhone);

      report.putFieldData("xAmountMes", (String)null);
      report.putFieldData("xBox.0", " ");
      report.putFieldData("xBox.1", " ");
      report.putFieldData("xBox.2", " ");
      report.putFieldData("xBox.3", " ");
      report.putFieldData("xNonyusaki", ccName + "殿");
      report.putFieldData("xGochumonNo", "*");
      report.putFieldData("xToshaJyuchuNo", "J90C010");
      report.putFieldData("xHanbaijissekiNo", "001");
      report.putFieldData("xUchiwake.0", (String) uchiwake[0][0]);
      report.putFieldData("xYen.0", (Integer) uchiwake[0][1]);
      int xTax = (int) (((Integer) uchiwake[0][1]).intValue() * 0.05);
      int xAmount0 = ((Integer) uchiwake[0][1]).intValue() + xTax;
      report.putFieldData("xTax", new Integer(xTax));
      report.putFieldData("xAmount.0", new Integer(xAmount0));
      report.putFieldData("xAmount1", new Integer(xAmount0));

      report.putFieldData("xFree", "特記事項なし");
      report.putFieldData("xFurikomisaki", furikomi);



      //二ページ目(検収通知書兼作業完了確認書)
      report.createPage(1);
      report.putFieldData("xInfoAdrs", ksiAdrs);
      report.putFieldData("xInfoCName", ksiName);
      report.putFieldData("xInfoBusyo.1", ksiBusyo1);
      report.putFieldData("xInfoBusyo.2", ksiBusyo2);
      report.putFieldData("xInfoName_phone", ksiPhone);

      report.putFieldData("xYMD", xYMD);
      report.putFieldData("xTitle", "検収通知書兼作業完了確認書");
      report.putFieldData("xKensyuYMDMes", (String)null);
      report.putFieldData("xKensyuYMD.0", (String)null);
      report.putFieldData("xKensyuinMes",(String)null );
      report.putFieldData("xKensyuin", (String)null);

      report.putFieldData("xInfoRightAdrs", customerAdrs);
      report.putFieldData("xInfoRightCName", customerCName);
      report.putFieldData("xInfoRightBusyo.1", customerBusyo1);
      Field xInfoRightName_phone = report.getField("xInfoRightName_phone");
      xInfoRightName_phone.setIsEmbeddedFont(true);
      report.putFieldData(xInfoRightName_phone, customerName);

      report.putFieldData("xNonyusaki", ccName + "殿");
      report.putFieldData("xGochumonNo", "*");
      report.putFieldData("xToshaJyuchuNo", "J90C010");
      report.putFieldData("xHanbaijissekiNo", "001");
      report.putFieldData("xUchiwake.0", (String) uchiwake[0][0]);
      report.putFieldData("xYen.0", (Integer) uchiwake[0][1]);
      report.putFieldData("xTax", new Integer(xTax));
      report.putFieldData("xAmount1", new Integer(xAmount0));

      report.putFieldData("xFree", "特記事項なし");

      //三ページ目(納品書兼作業完了報告書)
      report.createPage(1);
      report.putFieldData("xInfoAdrs", customerAdrs);
      report.putFieldData("xInfoCName", customerCName);
      report.putFieldData("xInfoBusyo.1", customerBusyo1);
      report.putFieldData(xInfoName_phone, customerName);

      report.putFieldData("xOnchu", (String)null);
      report.putFieldData("xYMD", xYMD);
      report.putFieldData("xNo.0", (String)null);
      report.putFieldData("xNo.1", "03J90005");
      report.putFieldData("xTitle", "納品書兼作業完了報告書");
      report.putFieldData("xCComName", ccName);
      report.putFieldData("xCode.0", (String)null);
      report.putFieldData("xCode.1", "5129");
      report.putFieldData("xRogo", rogo);

      report.putFieldData("xInfoRightAdrs", ksiAdrs);
      report.putFieldData("xInfoRightBusyo.1", ksiBusyo1);
      report.putFieldData("xInfoRightBusyo.2", ksiBusyo2);
      report.putFieldData("xInfoRightName_phone", ksiPhone);
      Field xMessage = report.getField("xMessage");
      xMessage.setQuadding(Quadding.LEFT_BOTTOM);
      report.putFieldData(xMessage, "下記のとおり納品・作業完了報告いたします。\n御査収の上検収通知書兼作業完了確認書を\nご返送くださいますようお願い申し上げます。");
      report.putFieldData("xBox.0", " ");
      report.putFieldData("xBox.1", " ");
      report.putFieldData("xBox.2", " ");
      report.putFieldData("xBox.3", " ");
      report.putFieldData("xNonyusaki", ccName + "殿");
      report.putFieldData("xGochumonNo", "*");
      report.putFieldData("xToshaJyuchuNo", "J90C010");
      report.putFieldData("xHanbaijissekiNo", "001");
      report.putFieldData("xUchiwake.0", (String) uchiwake[0][0]);
      report.putFieldData("xYen.0", (Integer) uchiwake[0][1]);
      report.putFieldData("xTax", new Integer(xTax));
      report.putFieldData("xAmount1", new Integer(xAmount0));
      report.putFieldData("xFree", "特記事項なし");
      //***********文書情報の設定*************************
      Info info = report.getDocument().getInfo();
      info.setAuthor("川鉄情報システム Web/OO部 川鉄太郎");
      info.setTitle("請求書");
      info.setCreator("請求書生成システム");
      info.setkeywords("請求書No.03J90005");
      info.setSubject("検収通知書兼作業完了確認書/納品書兼作業完了報告書");
      info.setCreationDate(Calendar.getInstance());
      info.setModDate(Calendar.getInstance());
      report.close();
    } finally {
      fout.close();
    }
  }
}