import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import wkc.pdf.PdfException; import wkc.pdf.tool.Field; import wkc.pdf.tool.Report; import wkc.pdf.tool.ReportException; public class Tips2 { //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 final int PAGE1_DTL_MAXLINE = 27; private static final int PAGE2_DTL_MAXLINE = 41; private static String[] xPName = {"モカ100", "モカ200", "モカ500", "ケニア100", "ケニア200", "ケニア500", "キリマンジャロ100", "キリマンジャロ200", "キリマンジャロ500", "ガラパゴス100", "ガラパゴス200", "ガラパゴス500", "ハワイ・コナ100", "ハワイ・コナ200", "ハワイ・コナ500", "ブルーマウンテン100", "ブルーマウンテン200", "ブルーマウンテン500", "コロンビア100", "コロンビア200", "コロンビア500", "ブラジル・サントス100", "ブラジル・サントス200", "ブラジル・サントス500", "マンデリン100", "マンデリン200", "マンデリン500", "グァテマラ100", "グァテマラ200", "グァテマラ500", "モカ100", "モカ200", "モカ500", "ケニア100", "ケニア200", "ケニア500", "キリマンジャロ100", "キリマンジャロ200", "キリマンジャロ500", "ガラパゴス100", "ガラパゴス200", "ガラパゴス500", "ハワイ・コナ100", "ハワイ・コナ200", "ハワイ・コナ500", "ブルーマウンテン100", "ブルーマウンテン200", "ブルーマウンテン500", "コロンビア100", "コロンビア200", "コロンビア500", "ブラジル・サントス100", "ブラジル・サントス200", "ブラジル・サントス500", "マンデリン100", "マンデリン200", "マンデリン500", "グァテマラ100", "グァテマラ200", "グァテマラ500", "モカ100", "モカ200", "モカ500", "ケニア100", "ケニア200", "ケニア500", "キリマンジャロ100", "キリマンジャロ200", "キリマンジャロ500", "ガラパゴス100", "ガラパゴス200", "ガラパゴス500", "ハワイ・コナ100", "ハワイ・コナ200", "ハワイ・コナ500", "ブルーマウンテン100", "ブルーマウンテン200", "ブルーマウンテン500", "コロンビア100", "コロンビア200", "コロンビア500", "ブラジル・サントス100", "ブラジル・サントス200", "ブラジル・サントス500", "マンデリン100", "マンデリン200", "マンデリン500", "グァテマラ100", "グァテマラ200", "グァテマラ500",}; private static String[] xPNumber = {"MO-100", "MO-200", "MO-500", "KE-100", "KE-200", "KE-500", "KI-100", "KI-200", "KI-500", "GA-100", "GA-200", "GA-500", "HA-100", "HA-200", "HA-500", "BU-100", "BU-200", "BU-500", "KO-100", "KO-200", "KO-500", "BR-100", "BR-200", "BR-500", "MA-100", "MA-200", "MA-500", "GT-100", "GT-200", "GT-500", "MO-100", "MO-200", "MO-500", "KE-100", "KE-200", "KE-500", "KI-100", "KI-200", "KI-500", "GA-100", "GA-200", "GA-500", "HA-100", "HA-200", "HA-500", "BU-100", "BU-200", "BU-500", "KO-100", "KO-200", "KO-500", "BR-100", "BR-200", "BR-500", "MA-100", "MA-200", "MA-500", "GT-100", "GT-200", "GT-500", "MO-100", "MO-200", "MO-500", "KE-100", "KE-200", "KE-500", "KI-100", "KI-200", "KI-500", "GA-100", "GA-200", "GA-500", "HA-100", "HA-200", "HA-500", "BU-100", "BU-200", "BU-500", "KO-100", "KO-200", "KO-500", "BR-100", "BR-200", "BR-500", "MA-100", "MA-200", "MA-500", "GT-100", "GT-200", "GT-500",}; private static int[] xUnit = {1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 3, 1, 1, 2, 3, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 3, 1, 1, 2, 3, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 3, 1, 1, 2, 3, 1, 3, 2, 1, 3, 1, 1, 1, 1, 1, 2, 3,}; private static int[] xPrice = {520, 1020, 2500, 600, 1180, 2900, 490, 960, 2350, 780, 1540, 3800, 1350, 2680, 6650, 1600, 3180, 7900, 550, 1080, 2650, 660, 1300, 3200, 500, 980, 2400, 490, 960, 2350, 520, 1020, 2500, 520, 1020, 2500, 600, 1180, 2900, 490, 960, 2350, 780, 1540, 3800, 1350, 2680, 6650, 1600, 3180, 7900, 550, 1080, 2650, 660, 1300, 3200, 500, 980, 2400, 490, 960, 2350, 520, 1020, 2500, 520, 1020, 2500, 600, 1180, 2900, 490, 960, 2350, 780, 1540, 3800, 1350, 2680, 6650, 1600, 3180, 7900, 550, 1080, 2650, 660, 1300, 3200, 500, 980, 2400, 490, 960, 2350, 520, 1020, 2500,}; public static void main(String[] args) throws IOException, ReportException, PdfException { File outPdfFile = new File(OUTPUT_DIRECTORY_ROOT, "Tips2.pdf"); File formFile = new File(FORM_DIRECTORY_ROOT, "Tips2.pdf"); File datFile = new File(FORM_DIRECTORY_ROOT, "Tips2.dat"); FileOutputStream fout = new FileOutputStream(outPdfFile); Report report = null; int page = 1; int xAmount = 0; // あらかじめ小計金額、合計金額を計算する。 int xTotal[] = new int[xPName.length]; for (int i = 0; i < xPName.length; i++){ xTotal[i] = xUnit[i] * xPrice[i]; xAmount += xTotal[i]; } try { //reportファイルをつくる。 report = new Report(formFile, datFile, fout); report.createPage(1); report.setDefaultFontSize(11.0f); //ヘッダ情報を入力 Field field = report.getField("xPostCode"); field.setFontSize(13.0f); report.putFieldData(field, "261-8501"); field = report.getField("xAddres"); field.setFontSize(14.0f); field.setOnMultiline(true); report.putFieldData(field, "千葉県千葉市美浜区中瀬X-X-XX"); field = report.getField("xName"); field.setFontSize(18.0f); report.putFieldData(field, "川鉄情報システム"); report.putFieldData("xYear", "17"); report.putFieldData("xMonth", "4"); report.putFieldData("xDay", "1"); report.putFieldData("xPage1", new Integer(page)); report.putFieldData("xCCode", "CO2003-1111"); field = report.getField("xAmount"); field.setFontSize(24.0f); report.putFieldData(field, new Integer(xAmount)); //ディテール情報を入力 //1ページ目 for (int i = 0; i < Math.min(PAGE1_DTL_MAXLINE, xPName.length); i++) { report.putFieldData("xPName."+ i, xPName[i]); report.putFieldData("xPNumber."+ i, xPNumber[i]); report.putFieldData("xUnit."+ i, new Integer(xUnit[i])); report.putFieldData("xPrice."+ i, new Integer(xPrice[i])); report.putFieldData("xTotal."+ i, new Integer(xTotal[i])); } //2ページ目以降 for (int maxline = PAGE1_DTL_MAXLINE ,counter = PAGE1_DTL_MAXLINE; counter < xPName.length;counter++) { report.createPage(2); report.putFieldData("xPage2", new Integer(++page)); maxline += PAGE2_DTL_MAXLINE; for (int i = PAGE1_DTL_MAXLINE; counter < Math.min(maxline,xPName.length); i++, counter++) { report.putFieldData("xPName." + i, xPName[counter]); report.putFieldData("xPNumber." + i, xPNumber[counter]); report.putFieldData("xUnit." + i, new Integer(xUnit[counter])); report.putFieldData("xPrice." + i, new Integer(xPrice[counter])); report.putFieldData("xTotal." + i, new Integer(xTotal[counter])); } counter--; } report.close(); report = null; System.out.println("正常終了"); } finally { fout.close(); if (report != null) { try { //必ずclose()を呼びます。 report.close(); } catch (ReportException e) { //例外処理 } } } } }