open.dolphin.msg.ServerPrescriptionPDFMaker.java Source code

Java tutorial

Introduction

Here is the source code for open.dolphin.msg.ServerPrescriptionPDFMaker.java

Source

package open.dolphin.msg;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import open.dolphin.infomodel.BundleMed;
import open.dolphin.infomodel.ClaimConst;
import open.dolphin.infomodel.ClaimItem;
import open.dolphin.infomodel.IInfoModel;
import open.dolphin.infomodel.ModelUtils;
import open.dolphin.infomodel.PVTPublicInsuranceItemModel;
import open.dolphin.infomodel.PriscriptionModel;

/**
 * ?PDF??
 * 
 * @author Masato  OpenDolphinToGo 
 * modified minagawa 2012-09-07 OpenDolphin/Pro ??
 * ?
 *   ????????-> ???
 *   ???
 *   output ????PDF??
 *   ????
 *   MML ? classCodeSystem 
 */
public final class ServerPrescriptionPDFMaker {

    /** -? */
    private static final String FONT_HEISEI_KAKU5 = "HeiseiKakuGo-W5";

    /** -?? */
    private static final String FONT_HEISEI_MIN3 = "HeiseiMin-W3";

    /** -UniJIS ? */
    private static final String CODE_UNIJIS_H = "UniJIS-UCS2-H";

    /** -UniJIS */
    private static final String CODE_UNIJIS_HWH = "UniJIS-UCS2-HW-H";

    /** ?? */
    private static final String FILE_NAME_PRE = "?-";

    /** ? */
    private static final String FILE_EXTENTION = ".pdf";

    /**  */
    private static final String REPORT_TITLE = "?";

    /**  */
    private static final String REPORT_SUB_TITLE = "(???????????)";

    /**  */
    private static final String PROPERTY_TITLE = "?";

    /**  */
    private static final String PROPERTY_SUB_TITLE = "";

    /** ??? */
    private static final String NOTES_HOME_MEDICAL = "()";

    /** ? */
    private String STR_LF = "line.separator";

    /** ??? */
    private static final String DIR_NAME = "welcome-content";

    /** ?? */
    private String fileName;

    // Path to the created PDF
    private String pathToPDF;

    // ()
    BaseFont bfg;

    // (?)
    BaseFont bfm;

    // ?  [6, 7, 8, 9, 10, 12, 14, 15]
    Font min_6, min_7, min_8, min_9, min_10, min_12, min_14, min_15;

    Font min_4; // @009

    // ?
    private static final float LINE_WIDTH_0 = 0f;
    private static final float LINE_WIDTH_1 = 0.2f;
    private static final float LINE_WIDTH_2 = 1f;
    private static final float LINE_WIDTH_3 = 0.5f;
    // ?
    private static final float CELL_HIGHT_0 = 17f;
    private static final float CELL_HIGHT_1 = 12f;
    private static final float CELL_HIGHT_2 = 34f; // @010
    // @008 2010/06/18 ?20104?
    /** 00f */
    private static final float CELL_PADDING_0 = 0f; // @008
    /** 12.5f */
    private static final float CELL_PADDING_1 = 2.5f; // @008

    private boolean DEBUG;

    /** ? */
    private String documentDir;

    /**  */
    private PriscriptionModel pkg;

    /**
     * ?????????
     */
    public ServerPrescriptionPDFMaker() {
    }

    public ServerPrescriptionPDFMaker(PriscriptionModel pkg) {
        this();
        this.pkg = pkg;
    }

