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

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

/*
 * Tips1 : 文字間ピッチを調整する。
 */
public class Tips1 {

  //WPRLのホームディレクトリを設定
  static {
    System.getProperties().setProperty("wkc.pdf.lib.home", "C:\\Program Files\\wkc-pdflib");//適宜修正してください
  }

  private static File FORM_DIRECTORY_ROOT = new File("./form");
  private static File OUTPUT_DIRECTORY_ROOT = new File(".");

  private static String leftFieldNamePrefix = "xCode";

  public static void main(String[] args) throws IOException, ReportException, PdfException {
    System.getProperties().setProperty("wkc.pdf.lib.home", "C:\\Program Files\\wkc-pdflib");
    File outPdfFile = new File(OUTPUT_DIRECTORY_ROOT, "Tips1.pdf");
    File formFile = new File(FORM_DIRECTORY_ROOT, "Tips1.pdf");
    File datFile = new File(FORM_DIRECTORY_ROOT, "Tips1.dat");
    FileOutputStream fout = new FileOutputStream(outPdfFile);
    Report report = null;
    try {
      report = new Report(formFile, datFile, fout);
      report.setDefaultFontSize(14.0f);
      //*********** 文字間ピッチを調整しない場合*************************
      report.createPage(1);
      report.putFieldData("xSyozoku", "XX事業所 YY部");
      report.putFieldData("xName", "川鉄 太郎");
      report.putFieldData("xTel", "内線:2411");
      report.putFieldData("xGinkouNm1", "東西銀行");
      report.putFieldData("xShitenmei1", "栄");
      Field field = report.getField("xKozinCode");
      field.setFontSize(16.0f);
      report.putFieldData(field, "000000");
      field = report.getField("xKouzaNum1");
      field.setFontSize(20.0f);
      report.putFieldData(field, "2345678");

      field = report.getField("xYubin2-1");
      field.setFontSize(20.0f);
      report.putFieldData(field, "234");
      field = report.getField("xYubin2-2");
      field.setFontSize(20.0f);
      report.putFieldData(field, "5678910");
      field = report.getField("xGetsugaku1");
      field.setFontSize(20.0f);
      report.putFieldData(field, "30");
      field = report.getField("xShouyo1");
      field.setFontSize(20.0f);
      report.putFieldData(field, "500");

      //*********** 文字間ピッチを設定した場合*************************
      report.createPage(1);
      report.putFieldData("xSyozoku", "XX事業所 YY部");
      report.putFieldData("xName", "川鉄 太郎");
      report.putFieldData("xTel", "内線:2411");
      report.putFieldData("xGinkouNm1", "東西銀行");
      report.putFieldData("xShitenmei1", "栄");
      field = report.getField("xKozinCode");
      field.setFontSize(16.0f);
      field.setTextCharacterSpace(16.0f);
      report.putFieldData(field, "000000");
      field = report.getField("xKouzaNum1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      report.putFieldData(field, "2345678");

      field = report.getField("xYubin2-1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      report.putFieldData(field, "234");
      field = report.getField("xYubin2-2");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      report.putFieldData(field, "5678910");
      field = report.getField("xGetsugaku1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setQuadding(Quadding.RIGHT);
      report.putFieldData(field, "30");
      field = report.getField("xShouyo1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setQuadding(Quadding.RIGHT);
      report.putFieldData(field, "500");
      //*********** フィールド内余白を設定した場合*************************
      report.createPage(1);
      report.putFieldData("xSyozoku", "XX事業所 YY部");
      report.putFieldData("xName", "川鉄 太郎");
      report.putFieldData("xTel", "内線:2411");

      report.putFieldData("xGinkouNm1", "東西銀行");
      report.putFieldData("xShitenmei1", "栄");
      field = report.getField("xKozinCode");
      field.setFontSize(16.0f);
      field.setTextCharacterSpace(16.0f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 4.0f, 0.0f });
      report.putFieldData(field, "000000");
      field = report.getField("xKouzaNum1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 5.0f, 0.0f });
      report.putFieldData(field, "2345678");

      field = report.getField("xYubin2-1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 5.0f, 0.0f });
      report.putFieldData(field, "234");
      field = report.getField("xYubin2-2");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 4.6f, 0.0f });
      report.putFieldData(field, "5678910");
      field = report.getField("xGetsugaku1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 6.5f, 0.0f });
      field.setQuadding(Quadding.RIGHT);
      report.putFieldData(field, "30");
      field = report.getField("xShouyo1");
      field.setFontSize(20.0f);
      field.setTextCharacterSpace(13.8f);
      field.setInternalPadding(new float[] { 0.0f, 0.0f, 6.5f, 0.0f });
      field.setQuadding(Quadding.RIGHT);
      report.putFieldData(field, "500");
      //***********文書情報の設定*************************
      Info info = report.getDocument().getInfo();
      info.setAuthor("川鉄情報システム Web/OO部 川鉄太郎");
      info.setTitle("[Tips1]文字間ピッチを調整する");
      info.setCreationDate(Calendar.getInstance());
      info.setModDate(Calendar.getInstance());
      report.close();
      report = null;
    } finally {
      fout.close();
      if (report != null) {
        try {
          //必ずclose()を呼びます。
          report.close();
        } catch (ReportException e) {
          //例外処理
        }
      }
    }
  }
}