    /**
     * ??
     */
    public String output() {
        BufferedOutputStream bos;
        PdfWriter pw = null;
        Document document = null;

        try {
            Date dateNow = new Date();

            // ID
            String patientId = pkg.getPatientId();

            // ???
            String name = pkg.getPatientName();
            name = name.replaceAll(" ", "");
            name = name.replaceAll("", "");

            String iNum; // ??
            String piNum = null; // ?
            String rNum = null; // ??

            String piNum2 = null; // ?
            String rNum2 = null; // ??

            String div = ""; // ?
            String payRatio = ""; // ?

            String mNum = ""; // ???

            char[] iNumC = new char[8]; // ???
            char[] piNumC = new char[8]; // ??
            char[] rNumC = new char[7]; // ??
            char[] piNumC2 = new char[8]; // ??
            char[] rNumC2 = new char[7]; // ??
            DecimalFormat df = new DecimalFormat("#0.#"); // ??
            String paymentRatio = ""; // ?
            String paymentRatio2 = ""; // ?

            if (pkg.getApplyedInsurance().getInsuranceNumber() != null) {

                // ??
                iNum = pkg.getApplyedInsurance().getInsuranceNumber();

                // ? null ??
                if (iNum.toLowerCase().startsWith("z") || iNum.equals("9999")) {
                    iNum = null;
                }

                // 
                if (pkg.getApplyedInsurance().getPVTPublicInsuranceItem() != null) {
                    PVTPublicInsuranceItemModel[] pubItems = pkg.getApplyedInsurance().getPVTPublicInsuranceItem();
                    for (int i = 0; i < pubItems.length; i++) {
                        PVTPublicInsuranceItemModel pm = pubItems[i];
                        if (i == 0) {
                            // ?
                            piNum = pm.getProvider();
                            piNum = ("mikinyu".equals(piNum)) ? "" : piNum;

                            // ??
                            rNum = pm.getRecipient();
                            rNum = ("mikinyu".equals(rNum)) ? "" : rNum;

                            // ???
                            paymentRatio = pm.getPaymentRatio();
                        } else if (i == 1) {
                            piNum2 = pm.getProvider();
                            piNum2 = ("mikinyu".equals(piNum2)) ? "" : piNum2;

                            rNum2 = pm.getRecipient();
                            rNum2 = ("mikinyu".equals(rNum2)) ? "" : rNum2;

                            paymentRatio2 = pm.getPaymentRatio();
                            break;
                        }
                    }
                }

                // ? ?? ?
                StringBuilder sb = new StringBuilder();

                // ? ?
                if (pkg.getApplyedInsurance().getClientGroup() != null
                        && !pkg.getApplyedInsurance().getClientGroup().equals("??")) {
                    sb.append(pkg.getApplyedInsurance().getClientGroup()).append("");
                }
                // ??
                if (pkg.getApplyedInsurance().getClientNumber() != null
                        && !pkg.getApplyedInsurance().getClientNumber().equals("??")) {
                    sb.append(pkg.getApplyedInsurance().getClientNumber());
                }
                mNum = sb.length() > 0 ? sb.toString() : "";

                // 
                if ("?".equals(pkg.getApplyedInsurance().getInsuranceClass())) {
                    div = "";
                    payRatio = paymentRatio;
                } else {
                    // ?
                    div = "true".equals(pkg.getApplyedInsurance().getFamilyClass()) ? "?"
                            : "";
                    payRatio = pkg.getApplyedInsurance().getPayOutRatio();
                }
                if (payRatio != null && !("".equals(payRatio))) {
                    payRatio = df.format(Double.valueOf(payRatio) * 10);
                }

                if (DEBUG) {
                    System.err.println("iNum=" + iNum);
                    System.err.println("piNum=" + piNum);
                    System.err.println("rNum=" + rNum);
                    System.err.println("piNum2=" + piNum2);
                    System.err.println("rNum2=" + rNum2);
                    System.err.println("mNum=" + mNum);
                    System.err.println("?=" + div);
                    System.err.println("=" + payRatio);
                }

                // ???
                iNumC = partitionPadRL(iNum, 8, "R"); // ??
                piNumC = partitionPadRL(piNum, 8, "L"); // ?
                rNumC = partitionPadRL(rNum, 7, "L"); // ??
                piNumC2 = partitionPadRL(piNum2, 8, "L"); // ?2
                rNumC2 = partitionPadRL(rNum2, 7, "L"); // ??2
            }
            /*****  *****/

            document = new Document(PageSize.A5, 10, 10, 2, 2);

            // ?PDF?welcome-content
            if (getDocumentDir() == null) {
                StringBuilder sb = new StringBuilder();
                sb.append(System.getProperty("jboss.home.dir"));
                sb.append(File.separator);
                sb.append(DIR_NAME);
                setDocumentDir(sb.toString());
            }
            File dir = new File(getDocumentDir());
            dir.mkdir();

            // ??(ID_.pdf)
            StringBuilder sb = new StringBuilder();
            sb.append(patientId).append("_");
            sb.append(new SimpleDateFormat("yyyyMMddHHmmss").format(dateNow));
            sb.append(FILE_EXTENTION);
            setFileName(sb.toString());

            sb = new StringBuilder();
            sb.append(getDocumentDir());
            sb.append(File.separator);
            sb.append(getFileName());
            pathToPDF = sb.toString();

            //minagawa^ ???water mark?????????? byte[]???            
            ByteArrayOutputStream byteo = new ByteArrayOutputStream();
            bos = new BufferedOutputStream(byteo);
            //minagawa$             
            pw = PdfWriter.getInstance(document, bos);

            // font setting
            bfm = BaseFont.createFont(FONT_HEISEI_MIN3, CODE_UNIJIS_H, BaseFont.NOT_EMBEDDED);
            bfg = BaseFont.createFont(FONT_HEISEI_KAKU5, CODE_UNIJIS_H, BaseFont.NOT_EMBEDDED);
            min_6 = new Font(bfm, 6);
            min_7 = new Font(bfm, 7);
            min_8 = new Font(bfm, 8);
            min_9 = new Font(bfm, 9);
            min_10 = new Font(bfm, 10);
            min_12 = new Font(bfm, 12);
            min_14 = new Font(bfm, 14);
            min_15 = new Font(bfm, 15);
            min_4 = new Font(bfm, 4); // @009

            // 
            document.open();
            document.addAuthor(pkg.getPhysicianName());
            document.addTitle(PROPERTY_TITLE);
            document.addSubject(PROPERTY_SUB_TITLE);

            // ???
            List<PdfPTable> list = createPrescriptionTbl2();
            Iterator<PdfPTable> ite = list.iterator();

            // ?
            int pageNo = 0;
            int totalPageNo = list.size();

            // ?????????
            do {
                PdfPTable ptbl = new PdfPTable(1);
                ptbl.setWidthPercentage(100f);
                ptbl.getDefaultCell().setPadding(0f);
                PdfPCell pcell = new PdfPCell(new Paragraph(REPORT_TITLE, min_15));
                pcell.setBorder(Table.NO_BORDER);
                setAlignCenter(pcell);
                ptbl.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(REPORT_SUB_TITLE, min_7));
                pcell.setBorder(Table.NO_BORDER);
                setAlignCenter(pcell);
                ptbl.addCell(pcell);
                document.add(ptbl);

                ptbl = new PdfPTable(3);
                ptbl.setWidthPercentage(100f);
                ptbl.getDefaultCell().setPadding(0f);
                ptbl.getDefaultCell().setBorder(Table.NO_BORDER);
                float[] widths = { 43.5f, 2f, 54.5f };
                ptbl.setWidths(widths);
                // ?
                pcell = new PdfPCell(new Paragraph(patientId, min_9));
                pcell.setBorder(Table.NO_BORDER);
                pcell.setColspan(10);
                ptbl.addCell(pcell);

                PdfPTable ptblL = new PdfPTable(9);
                ptblL.setSpacingBefore(10f);
                ptblL.setWidthPercentage(100f);
                float[] widthsL = { 33, 8, 8, 8, 8, 8, 8, 8, 8 };
                ptblL.setWidths(widthsL);
                ptblL.getDefaultCell().setPadding(0f);
                pcell = new PdfPCell(new Paragraph("?", min_7));
                pcell.setMinimumHeight(CELL_HIGHT_0);
                setAlignJustifiedAll(pcell);
                setAlignMiddle(pcell);
                pcell.setBorderWidth(LINE_WIDTH_1);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[0]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[1]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[2]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthLeft(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[3]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[4]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_2);
                pcell.setBorderWidthRight(LINE_WIDTH_1);
                pcell.setBorderWidthLeft(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[5]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthTop(LINE_WIDTH_2);
                pcell.setBorderWidthBottom(LINE_WIDTH_2);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[6]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_2);
                pcell.setBorderWidthRight(LINE_WIDTH_3);
                pcell.setBorderWidthLeft(LINE_WIDTH_1);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(piNumC[7]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthLeft(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph("???", min_7));
                pcell.setPaddingTop(0.3f);
                setAlignJustifiedAll(pcell);
                pcell.setBorderWidth(LINE_WIDTH_1);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[0]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[1]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[2]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[3]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthLeft(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[4]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[5]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(rNumC[6]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthLeft(LINE_WIDTH_3);
                pcell.setPadding(0f);
                setAlignCenterMiddle(pcell);
                ptblL.addCell(pcell);
                pcell = new PdfPCell();
                pcell.setBorderWidth(LINE_WIDTH_0);
                ptblL.addCell(pcell);

                PdfPTable patientTbl = new PdfPTable(2);
                patientTbl.setWidthPercentage(100f);
                float[] widthsPa = { 7.8f, 92.2f };
                patientTbl.setWidths(widthsPa);
                patientTbl.getDefaultCell().setPadding(0f);
                patientTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell pcellP = new PdfPCell(new Paragraph("", min_7));
                pcellP.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pcellP);
                patientTbl.addCell(pcellP);
                // 
                PdfPTable desc = new PdfPTable(5);
                desc.setWidthPercentage(100f);
                float[] widthsD = { 28.5f, 41.5f, 7, 16, 7 };
                desc.setWidths(widthsD);
                // ???(??)
                PdfPCell patientInfo = new PdfPCell(new Paragraph("???", min_7));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(patientInfo);
                setAlignMiddle(patientInfo);
                desc.addCell(patientInfo);
                PdfPTable nameTbl = new PdfPTable(1);
                nameTbl.setWidthPercentage(100f);
                nameTbl.setSpacingAfter(3f);
                PdfPCell nameCell = new PdfPCell(new Paragraph(pkg.getPatientKana(), min_7));
                nameCell.setBorderWidth(LINE_WIDTH_0);
                nameTbl.addCell(nameCell);
                nameCell = new PdfPCell(new Paragraph(pkg.getPatientName(), min_9));
                nameCell.setBorderWidth(LINE_WIDTH_0);
                nameTbl.addCell(nameCell);
                patientInfo = new PdfPCell(nameTbl);
                patientInfo.setColspan(4);
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                desc.addCell(patientInfo);
                // 
                patientInfo = new PdfPCell(new Paragraph("", min_7));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(patientInfo);
                desc.addCell(patientInfo);
                String birthDay = ModelUtils.convertToGengo(pkg.getPatientBirthday());
                patientInfo = new PdfPCell(new Paragraph(birthDay, min_9));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                patientInfo.setColspan(3);
                patientInfo.setPaddingTop(0.5f);
                setAlignMiddle(patientInfo);
                desc.addCell(patientInfo);
                patientInfo = new PdfPCell(new Paragraph(pkg.getPatientSex(), min_8));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(patientInfo);
                desc.addCell(patientInfo);
                // 
                patientInfo = new PdfPCell(new Paragraph("", min_7));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(patientInfo);
                setAlignMiddle(patientInfo);
                desc.addCell(patientInfo);
                patientInfo = new PdfPCell(new Paragraph(div, min_8));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignMiddle(patientInfo);
                desc.addCell(patientInfo);
                patientInfo = new PdfPCell(new Paragraph("?", min_7));
                patientInfo.setBorderWidth(LINE_WIDTH_1);
                setAlignMiddle(patientInfo);
                desc.addCell(patientInfo);
                patientInfo = new PdfPCell(new Paragraph(payRatio, min_9));
                setAlignRightMiddle(patientInfo);
                patientInfo.setBorderWidth(LINE_WIDTH_0);
                desc.addCell(patientInfo);
                patientInfo = new PdfPCell(new Paragraph("", min_7));
                patientInfo.setBorderWidth(LINE_WIDTH_0);
                patientInfo.setVerticalAlignment(Element.ALIGN_BOTTOM);
                setAlignRight(patientInfo);
                desc.addCell(patientInfo);
                patientTbl.addCell(desc);
                pcell = new PdfPCell(patientTbl);
                pcell.setColspan(9);
                pcell.setBorderWidth(LINE_WIDTH_1);
                ptblL.addCell(pcell);
                // 
                pcell = new PdfPCell(new Paragraph("", min_7));
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(pcell);
                setAlignMiddle(pcell);
                ptblL.addCell(pcell);
                // @003 2010/02/15 ???????????????
                String issueDate = ModelUtils.convertToGengo(
                        ModelUtils.getDateAsFormatString(pkg.getIssuanceDate(), IInfoModel.DATE_WITHOUT_TIME));
                pcell = new PdfPCell(new Paragraph(issueDate, min_9));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPaddingTop(0.5f);
                setAlignMiddle(pcell);
                pcell.setColspan(8);
                ptblL.addCell(pcell);

                ptbl.addCell(ptblL);
                ptbl.addCell("");

                PdfPTable ptblR = new PdfPTable(10);
                ptblR.setSpacingBefore(10f);
                ptblR.setWidthPercentage(100f);
                float[] widthsR = { 30, 7, 7, 7, 7, 7, 7, 7, 7, 14 };
                ptblR.setWidths(widthsR);
                pcell = new PdfPCell(new Paragraph("??", min_7));
                pcell.setMinimumHeight(CELL_HIGHT_0);
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(pcell);
                setAlignMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[0]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[1]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_2);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[2]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[3]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthRight(LINE_WIDTH_2);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[4]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthTop(LINE_WIDTH_2);
                pcell.setBorderWidthBottom(LINE_WIDTH_2);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[5]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setBorderWidthTop(LINE_WIDTH_2);
                pcell.setBorderWidthBottom(LINE_WIDTH_2);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[6]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_2);
                pcell.setBorderWidthLeft(LINE_WIDTH_1);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(String.valueOf(iNumC[7]), min_14));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setPadding(CELL_PADDING_0);
                setAlignCenterMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell();
                pcell.setBorderWidth(LINE_WIDTH_0);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(
                        new Paragraph("?????", min_7));
                pcell.setPaddingTop(0.3f);
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(pcell);
                setAlignMiddle(pcell);
                ptblR.addCell(pcell);
                pcell = new PdfPCell(new Paragraph(mNum, min_9));
                pcell.setBorderWidth(LINE_WIDTH_1);
                pcell.setColspan(9);
                setAlignMiddle(pcell);
                ptblR.addCell(pcell);

                //FacilityModel facility = getPhysician().getFacilityModel();
                String facilityName = pkg.getInstitutionName(); // ??
                //String facilityZipCode = facility.getZipCode(); // ?
                String facilityAddress = pkg.getInstitutionAddress(); // ?
                String facilityTelNo = pkg.getInstitutionTelephone(); // ?
                //minagawa^ ?????                 
                String drName = pkg.getPhysicianName();
                //minagawa$                    
                if (pkg.isChkUseDrugInfo()) {
                    // ??
                    drName = pkg.getPhysicianName();
                }
                // ********** @008 2010/06/18  **********
                // 20104?
                String prefNo = "  "; // ?? 2?
                String grade = " "; // ? 1?
                String institution = "       "; //  7?

                if ((pkg.getInstitutionNumber() != null) && (pkg.getInstitutionNumber().length() > 9)) {
                    prefNo = pkg.getInstitutionNumber().substring(0, 2);
                    grade = pkg.getInstitutionNumber().substring(2, 3);
                    institution = pkg.getInstitutionNumber().substring(3, 10);
                }
                // ********** @008 2010/06/18  **********

                PdfPTable medOrgTbl = new PdfPTable(3);
                medOrgTbl.setWidthPercentage(100f);
                float[] widthsM = { 30, 55, 15 };
                medOrgTbl.setWidths(widthsM);
                PdfPCell medOrgCell = new PdfPCell(new Paragraph("??\n", min_7));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignJustifiedAll(medOrgCell);
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph(facilityAddress, min_8));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                medOrgCell.setColspan(2);
                setAlignMiddle(medOrgCell);
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph("????", min_7));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignJustifiedAll(medOrgCell);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgCell.setPaddingBottom(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph(facilityName, min_8));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                medOrgCell.setColspan(2);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgCell.setPaddingBottom(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell();
                medOrgCell.setBorder(Table.NO_BORDER);
                medOrgCell.setColspan(3);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgCell.setPaddingBottom(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph("?", min_7));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignJustifiedAll(medOrgCell);
                setAlignMiddle(medOrgCell);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph(facilityTelNo, min_9));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignMiddle(medOrgCell);
                medOrgCell.setColspan(2);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph("????", min_7));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignJustifiedAll(medOrgCell);
                setAlignMiddle(medOrgCell);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph(drName, min_10));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignMiddle(medOrgCell);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                medOrgCell = new PdfPCell(new Paragraph("?", min_8));
                medOrgCell.setBorderWidth(LINE_WIDTH_0);
                setAlignMiddle(medOrgCell);
                medOrgCell.setPaddingTop(CELL_PADDING_0); // @008
                medOrgTbl.addCell(medOrgCell);
                pcell = new PdfPCell(medOrgTbl);
                pcell.setBorder(Table.NO_BORDER);
                pcell.setColspan(10);
                pcell.setPaddingBottom(CELL_PADDING_1);
                ptblR.addCell(pcell);
                // ********** @008 2010/06/18  **********
                // 20104? 
                PdfPTable medCodeTbl = new PdfPTable(13);
                medCodeTbl.setWidthPercentage(100f);
                float[] widthsCode = { 17, 8, 8, 15, 8, 17, 8, 8, 8, 8, 8, 8, 8 };
                medCodeTbl.setWidths(widthsCode);
                // ??
                PdfPCell medCodeCell = new PdfPCell(new Paragraph("?\n?", min_6));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(prefNo.charAt(0)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(prefNo.charAt(1)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph("\n?", min_6));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(grade.charAt(0)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph("", min_6));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(0)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(1)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(2)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(3)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(4)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(5)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                medCodeCell = new PdfPCell(new Paragraph(String.valueOf(institution.charAt(6)), min_14));
                medCodeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(medCodeCell);
                medCodeCell.setPaddingTop(CELL_PADDING_0);
                medCodeTbl.addCell(medCodeCell);
                pcell = new PdfPCell(medCodeTbl);
                pcell.setBorder(Table.NO_BORDER);
                pcell.setColspan(10);
                pcell.setPaddingBottom(CELL_PADDING_1);
                ptblR.addCell(pcell);
                // ********** @008 2010/06/18  **********

                ptbl.addCell(ptblR);

                // ??
                PdfPTable termTbl = new PdfPTable(3);
                termTbl.setWidthPercentage(100f);
                float[] widthsT = { 14.8f, 26, 59.2f };
                termTbl.setWidths(widthsT);
                termTbl.getDefaultCell().setPadding(0f);
                PdfPCell termCell = new PdfPCell(new Paragraph("??\n", min_7));
                termCell.setBorderWidth(LINE_WIDTH_1);
                termCell.setPaddingTop(0.3f);
                setAlignJustifiedAll(termCell);
                termTbl.addCell(termCell);
                // ********* @009 2010/07/01  *********
                String periodDate = "?";
                if (pkg.getPeriod() != null) {
                    periodDate = ModelUtils.convertToGengo(
                            ModelUtils.getDateAsFormatString(pkg.getPeriod(), IInfoModel.DATE_WITHOUT_TIME));
                }
                termCell = new PdfPCell(new Paragraph(periodDate, min_8));
                // ********* @009 2010/07/01  *********
                termCell.setBorderWidth(LINE_WIDTH_1);
                termCell.setBorderWidthRight(LINE_WIDTH_0);
                setAlignMiddle(termCell);
                termTbl.addCell(termCell);
                termCell = new PdfPCell(new Paragraph(
                        "???????????????????",
                        min_6));
                termCell.setBorderWidth(LINE_WIDTH_1);
                termCell.setBorderWidthLeft(LINE_WIDTH_0);
                setAlignMiddle(termCell);
                termTbl.addCell(termCell);
                pcell = new PdfPCell(termTbl);
                pcell.setBorder(Table.NO_BORDER);
                pcell.setColspan(3);
                ptbl.addCell(pcell);

                document.add(ptbl);

                // 
                ptbl = new PdfPTable(2);
                ptbl.setWidthPercentage(100f);
                ptbl.getDefaultCell().setPadding(0f);
                ptbl.getDefaultCell().setBorder(Table.NO_BORDER);
                float[] widthsPre = { 3.5f, 96.5f };
                ptbl.setWidths(widthsPre);
                pcell = new PdfPCell(
                        new Paragraph("", min_7));
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pcell);
                ptbl.addCell(pcell);
                // @005 2010/02/26  
                // ??
                // 
                PdfPTable outLineTbl = new PdfPTable(1);
                PdfPCell outLineCell; // ?
                // @005 2010/02/26  
                // 
                PdfPTable prescriptionTbl; // 
                if (ite.hasNext()) {
                    prescriptionTbl = ite.next();
                } else {
                    prescriptionTbl = new PdfPTable(1);
                }
                // @005 2010/02/26  
                // ??
                outLineCell = new PdfPCell(prescriptionTbl);
                outLineCell.setFixedHeight(200f);
                outLineCell.setBorderWidth(LINE_WIDTH_0);
                outLineTbl.addCell(outLineCell);
                if (totalPageNo > 1) {
                    pageNo++;
                    outLineCell = new PdfPCell(
                            new Paragraph((String.valueOf(pageNo) + "?" + String.valueOf(totalPageNo)), min_10));
                    setAlignRight(outLineCell);
                    outLineCell.setFixedHeight(12f); // @010
                    outLineCell.setBorderWidth(LINE_WIDTH_1); // @010
                    outLineTbl.addCell(outLineCell);
                }
                // @005 2010/02/26  
                PdfPCell prescriptionCell = new PdfPCell(outLineTbl);
                prescriptionCell.setFixedHeight(215f);
                prescriptionCell.setBorderWidth(LINE_WIDTH_1);
                ptbl.addCell(prescriptionCell);

                // 
                pcell = new PdfPCell(new Paragraph("", min_7));
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pcell);
                ptbl.addCell(pcell);
                // 
                PdfPTable noteTbl = new PdfPTable(5); // @010
                noteTbl.setWidthPercentage(100f);
                float[] widthsN = { 11, 4, 34, 4, 47 }; // @010
                noteTbl.setWidths(widthsN);
                noteTbl.getDefaultCell().setPadding(0f);
                noteTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                String address = (pkg.getPatientAddress() == null) ? "" : pkg.getPatientAddress();
                String patientName = pkg.getPatientName();
                String addressName = "?" + address + "\n???" + patientName;
                String useDrugInfo = "??" + pkg.getDrugLicenseNumber() + "("
                        + pkg.getPhysicianName() + ")";

                StringBuilder postInfo = new StringBuilder();
                // 
                if (pkg.isChkHomeMedical()) {
                    postInfo.append(NOTES_HOME_MEDICAL + "\n");
                }
                if (pkg.isChkPatientInfo()) {
                    // ?????
                    postInfo.append(addressName);
                }
                if (postInfo.length() > 0) {
                    // 
                    postInfo.append("\n");
                }
                if (pkg.isChkUseDrugInfo()) {
                    // ??
                    postInfo.append(useDrugInfo);
                }
                // @010 20124 -->
                PdfPCell noteCell = new PdfPCell(new Paragraph("???", min_7));
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteCell.setBorderWidthBottom(LINE_WIDTH_1);
                noteCell.setMinimumHeight(CELL_HIGHT_2);
                setAlignTop(noteCell);
                noteTbl.addCell(noteCell);

                noteCell = new PdfPCell(new Paragraph("", min_15));//min_15
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteCell.setBorderWidthBottom(LINE_WIDTH_1);
                noteCell.setPadding(0f);
                setAlignRight(noteCell);
                noteTbl.addCell(noteCell);

                noteCell = new PdfPCell(new Paragraph(
                        "??????????\n?????????????",
                        min_6));
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteCell.setBorderWidthBottom(LINE_WIDTH_1);
                noteTbl.addCell(noteCell);

                noteCell = new PdfPCell(new Paragraph("", min_15));//min_15
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteCell.setBorderWidthBottom(LINE_WIDTH_1);
                noteCell.setBorderWidthRight(LINE_WIDTH_1);
                noteCell.setPadding(0f);
                setAlignLeft(noteCell);
                noteTbl.addCell(noteCell);

                //minagawa^ ????  47                   
                noteCell = new PdfPCell();
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteTbl.addCell(noteCell);
                //minagawa                    
                noteCell = new PdfPCell(new Paragraph(postInfo.toString(), min_7)); // ????????
                noteCell.setColspan(widthsN.length);
                noteCell.setMinimumHeight(40f);
                noteCell.setBorderWidth(LINE_WIDTH_0);
                noteTbl.addCell(noteCell);
                // <-- 20124 @010

                pcell = new PdfPCell(noteTbl);
                pcell.setBorderWidth(LINE_WIDTH_1);
                ptbl.addCell(pcell);

                document.add(ptbl);

                // ??
                ptbl = new PdfPTable(2);
                ptbl.setWidthPercentage(100f);
                float[] widthsOther = { 58, 42 };
                ptbl.setWidths(widthsOther);
                ptbl.getDefaultCell().setPadding(0f);
                ptbl.getDefaultCell().setBorder(Table.NO_BORDER);
                // 
                ptblL = new PdfPTable(3);
                ptblL.setWidthPercentage(100f);
                float[] widthsPh = { 28, 65, 7 };
                ptblL.setWidths(widthsPh);
                ptblL.getDefaultCell().setPadding(0f);
                ptblL.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell pcellL = new PdfPCell(new Paragraph("", min_7));
                pcellL.setMinimumHeight(CELL_HIGHT_0);
                pcellL.setBorderWidth(LINE_WIDTH_1);
                setAlignJustifiedAll(pcellL);
                setAlignMiddle(pcellL);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell(new Paragraph("?", min_8));
                pcellL.setBorderWidth(LINE_WIDTH_1);
                setAlignMiddle(pcellL);
                pcellL.setColspan(2);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell(new Paragraph("??\n??\n??", min_7));
                pcellL.setPaddingTop(0.2f);
                pcellL.setBorderWidth(LINE_WIDTH_1);
                pcellL.setBorderWidthBottom(LINE_WIDTH_0);
                setAlignJustifiedAll(pcellL);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell();
                pcellL.setBorderWidth(LINE_WIDTH_0);
                pcellL.setBorderWidthRight(LINE_WIDTH_1);
                pcellL.setColspan(2);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell(new Paragraph("?\n???", min_7));
                pcellL.setPaddingTop(0.2f);
                pcellL.setBorderWidth(LINE_WIDTH_1);
                pcellL.setBorderWidthTop(LINE_WIDTH_0);
                setAlignJustifiedAll(pcellL);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell();
                pcellL.setBorderWidth(LINE_WIDTH_0);
                pcellL.setBorderWidthBottom(LINE_WIDTH_1);
                ptblL.addCell(pcellL);
                pcellL = new PdfPCell(new Paragraph("?", min_8));
                pcellL.setBorderWidth(LINE_WIDTH_1);
                pcellL.setBorderWidthTop(LINE_WIDTH_0);
                pcellL.setBorderWidthLeft(LINE_WIDTH_0);
                setAlignJustifiedAll(pcellL);
                setAlignMiddle(pcellL);
                ptblL.addCell(pcellL);
                ptbl.addCell(ptblL);

                ptblR = new PdfPTable(9);
                ptblR.setWidthPercentage(100f);
                float[] widthsPu = { 33, 8, 8, 8, 8, 8, 8, 8, 8 };
                ptblR.setWidths(widthsPu);
                ptblR.getDefaultCell().setPadding(0f);
                PdfPCell pcellR = new PdfPCell(new Paragraph("?", min_7));
                pcellR.setMinimumHeight(CELL_HIGHT_0);
                setAlignJustifiedAll(pcellR);
                setAlignMiddle(pcellR);
                pcellR.setBorderWidth(LINE_WIDTH_1);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[0]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[1]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthRight(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[2]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthLeft(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[3]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthRight(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[4]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_2);
                pcellR.setBorderWidthRight(LINE_WIDTH_1);
                pcellR.setBorderWidthLeft(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[5]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthTop(LINE_WIDTH_2);
                pcellR.setBorderWidthBottom(LINE_WIDTH_2);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[6]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_2);
                pcellR.setBorderWidthRight(LINE_WIDTH_3);
                pcellR.setBorderWidthLeft(LINE_WIDTH_1);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(piNumC2[7]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthLeft(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph("???", min_7));
                pcellR.setPaddingTop(0.3f);
                setAlignJustifiedAll(pcellR);
                pcellR.setBorderWidth(LINE_WIDTH_1);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[0]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[1]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[2]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthRight(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[3]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthLeft(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[4]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[5]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthRight(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell(new Paragraph(String.valueOf(rNumC2[6]), min_14)); // @006
                pcellR.setBorderWidth(LINE_WIDTH_1);
                pcellR.setBorderWidthLeft(LINE_WIDTH_3);
                pcellR.setPadding(0f);
                setAlignCenterMiddle(pcellR);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell();
                pcellR.setBorderWidth(LINE_WIDTH_0);
                ptblR.addCell(pcellR);
                pcellR = new PdfPCell();
                pcellR.setBorderWidth(LINE_WIDTH_0);
                pcellR.setColspan(9);
                ptblR.addCell(pcellR);

                ptbl.addCell(ptblR);

                document.add(ptbl);

                ptbl = new PdfPTable(2);
                ptbl.setWidthPercentage(100f);
                float[] widthsMed = { 3.5f, 96.5f };
                ptbl.setWidths(widthsMed);
                ptbl.setSpacingBefore(3f);
                ptbl.getDefaultCell().setPadding(0f);
                ptbl.getDefaultCell().setBorder(Table.NO_BORDER);
                pcell = new PdfPCell(new Paragraph("????", min_7));
                pcell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(pcell);
                ptbl.addCell(pcell);

                ptblR = new PdfPTable(3);
                ptblR.setWidthPercentage(100f);
                float[] widthsPm = { 60, 20, 20 };
                ptblR.setWidths(widthsPm);
                ptblR.getDefaultCell().setPadding(0f);
                ptblR.getDefaultCell().setBorder(Table.NO_BORDER);
                // ????????
                PdfPTable pointTbl = new PdfPTable(7);
                pointTbl.setWidthPercentage(100f);
                float[] widthsPo = { 7, 15.5f, 15.5f, 15.5f, 15.5f, 15.5f, 15.5f };
                pointTbl.setWidths(widthsPo);
                pointTbl.getDefaultCell().setPadding(0f);
                pointTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell pointCell = new PdfPCell(new Paragraph("", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("?", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("?", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                pointCell = new PdfPCell(new Paragraph("", min_7));
                pointCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(pointCell);
                pointTbl.addCell(pointCell);
                // ?
                PdfPCell blankCell = new PdfPCell();
                blankCell.setBorderWidth(LINE_WIDTH_1);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                pointTbl.addCell(blankCell);
                ptblR.addCell(pointTbl);
                // ?
                PdfPTable feeTbl = new PdfPTable(2);
                feeTbl.setWidthPercentage(100f);
                float[] widthsF = { 50, 50 };
                feeTbl.setWidths(widthsF);
                feeTbl.getDefaultCell().setPadding(0f);
                feeTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell feeCell = new PdfPCell(new Paragraph("    ", min_7));
                feeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCell);
                feeTbl.addCell(feeCell);
                feeCell = new PdfPCell(new Paragraph("    ", min_7));
                feeCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCell);
                feeTbl.addCell(feeCell);
                feeCell = new PdfPCell();
                feeCell.setBorderWidth(LINE_WIDTH_1);
                feeCell.setMinimumHeight(CELL_HIGHT_1);
                feeTbl.addCell(feeCell);
                feeTbl.addCell(feeCell);
                // ?etc..
                PdfPTable feeTblSub = new PdfPTable(4);
                feeTblSub.setWidthPercentage(100f);
                float[] widthsSub = { 28, 16, 28, 28 };
                feeTblSub.setWidths(widthsSub);
                feeTblSub.getDefaultCell().setPadding(0f);
                feeTblSub.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell feeCellSub = new PdfPCell(new Paragraph("?", min_7));
                feeCellSub.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeCellSub = new PdfPCell(new Paragraph("", min_7));
                feeCellSub.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeCellSub = new PdfPCell(new Paragraph("  ", min_7));
                feeCellSub.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeCellSub = new PdfPCell(new Paragraph("?  ", min_7));
                feeCellSub.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                // ?
                feeCellSub = new PdfPCell();
                feeCellSub.setBorderWidth(LINE_WIDTH_1);
                feeCellSub.setMinimumHeight(CELL_HIGHT_1);
                feeTblSub.addCell(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeTblSub.addCell(feeCellSub);
                feeCell = new PdfPCell(feeTblSub);
                feeCell.setBorder(Table.NO_BORDER);
                feeCell.setColspan(2);
                feeTbl.addCell(feeCell);
                // etc..?
                pcellR = new PdfPCell(feeTbl);
                pcellR.setPadding(0f);
                pcellR.setColspan(2);
                pcellR.setBorder(Table.NO_BORDER);
                ptblR.addCell(pcellR);
                // 
                noteTbl = new PdfPTable(2);
                noteTbl.setWidthPercentage(100f);
                float[] widthsNote = { 5.3f, 94.7f };
                noteTbl.setWidths(widthsNote);
                noteTbl.getDefaultCell().setPadding(0f);
                noteTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                noteCell = new PdfPCell(new Paragraph("", min_7));
                noteCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenterMiddle(noteCell);
                noteTbl.addCell(noteCell);
                noteCell = new PdfPCell();
                noteCell.setBorderWidth(LINE_WIDTH_1);
                noteTbl.addCell(noteCell);
                pcell = new PdfPCell(noteTbl);
                pcell.setBorderWidth(LINE_WIDTH_0);
                pcell.setPadding(0f);
                pcell.setColspan(2);
                ptblR.addCell(pcell);
                // ?
                PdfPTable sumTbl = new PdfPTable(1);
                sumTbl.setWidthPercentage(100f);
                sumTbl.getDefaultCell().setPadding(0f);
                sumTbl.getDefaultCell().setBorder(Table.NO_BORDER);
                PdfPCell sumCell = new PdfPCell(new Paragraph("?", min_7));
                sumCell.setBorderWidth(LINE_WIDTH_1);
                setAlignCenter(sumCell);
                sumTbl.addCell(sumCell);
                sumCell = new PdfPCell();
                sumCell.setBorderWidth(LINE_WIDTH_1);
                sumCell.setMinimumHeight(CELL_HIGHT_1);
                sumTbl.addCell(sumCell);
                ptblR.addCell(sumTbl);

                pcell = new PdfPCell(ptblR);
                pcell.setBorderWidth(LINE_WIDTH_0);
                pcell.setPadding(0f);
                ptbl.addCell(pcell);

                document.add(ptbl);
                // 
                if (ite.hasNext()) {
                    document.newPage();
                }

            } while (ite.hasNext());

            document.close();
            bos.close();

            // pdf content bytes
            byte[] pdfbytes = byteo.toByteArray();

            // ????? File????
            //if (!ClientContext.is5mTest()) {
            FileOutputStream fout = new FileOutputStream(pathToPDF);
            FileChannel channel = fout.getChannel();
            ByteBuffer bytebuff = ByteBuffer.wrap(pdfbytes);

            while (bytebuff.hasRemaining()) {
                channel.write(bytebuff);
            }
            channel.close();
            //return pathToPDF;
            //}

            //            // ??? water Mark ??
            //            PdfReader pdfReader = new PdfReader(pdfbytes);
            //            PdfStamper pdfStamper = new PdfStamper(pdfReader,new FileOutputStream(pathToPDF));
            //
            //            Image image = Image.getInstance(ClientContext.getImageResource("water-mark.png"));
            //
            //            for(int i=1; i<= pdfReader.getNumberOfPages(); i++){
            //
            //                PdfContentByte content = pdfStamper.getUnderContent(i);
            //
            //                image.scaleAbsolute(PageSize.A5.getWidth(), PageSize.A5.getHeight());
            //                image.setAbsolutePosition(0.0f, 0.0f);
            //                content.addImage(image);
            //            }
            //
            //            pdfStamper.close();

            return getFileName(); //http://ip:8080/filename.pdf

        } catch (DocumentException e) {
            e.printStackTrace(System.err);
            throw new RuntimeException(e.getMessage());

        } catch (IOException e) {
            e.printStackTrace(System.err);
            throw new RuntimeException(e.getMessage());

        } catch (Exception e) {
            e.printStackTrace(System.err);
            throw new RuntimeException(e.getMessage());

        } finally {
            if (document != null && document.isOpen()) {
                document.close();
            }
        }
    }

    // @010 20124
    private List<PdfPTable> createPrescriptionTbl2() {
        ClaimItem[] items;
        PdfPCell pcell, blank, numCell, amountCell;
        int num, cnt;
        double sum; // @009 ?????(?*)
        List<PdfPTable> preTblList = null;
        String admin, number; // @009
        String classCode, amount, medicine; // @009

        try {
            StringBuilder sb = new StringBuilder();
            sb.append(
                    "???????(??)??????????????\n");
            sb.append(
                    "?????????????????????????");
            PdfPTable ptbl = new PdfPTable(9); // @009
            ptbl.setWidthPercentage(100f);
            // @009 ???, ?, ??, ?, ??, , "(", , ")"
            float[] widthsP = { 14, 7, 52, 8, 15, 32, 2, 5, 9 };
            ptbl.setWidths(widthsP);
            ptbl.getDefaultCell().setPadding(0f);
            preTblList = new ArrayList<PdfPTable>();

            num = 1;
            //admin = "";  // @009 
            //number = ""; // @009 
            //amount = ""; // @009 ?
            numCell = new PdfPCell(new Paragraph("", min_8)); // @009
            numCell.setBorderWidth(LINE_WIDTH_0); // @009

            PdfPCell notes = new PdfPCell(new Paragraph("??", min_8));
            notes.setBorderWidth(LINE_WIDTH_1);
            notes.setBorderWidthBottom(LINE_WIDTH_0);
            PdfPCell bracket = new PdfPCell(new Paragraph("", min_15));
            bracket.setBorderWidth(LINE_WIDTH_0);
            bracket.setHorizontalAlignment(Element.ALIGN_RIGHT);
            bracket.setPadding(0f);
            PdfPCell notesDetail = new PdfPCell(new Paragraph(sb.toString(), min_6));
            notesDetail.setBorderWidth(LINE_WIDTH_0);
            notesDetail.setColspan(5);
            PdfPCell bracketC = new PdfPCell(new Paragraph("", min_15));
            bracketC.setBorderWidth(LINE_WIDTH_0);
            bracketC.setHorizontalAlignment(Element.ALIGN_LEFT);
            bracketC.setPadding(0f);
            bracketC.setColspan(2);

            for (Iterator<BundleMed> ite = pkg.getPriscriptionList().iterator(); ite.hasNext();) {
                BundleMed prescription = ite.next();
                admin = prescription.getAdmin(); // @009  
                number = prescription.getBundleNumber(); // @009  ????=1 bundeNumber
                classCode = prescription.getClassCode(); // @009   221 etc 

                items = prescription.getClaimItem();
                //minagawa^                
                boolean genericIsOk = true;

                if (items != null) {
                    for (ClaimItem i : items) {
                        if (i.getCode().equals("099209903")) {
                            genericIsOk = false;
                            break;
                        }
                    }
                }
                genericIsOk = true;
                //minagawa4                

                if (ptbl.getRows().isEmpty()) {
                    ptbl.addCell(notes);
                    ptbl.addCell(bracket);
                    ptbl.addCell(notesDetail);
                    ptbl.addCell(bracketC);
                }

                // @001 2009/11/17 ?
                // items?null???????????????
                // ???????????items ? null ??????
                // if???????????(??????????)
                if (items != null) {
                    boolean clearFlg = true; // @004 2010/02/26  ?
                    // ********** @009  **********
                    //sum = 0; // ?????
                    Font adminF = min_8; // 
                    boolean wrap = true;
                    if (admin != null) {
                        if (admin.length() > 17) {
                            // ??17???4??
                            adminF = min_4;
                            wrap = false;
                        } else if (admin.length() > 11) {
                            // ??11???6??
                            adminF = min_6;
                        }
                    }
                    Font medicineF; // ??
                    // ********** @009  **********

                    // ??? ClaimItem iterate
                    for (cnt = 0; cnt < items.length; cnt++) {
                        //System.out.println("row size:" + ptbl.getRows().size());

                        // ??
                        if (!genericIsOk) {
                            blank = new PdfPCell(new Paragraph("", min_8));
                            blank.setBorderWidth(LINE_WIDTH_0);
                            blank.setBorderWidthRight(LINE_WIDTH_1);
                            ptbl.addCell(blank);
                            genericIsOk = true;

                        } else {
                            blank = new PdfPCell();
                            blank.setBorderWidth(LINE_WIDTH_0);
                            blank.setBorderWidthRight(LINE_WIDTH_1);
                            ptbl.addCell(blank);
                        }

                        if (ptbl.getRows().size() > 13) {
                            // ?13???????????
                            blank = new PdfPCell();
                            blank.setBorderWidth(LINE_WIDTH_0);
                            blank.setColspan(4);
                            ptbl.addCell(blank);
                            pcell = new PdfPCell(new Paragraph("???", min_8));
                            pcell.setBorderWidth(LINE_WIDTH_0);
                            pcell.setColspan(5);
                            ptbl.addCell(pcell);
                            preTblList.add(ptbl);
                            ptbl = new PdfPTable(9);
                            ptbl.setWidthPercentage(100f);
                            ptbl.setWidths(widthsP);
                            ptbl.getDefaultCell().setPadding(0f);
                            // ??
                            ptbl.addCell(notes);
                            ptbl.addCell(bracket);
                            ptbl.addCell(notesDetail);
                            ptbl.addCell(bracketC);
                            blank = new PdfPCell();
                            blank.setBorderWidth(LINE_WIDTH_0);
                            blank.setBorderWidthRight(LINE_WIDTH_1);
                            ptbl.addCell(blank);
                        }

                        if (cnt > 0) {
                            // ?1?????????
                            blank = new PdfPCell();
                            blank.setBorderWidth(LINE_WIDTH_0);
                            ptbl.addCell(blank);
                        } else {
                            // ?1??????
                            numCell = new PdfPCell(new Paragraph(num++ + ")", min_8));
                            numCell.setBorderWidth(LINE_WIDTH_0);
                            setAlignRight(numCell);
                            ptbl.addCell(numCell);
                            // @004 2010/02/26  
                            // ?1?????? false ??
                            if (!ClaimConst.COMMENT_CODE_0.equals(items[cnt].getCode())) {
                                clearFlg = false;
                            }
                            // @004 2010/02/26  
                        }

                        // ********** @009  **********
                        amount = items[cnt].getNumber();
                        //                        System.out.println("??" + items[cnt].getName());
                        //                        System.out.println("?" + amount);
                        //medicine = "";
                        medicine = items[cnt].getName();
                        //                        System.out.println("????" + medicine.length());
                        if (medicine.length() > 19) {
                            // ????19???7??
                            medicineF = min_7;
                        } else {
                            // ????19???8???
                            medicineF = min_8;
                        }
                        // ********** @009  **********

                        if ((ClaimConst.SUBCLASS_CODE_ID.equals(items[cnt].getClassCodeSystem()))
                                && ((String.valueOf(ClaimConst.YAKUZAI).equals(items[cnt].getClassCode()))
                                        || (String.valueOf(ClaimConst.ZAIRYO).equals(items[cnt].getClassCode())))) {

                            pcell = new PdfPCell(new Paragraph(convertNVL(items[cnt].getName()), medicineF)); // ?? ??? ????
                            pcell.setBorderWidth(LINE_WIDTH_0);
                            ptbl.addCell(pcell);
                            amountCell = new PdfPCell(new Paragraph(convertNVL(amount), min_8)); // ?
                            setAlignRight(amountCell);
                            amountCell.setBorderWidth(LINE_WIDTH_0);
                            ptbl.addCell(amountCell);

                            if (!(String.valueOf(ClaimConst.ZAIRYO).equals(items[cnt].getClassCode()))) {
                                // ?????
                                pcell = new PdfPCell(new Paragraph(convertNVL(items[cnt].getUnit()), min_8)); // ??
                                pcell.setBorderWidth(LINE_WIDTH_0);
                                ptbl.addCell(pcell);
                                // ********** @009  **********
                                pcell = new PdfPCell(new Paragraph(admin, adminF)); // 
                                pcell.setBorderWidth(LINE_WIDTH_0);
                                pcell.setNoWrap(wrap);
                                ptbl.addCell(pcell);
                            } else {
                                blank = new PdfPCell();
                                blank.setColspan(2);
                                blank.setBorderWidth(LINE_WIDTH_0);
                                ptbl.addCell(blank);
                            }

                            if (ClaimConst.RECEIPT_CODE_GAIYO.equals(classCode)) {
                                pcell = new PdfPCell(new Paragraph("", min_8));
                                pcell.setBorderWidth(LINE_WIDTH_0);
                                pcell.setColspan(3);
                                ptbl.addCell(pcell);
                                sum = Double.parseDouble(amount) * Double.parseDouble(number);
                                DecimalFormat f = new DecimalFormat("####0.###");
                                //                                System.out.println("??" + sum);
                                amountCell.getPhrase().clear();
                                amountCell.getPhrase().add(new Paragraph(String.valueOf(f.format(sum)), min_8)); // ?
                            } else {
                                // 
                                if ((number != null) && !("".equals(number))) {
                                    pcell = new PdfPCell(new Paragraph("(", min_8));
                                    pcell.setBorderWidth(LINE_WIDTH_0);
                                    ptbl.addCell(pcell);
                                    pcell = new PdfPCell(new Paragraph(number, min_8));
                                    pcell.setBorderWidth(LINE_WIDTH_0);
                                    setAlignRight(pcell);
                                    ptbl.addCell(pcell);

                                    //minagawa^          
                                    if (classCode.startsWith("22")) {
                                        // 
                                        pcell = new PdfPCell(new Paragraph(")", min_8));
                                    } else if (classCode.startsWith("21")) {
                                        // 
                                        pcell = new PdfPCell(new Paragraph(")", min_8));
                                        // 
                                    } else if (classCode.startsWith("23")) {
                                        pcell = new PdfPCell(new Paragraph("", min_8));
                                    }
                                    //minagawa$     
                                    pcell.setBorderWidth(LINE_WIDTH_0);
                                    setAlignRight(pcell);
                                    ptbl.addCell(pcell);
                                } else {
                                    blank = new PdfPCell();
                                    blank.setBorderWidth(LINE_WIDTH_0);
                                    blank.setColspan(3);
                                    ptbl.addCell(blank);
                                }
                            }
                            // ********** @009  **********
                        } else {
                            pcell = new PdfPCell(new Paragraph(convertNVL(items[cnt].getName()), min_8));
                            pcell.setBorderWidth(LINE_WIDTH_0);
                            pcell.setColspan(7);
                            ptbl.addCell(pcell);
                        }
                    }
                    // @004 2010/02/26  
                    // ?? true ????
                    if (clearFlg && (admin == null)) {
                        numCell.getPhrase().clear();
                        num--;
                    }
                    // @004 2010/02/26  

                } else {
                    String stampName = prescription.getOrderName();
                    System.err.println("??" + stampName
                            + "????????????");
                    StringBuilder b = new StringBuilder();
                    b.append("??").append(stampName)
                            .append("?????????").append(System.getProperty(STR_LF));
                    System.err.println(b.toString());
                }

                if (!ite.hasNext()) {
                    blank = new PdfPCell();
                    blank.setBorderWidth(LINE_WIDTH_0);
                    ptbl.addCell(blank);
                    pcell = new PdfPCell(new Paragraph("", min_8));
                    pcell.setBorderWidth(LINE_WIDTH_0);
                    pcell.setBorderWidthLeft(LINE_WIDTH_1);
                    pcell.setPaddingLeft(30f);
                    pcell.setColspan(8);
                    ptbl.addCell(pcell);
                    preTblList.add(ptbl);
                }
            }
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
        return preTblList;
    }

    /**
     * ????char?? ? or  ??
     * @param str
     * @param num ??
     * @param pad ?(R)or(L)
     * @return char[] ?
     */
    private char[] partitionPadRL(String str, int num, String pad) {
        char[] ret;
        if ("R".equals(pad)) {
            ret = partitionPadR(str, num);
        } else {
            ret = partitionPadL(str, num);
        }
        return ret;
    }

    /**
     * ???char??????(??)?
     * @param str ?
     * @param num ?
     * @return char[]
     */
    private char[] partitionPadR(String str, int num) {
        char[] ret = null;
        StringBuilder sb;
        int cnt;
        try {
            if (str != null) {
                int strNum = str.toCharArray().length;
                if (num < strNum) {
                    /*
                     * ??????????
                     * ??(8)??(8)????(7)?MAX??????()?MAX?
                     * ORCA???????????????
                     * ???????
                     */
                    ret = new char[strNum];
                    ret = str.toCharArray();
                } else {
                    ret = new char[num];
                    sb = new StringBuilder(num);
                    cnt = num - strNum;
                    sb.append(str);
                    for (int i = 0; i < cnt; i++) {
                        sb.insert(0, " ");
                    }
                    ret = sb.toString().toCharArray();
                }
            } else {
                ret = new char[num];
            }
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
        return ret;
    }

    /**
     * ???char?????(??)?
     * 
     * @param str ?
     * @param num ?
     * @return char[]
     */
    private char[] partitionPadL(String str, int num) {
        char[] ret;
        ret = null;
        StringBuilder sb;
        int cnt;
        try {
            if (str != null) {
                int strNum = str.toCharArray().length;
                if (num < strNum) {
                    /*
                     * ??????????
                     * ??(8)??(8)????(7)?MAX??????()?MAX?
                     * ORCA???????????????
                     * ???????
                     */
                    ret = new char[strNum];
                    ret = str.toCharArray();
                } else {
                    ret = new char[num];
                    sb = new StringBuilder(num);
                    cnt = num - strNum;
                    sb.append(str);
                    for (int i = 0; i < cnt; i++) {
                        sb.append(" ");
                    }
                    ret = sb.toString().toCharArray();
                }
            } else {
                ret = new char[num];
            }
        } catch (Exception e) {
            e.printStackTrace(System.err);
        }
        return ret;
    }

    /**
     * null??????
     * 
     * @param str
     * @return
     */
    private String convertNVL(String str) {
        return str == null ? "" : str;
    }

    /**
     * ??
     * ???
     * @param pcell
     */
    private void setAlignRightMiddle(PdfPCell pcell) {
        setAlignRight(pcell);
        setAlignMiddle(pcell);
    }

    /**
     * ??
     * 
     * @param pcell
     */
    private void setAlignCenterMiddle(PdfPCell pcell) {
        setAlignCenter(pcell);
        setAlignMiddle(pcell);
    }

    /**
     * ??
     * ???
     * @param pcell
     */
    private void setAlignRight(PdfPCell pcell) {
        pcell.setHorizontalAlignment(Element.ALIGN_RIGHT);
    }

    /**
     * ??
     * ??
     * @param pcell
     */
    private void setAlignLeft(PdfPCell pcell) {
        pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
    }

    /**
     * ??
     * 
     * @param pcell
     */
    private void setAlignCenter(PdfPCell pcell) {
        pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
    }

    /**
     * ??
     * 
     * @param pcell
     */
    private void setAlignMiddle(PdfPCell pcell) {
        pcell.setVerticalAlignment(Element.ALIGN_MIDDLE);
    }

    /**
     * ??
     * 
     * @param pcell
     */
    private void setAlignTop(PdfPCell pcell) {
        pcell.setVerticalAlignment(Element.ALIGN_TOP);
    }

    /**
     * ??
     * ?
     * @param pcell
     */
    private void setAlignJustifiedAll(PdfPCell pcell) {
        pcell.setHorizontalAlignment(Element.ALIGN_JUSTIFIED_ALL);
    }

    // @002 2009/11/17 
    /**
     * ????
     * 
     * @return ?
     */
    public String getDocumentDir() {
        return documentDir;
    }

    /**
     * ????
     * 
     * @param documentDir String
     */
    public void setDocumentDir(String documentDir) {
        this.documentDir = documentDir;
    }

    /**
     * ?????
     * 
     * @return ??
     */
    public String getFileName() {
        return fileName;
    }

    /**
     * ?????
     * 
     * @param fileName String
     */
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    // @002 ????
}