Example usage for com.lowagie.text Font Font

List of usage examples for com.lowagie.text Font Font

Introduction

In this page you can find the example usage for com.lowagie.text Font Font.

Prototype


public Font(int family, float size) 

Source Link

Document

Constructs a Font.

Usage

From source file:net.algem.security.UserCtrl.java

License:Open Source License

private File getFollowUpAsPDF(String userId, String from, String to)
        throws IOException, BadElementException, DocumentException {
    String path = "/tmp/" + "suivi-" + userId + ".pdf";
    File f = new File(path);
    LOGGER.log(Level.INFO, f.getName());
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, byteArrayOutputStream); // Do this BEFORE document.open()
    document.open();/*from   w w  w .  jav  a  2  s.  com*/

    PdfPTable table = new PdfPTable(10);
    table.setWidthPercentage(100);
    table.setWidths(new float[] { 1.1f, 1.2f, 0.6f, 1.5f, 1.5f, 2f, 0.5f, 0.5f, 1.9f, 1.9f });

    BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false);
    BaseFont bfb = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.WINANSI, false);
    Font normalFont = new Font(bf, 10);
    Font boldFont = new Font(bfb, 10);

    String fromLabel = messageSource.getMessage("from.label", null, CTX_LOCALE);
    String toLabel = messageSource.getMessage("to.label", null, CTX_LOCALE);
    String prefix = messageSource.getMessage("follow-up.label", null, CTX_LOCALE) + " "
            + organization.get("name.label");
    String period = fromLabel.toLowerCase() + " " + from + " " + toLabel.toLowerCase() + " " + to;
    PdfPCell headerCell = new PdfPCell(new Phrase(prefix + " " + period, boldFont));

    headerCell.setBackgroundColor(Color.LIGHT_GRAY);
    headerCell.setColspan(10);
    table.addCell(headerCell);

    table.addCell(new PdfPCell(new Phrase(messageSource.getMessage("date.label", null, CTX_LOCALE), boldFont)));
    table.addCell(new PdfPCell(new Phrase(messageSource.getMessage("time.label", null, CTX_LOCALE), boldFont)));
    table.addCell(new PdfPCell(
            new Phrase(messageSource.getMessage("time.length.label", null, CTX_LOCALE), boldFont)));
    table.addCell(new PdfPCell(new Phrase(messageSource.getMessage("room.label", null, CTX_LOCALE), boldFont)));
    table.addCell(
            new PdfPCell(new Phrase(messageSource.getMessage("course.label", null, CTX_LOCALE), boldFont)));
    table.addCell(
            new PdfPCell(new Phrase(messageSource.getMessage("teacher.label", null, CTX_LOCALE), boldFont)));
    String abs = messageSource.getMessage("absence.label", null, CTX_LOCALE);
    table.addCell(new PdfPCell(new Phrase(abs != null ? abs.substring(0, 3) + "." : "", boldFont)));
    table.addCell(
            new PdfPCell(new Phrase(messageSource.getMessage("score.label", null, CTX_LOCALE), boldFont)));
    table.addCell(new PdfPCell(
            new Phrase(messageSource.getMessage("individual.logbook.label", null, CTX_LOCALE), boldFont)));
    table.addCell(new PdfPCell(
            new Phrase(messageSource.getMessage("collective.comment.label", null, CTX_LOCALE), boldFont)));

    fillPdfTable(table, getFollowUpSchedules(userId, from, to), normalFont);

    document.add(table);
    document.close();
    byte[] pdfBytes = byteArrayOutputStream.toByteArray();
    Files.write(Paths.get(path), pdfBytes);
    return f;
}

From source file:net.sf.jsignpdf.SignerLogic.java

License:Mozilla Public License

/**
 * Signs a single file./*w  w  w  .  j  a va  2 s  .  co  m*/
 * 
 * @return true when signing is finished succesfully, false otherwise
 */
public boolean signFile() {
    final String outFile = options.getOutFileX();
    if (!validateInOutFiles(options.getInFile(), outFile)) {
        LOGGER.info(RES.get("console.skippingSigning"));
        return false;
    }

    boolean finished = false;
    Throwable tmpException = null;
    FileOutputStream fout = null;
    try {
        SSLInitializer.init(options);

        final PrivateKeyInfo pkInfo = KeyStoreUtils.getPkInfo(options);
        final PrivateKey key = pkInfo.getKey();
        final Certificate[] chain = pkInfo.getChain();
        if (ArrayUtils.isEmpty(chain)) {
            // the certificate was not found
            LOGGER.info(RES.get("console.certificateChainEmpty"));
            return false;
        }
        LOGGER.info(RES.get("console.createPdfReader", options.getInFile()));
        PdfReader reader;
        try {
            reader = new PdfReader(options.getInFile(), options.getPdfOwnerPwdStrX().getBytes());
        } catch (Exception e) {
            try {
                reader = new PdfReader(options.getInFile(), new byte[0]);
            } catch (Exception e2) {
                // try to read without password
                reader = new PdfReader(options.getInFile());
            }
        }

        LOGGER.info(RES.get("console.createOutPdf", outFile));
        fout = new FileOutputStream(outFile);

        final HashAlgorithm hashAlgorithm = options.getHashAlgorithmX();

        LOGGER.info(RES.get("console.createSignature"));
        char tmpPdfVersion = '\0'; // default version - the same as input
        if (reader.getPdfVersion() < hashAlgorithm.getPdfVersion()) {
            // this covers also problems with visible signatures (embedded
            // fonts) in PDF 1.2, because the minimal version
            // for hash algorithms is 1.3 (for SHA1)
            if (options.isAppendX()) {
                // if we are in append mode and version should be updated
                // then return false (not possible)
                LOGGER.info(RES.get("console.updateVersionNotPossibleInAppendMode"));
                return false;
            }
            tmpPdfVersion = hashAlgorithm.getPdfVersion();
            LOGGER.info(RES.get("console.updateVersion",
                    new String[] { String.valueOf(reader.getPdfVersion()), String.valueOf(tmpPdfVersion) }));
        }

        final PdfStamper stp = PdfStamper.createSignature(reader, fout, tmpPdfVersion, null,
                options.isAppendX());
        if (!options.isAppendX()) {
            // we are not in append mode, let's remove existing signatures
            // (otherwise we're getting to troubles)
            final AcroFields acroFields = stp.getAcroFields();
            @SuppressWarnings("unchecked")
            final List<String> sigNames = acroFields.getSignatureNames();
            for (String sigName : sigNames) {
                acroFields.removeField(sigName);
            }
        }
        if (options.isAdvanced() && options.getPdfEncryption() != PDFEncryption.NONE) {
            LOGGER.info(RES.get("console.setEncryption"));
            final int tmpRight = options.getRightPrinting().getRight()
                    | (options.isRightCopy() ? PdfWriter.ALLOW_COPY : 0)
                    | (options.isRightAssembly() ? PdfWriter.ALLOW_ASSEMBLY : 0)
                    | (options.isRightFillIn() ? PdfWriter.ALLOW_FILL_IN : 0)
                    | (options.isRightScreanReaders() ? PdfWriter.ALLOW_SCREENREADERS : 0)
                    | (options.isRightModifyAnnotations() ? PdfWriter.ALLOW_MODIFY_ANNOTATIONS : 0)
                    | (options.isRightModifyContents() ? PdfWriter.ALLOW_MODIFY_CONTENTS : 0);
            switch (options.getPdfEncryption()) {
            case PASSWORD:
                stp.setEncryption(true, options.getPdfUserPwdStr(), options.getPdfOwnerPwdStrX(), tmpRight);
                break;
            case CERTIFICATE:
                final X509Certificate encCert = KeyStoreUtils
                        .loadCertificate(options.getPdfEncryptionCertFile());
                if (encCert == null) {
                    LOGGER.error(RES.get("console.pdfEncError.wrongCertificateFile",
                            StringUtils.defaultString(options.getPdfEncryptionCertFile())));
                    return false;
                }
                if (!KeyStoreUtils.isEncryptionSupported(encCert)) {
                    LOGGER.error(RES.get("console.pdfEncError.cantUseCertificate",
                            encCert.getSubjectDN().getName()));
                    return false;
                }
                stp.setEncryption(new Certificate[] { encCert }, new int[] { tmpRight },
                        PdfWriter.ENCRYPTION_AES_128);
                break;
            default:
                LOGGER.error(RES.get("console.unsupportedEncryptionType"));
                return false;
            }
        }

        final PdfSignatureAppearance sap = stp.getSignatureAppearance();
        sap.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
        final String reason = options.getReason();
        if (StringUtils.isNotEmpty(reason)) {
            LOGGER.info(RES.get("console.setReason", reason));
            sap.setReason(reason);
        }
        final String location = options.getLocation();
        if (StringUtils.isNotEmpty(location)) {
            LOGGER.info(RES.get("console.setLocation", location));
            sap.setLocation(location);
        }
        final String contact = options.getContact();
        if (StringUtils.isNotEmpty(contact)) {
            LOGGER.info(RES.get("console.setContact", contact));
            sap.setContact(contact);
        }
        LOGGER.info(RES.get("console.setCertificationLevel"));
        sap.setCertificationLevel(options.getCertLevelX().getLevel());

        if (options.isVisible()) {
            // visible signature is enabled
            LOGGER.info(RES.get("console.configureVisible"));
            LOGGER.info(RES.get("console.setAcro6Layers", Boolean.toString(options.isAcro6Layers())));
            sap.setAcro6Layers(options.isAcro6Layers());

            final String tmpImgPath = options.getImgPath();
            if (tmpImgPath != null) {
                LOGGER.info(RES.get("console.createImage", tmpImgPath));
                final Image img = Image.getInstance(tmpImgPath);
                LOGGER.info(RES.get("console.setSignatureGraphic"));
                sap.setSignatureGraphic(img);
            }
            final String tmpBgImgPath = options.getBgImgPath();
            if (tmpBgImgPath != null) {
                LOGGER.info(RES.get("console.createImage", tmpBgImgPath));
                final Image img = Image.getInstance(tmpBgImgPath);
                LOGGER.info(RES.get("console.setImage"));
                sap.setImage(img);
            }
            LOGGER.info(RES.get("console.setImageScale"));
            sap.setImageScale(options.getBgImgScale());
            LOGGER.info(RES.get("console.setL2Text"));
            final String signer = PdfPKCS7.getSubjectFields((X509Certificate) chain[0]).getField("CN");
            final String timestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z")
                    .format(sap.getSignDate().getTime());
            if (options.getL2Text() != null) {
                final Map<String, String> replacements = new HashMap<String, String>();
                replacements.put(L2TEXT_PLACEHOLDER_SIGNER, StringUtils.defaultString(signer));
                replacements.put(L2TEXT_PLACEHOLDER_TIMESTAMP, timestamp);
                replacements.put(L2TEXT_PLACEHOLDER_LOCATION, StringUtils.defaultString(location));
                replacements.put(L2TEXT_PLACEHOLDER_REASON, StringUtils.defaultString(reason));
                replacements.put(L2TEXT_PLACEHOLDER_CONTACT, StringUtils.defaultString(contact));
                final String l2text = StrSubstitutor.replace(options.getL2Text(), replacements);
                sap.setLayer2Text(l2text);
            } else {
                final StringBuilder buf = new StringBuilder();
                buf.append(RES.get("default.l2text.signedBy")).append(" ").append(signer).append('\n');
                buf.append(RES.get("default.l2text.date")).append(" ").append(timestamp);
                if (StringUtils.isNotEmpty(reason))
                    buf.append('\n').append(RES.get("default.l2text.reason")).append(" ").append(reason);
                if (StringUtils.isNotEmpty(location))
                    buf.append('\n').append(RES.get("default.l2text.location")).append(" ").append(location);
                sap.setLayer2Text(buf.toString());
            }
            if (FontUtils.getL2BaseFont() != null) {
                sap.setLayer2Font(new Font(FontUtils.getL2BaseFont(), options.getL2TextFontSize()));
            }
            LOGGER.info(RES.get("console.setL4Text"));
            sap.setLayer4Text(options.getL4Text());
            LOGGER.info(RES.get("console.setRender"));
            RenderMode renderMode = options.getRenderMode();
            if (renderMode == RenderMode.GRAPHIC_AND_DESCRIPTION && sap.getSignatureGraphic() == null) {
                LOGGER.warn(
                        "Render mode of visible signature is set to GRAPHIC_AND_DESCRIPTION, but no image is loaded. Fallback to DESCRIPTION_ONLY.");
                LOGGER.info(RES.get("console.renderModeFallback"));
                renderMode = RenderMode.DESCRIPTION_ONLY;
            }
            sap.setRender(renderMode.getRender());
            LOGGER.info(RES.get("console.setVisibleSignature"));
            int page = options.getPage();
            if (page < 1 || page > reader.getNumberOfPages()) {
                page = reader.getNumberOfPages();
            }
            sap.setVisibleSignature(new Rectangle(options.getPositionLLX(), options.getPositionLLY(),
                    options.getPositionURX(), options.getPositionURY()), page, null);
        }

        LOGGER.info(RES.get("console.processing"));
        final PdfSignature dic = new PdfSignature(PdfName.ADOBE_PPKLITE, new PdfName("adbe.pkcs7.detached"));
        if (!StringUtils.isEmpty(reason)) {
            dic.setReason(sap.getReason());
        }
        if (!StringUtils.isEmpty(location)) {
            dic.setLocation(sap.getLocation());
        }
        if (!StringUtils.isEmpty(contact)) {
            dic.setContact(sap.getContact());
        }
        dic.setDate(new PdfDate(sap.getSignDate()));
        sap.setCryptoDictionary(dic);

        final Proxy tmpProxy = options.createProxy();

        final CRLInfo crlInfo = new CRLInfo(options, chain);

        // CRLs are stored twice in PDF c.f.
        // PdfPKCS7.getAuthenticatedAttributeBytes
        final int contentEstimated = (int) (Constants.DEFVAL_SIG_SIZE + 2L * crlInfo.getByteCount());
        final Map<PdfName, Integer> exc = new HashMap<PdfName, Integer>();
        exc.put(PdfName.CONTENTS, new Integer(contentEstimated * 2 + 2));
        sap.preClose(exc);

        PdfPKCS7 sgn = new PdfPKCS7(key, chain, crlInfo.getCrls(), hashAlgorithm.getAlgorithmName(), null,
                false);
        InputStream data = sap.getRangeStream();
        final MessageDigest messageDigest = MessageDigest.getInstance(hashAlgorithm.getAlgorithmName());
        byte buf[] = new byte[8192];
        int n;
        while ((n = data.read(buf)) > 0) {
            messageDigest.update(buf, 0, n);
        }
        byte hash[] = messageDigest.digest();
        Calendar cal = Calendar.getInstance();
        byte[] ocsp = null;
        if (options.isOcspEnabledX() && chain.length >= 2) {
            LOGGER.info(RES.get("console.getOCSPURL"));
            String url = PdfPKCS7.getOCSPURL((X509Certificate) chain[0]);
            if (StringUtils.isEmpty(url)) {
                // get from options
                LOGGER.info(RES.get("console.noOCSPURL"));
                url = options.getOcspServerUrl();
            }
            if (!StringUtils.isEmpty(url)) {
                LOGGER.info(RES.get("console.readingOCSP", url));
                final OcspClientBouncyCastle ocspClient = new OcspClientBouncyCastle((X509Certificate) chain[0],
                        (X509Certificate) chain[1], url);
                ocspClient.setProxy(tmpProxy);
                ocsp = ocspClient.getEncoded();
            }
        }
        byte sh[] = sgn.getAuthenticatedAttributeBytes(hash, cal, ocsp);
        sgn.update(sh, 0, sh.length);

        TSAClientBouncyCastle tsc = null;
        if (options.isTimestampX() && !StringUtils.isEmpty(options.getTsaUrl())) {
            LOGGER.info(RES.get("console.creatingTsaClient"));
            if (options.getTsaServerAuthn() == ServerAuthentication.PASSWORD) {
                tsc = new TSAClientBouncyCastle(options.getTsaUrl(),
                        StringUtils.defaultString(options.getTsaUser()),
                        StringUtils.defaultString(options.getTsaPasswd()));
            } else {
                tsc = new TSAClientBouncyCastle(options.getTsaUrl());

            }
            final String tsaHashAlg = options.getTsaHashAlgWithFallback();
            LOGGER.info(RES.get("console.settingTsaHashAlg", tsaHashAlg));
            tsc.setHashAlgorithm(tsaHashAlg);
            tsc.setProxy(tmpProxy);
            final String policyOid = options.getTsaPolicy();
            if (StringUtils.isNotEmpty(policyOid)) {
                LOGGER.info(RES.get("console.settingTsaPolicy", policyOid));
                tsc.setPolicy(policyOid);
            }
        }
        byte[] encodedSig = sgn.getEncodedPKCS7(hash, cal, tsc, ocsp);

        if (contentEstimated + 2 < encodedSig.length) {
            System.err.println(
                    "SigSize - contentEstimated=" + contentEstimated + ", sigLen=" + encodedSig.length);
            throw new Exception("Not enough space");
        }

        byte[] paddedSig = new byte[contentEstimated];
        System.arraycopy(encodedSig, 0, paddedSig, 0, encodedSig.length);

        PdfDictionary dic2 = new PdfDictionary();
        dic2.put(PdfName.CONTENTS, new PdfString(paddedSig).setHexWriting(true));
        LOGGER.info(RES.get("console.closeStream"));
        sap.close(dic2);
        fout.close();
        fout = null;
        finished = true;
    } catch (Exception e) {
        LOGGER.error(RES.get("console.exception"), e);
    } catch (OutOfMemoryError e) {
        LOGGER.fatal(RES.get("console.memoryError"), e);
    } finally {
        if (fout != null) {
            try {
                fout.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        LOGGER.info(RES.get("console.finished." + (finished ? "ok" : "error")));
        options.fireSignerFinishedEvent(tmpException);
    }
    return finished;
}

From source file:open.dolphin.hiro.PrescriptionPDFMaker.java

/**
 * ??/*from  w w  w .  j a v a 2s. c o  m*/
 */
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);
        // @002 2009/11/17 
        // ?PDF????????
        if (getDocumentDir() == null) {
            StringBuilder sb = new StringBuilder();
            sb.append(System.getProperty("user.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(FILE_NAME_PRE);
        sb.append(patientId).append("_").append(name).append("_");
        sb.append(new SimpleDateFormat("yyyyMMddHHmmss").format(dateNow));
        sb.append(FILE_EXTENTION);
        setFileName(sb.toString());

        sb = new StringBuilder();
        if (getDocumentDir() != null) {
            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()) {
        if (!Project.isTester()) {
            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 pathToPDF;

    } 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();
        }
    }
}

From source file:open.dolphin.msg.ServerPrescriptionPDFMaker.java

/**
 * ??// www.j a va2  s.  com
 */
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();
        }
    }
}

From source file:org.areasy.common.doclet.document.tags.TagUL.java

License:Open Source License

public Element[] openTagElements() {
    Font symbolFont = new Font(Font.UNDEFINED, getFont().size());
    list.setListSymbol(new Chunk(BULLET, symbolFont));
    list.setIndentationLeft(12);// www  .j a  v a  2s.com

    Element[] elements = new Element[1];
    elements[0] = new Paragraph(" ", getFont());
    return elements;
}

From source file:org.goodoldai.jeff.report.pdf.PDFReportBuilder.java

License:Open Source License

/**
 * This method inserts the header into the PDF report. The header consists 
 * of general data collected from the explanation (date and time created, 
 * owner, title, language and country). If any of this data is missing, it is not
 * inserted into the report. Since the report format is PDF, the provided 
 * stream should be an instance of com.lowagie.text.Document.
 * /*from  w ww.j a  v  a  2  s  . c  om*/
 * @param explanation explanation from which the header data is to be
 * collected
 * @param stream output stream that the header is supposed to be inserted
 * into
 * 
 * @throws org.goodoldai.jeff.explanation.ExplanationException if any of the arguments are
 * null or if the entered output stream type is not com.lowagie.text.Document
 */
protected void insertHeader(Explanation explanation, Object stream) {
    if (explanation == null) {
        throw new ExplanationException("The argument 'explanation' is mandatory, so it can not be null");
    }

    if (stream == null) {
        throw new ExplanationException("The argument 'stream' is mandatory, so it can not be null");
    }

    if (!(stream instanceof Document)) {
        throw new ExplanationException("The entered stream must be a com.lowagie.text.Document instance");
    }

    Document doc = (Document) stream;

    String owner = explanation.getOwner();
    String title = explanation.getTitle();

    doc.addCreator("JEFF (Java Explanation Facility Framework)");
    doc.addAuthor(owner + " [OWNER]");
    doc.addCreationDate();

    if (title != null) {
        try {
            Phrase p = new Phrase(title, new Font(Font.HELVETICA, 16));
            Paragraph pa = new Paragraph(p);
            pa.setSpacingBefore(10);
            pa.setSpacingAfter(30);
            pa.setAlignment(Element.ALIGN_CENTER);
            doc.add(pa);
        } catch (DocumentException ex) {
            throw new ExplanationException(ex.getMessage());
        }
    }

}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

@Override
public void export(GTDModel model, ActionsCollection collection, OutputStream out,
        ExportAddOn.ExportOrder order, FileFilter ff, boolean compact) throws Exception {

    fontSelector = new FontSelector();
    fontSelectorB = new FontSelector();
    fontSelectorB2 = new FontSelector();
    fontSelectorB4 = new FontSelector();

    baseFont = fontModel.getBaseFont();//from ww  w.jav  a2  s. c om

    for (BaseFont bf : fontModel.getFonts()) {
        fontSelector.addFont(new Font(bf, baseFontSize));
        fontSelectorB.addFont(new Font(bf, baseFontSize, Font.BOLD));
        fontSelectorB2.addFont(new Font(bf, baseFontSize + 2, Font.BOLD));
        fontSelectorB4.addFont(new Font(bf, baseFontSize + 4, Font.BOLD));
    }

    boolean emptyH2 = false;
    boolean emptyH3 = false;

    PdfPTable actionTable = null;

    Document doc = new Document();

    if (sizeSet) {
        doc.setPageSize(pageSize);
    }
    if (marginSet) {
        doc.setMargins(marginLeft, marginRight, marginTop, marginBottom);
    }

    //System.out.println("PDF size "+doc.getPageSize().toString());
    //System.out.println("PDF m "+marginLeft+" "+marginRight+" "+marginTop+" "+marginBottom);

    @SuppressWarnings("unused")
    PdfWriter pw = PdfWriter.getInstance(doc, out);

    doc.addCreationDate();
    doc.addTitle("GTD-Free PDF");
    doc.addSubject("GTD-Free data exported as PDF");

    HeaderFooter footer = new HeaderFooter(newParagraph(), true);
    footer.setAlignment(HeaderFooter.ALIGN_CENTER);
    footer.setBorder(HeaderFooter.TOP);
    doc.setFooter(footer);

    doc.open();

    Phrase ch = newTitle("GTD-Free Data");
    Paragraph p = new Paragraph(ch);
    p.setAlignment(Paragraph.ALIGN_CENTER);

    PdfPTable t = new PdfPTable(1);
    t.setWidthPercentage(100f);
    PdfPCell c = newCell(p);
    c.setBorder(Table.BOTTOM);
    c.setBorderWidth(2.5f);
    c.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
    c.setPadding(5f);
    t.addCell(c);
    doc.add(t);

    Iterator<Object> it = collection.iterator(order);

    while (it.hasNext()) {
        Object o = it.next();

        if (o == ActionsCollection.ACTIONS_WITHOUT_PROJECT) {

            if (order == ExportAddOn.ExportOrder.FoldersProjectsActions) {

                doc.add(newSubSection(ActionsCollection.ACTIONS_WITHOUT_PROJECT));

                emptyH2 = false;
                emptyH3 = true;
            } else {

                doc.add(newSection(ActionsCollection.ACTIONS_WITHOUT_PROJECT));

                emptyH2 = true;
                emptyH3 = false;
            }

            continue;
        }

        if (o instanceof Folder) {

            Folder f = (Folder) o;

            if (actionTable != null) {
                doc.add(actionTable);
                actionTable = null;
            }

            if (f.isProject()) {

                if (order == ExportAddOn.ExportOrder.ProjectsActions
                        || order == ExportAddOn.ExportOrder.ProjectsFoldersActions) {

                    if (emptyH2 || emptyH3) {
                        p = newParagraph(NONE_DOT);
                        doc.add(p);
                    }

                    doc.add(newSection(f.getName()));

                    if (compact) {
                        if (f.getDescription() != null && f.getDescription().length() > 0) {
                            p = newParagraph(f.getDescription());
                            p.setIndentationLeft(10f);
                            p.setIndentationRight(10f);
                            doc.add(p);
                        }
                    } else {
                        t = new PdfPTable(2);
                        t.setKeepTogether(true);
                        t.setSpacingBefore(5f);
                        t.setWidthPercentage(66f);
                        t.setWidths(new float[] { 0.33f, 0.66f });

                        c = newCell("ID");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.getId())));
                        t.addCell(c);
                        c = newCell("Type");
                        t.addCell(c);
                        c = newCell(newStrongParagraph("Project"));
                        t.addCell(c);
                        c = newCell("Open");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.getOpenCount())));
                        t.addCell(c);
                        c = newCell("All");
                        t.addCell(c);
                        c = newCell(newStrongParagraph(String.valueOf(f.size())));
                        t.addCell(c);
                        c = newCell("Description");
                        t.addCell(c);
                        c = newDescriptionCell(f.getDescription());
                        t.addCell(c);

                        doc.add(t);
                    }

                    emptyH2 = true;
                    emptyH3 = false;

                } else {

                    if (emptyH3) {
                        p = newParagraph(NONE_DOT);
                        doc.add(p);
                    }

                    doc.add(newSubSection("Project:" + " " + f.getName()));

                    emptyH2 = false;
                    emptyH3 = true;
                }

                continue;

            }
            if (order == ExportAddOn.ExportOrder.FoldersActions
                    || order == ExportAddOn.ExportOrder.FoldersProjectsActions) {

                if (emptyH2 || emptyH3) {
                    p = newParagraph(NONE_DOT);
                    doc.add(p);
                }

                doc.add(newSection(f.getName()));

                if (compact) {
                    if (f.getDescription() != null && f.getDescription().length() > 0) {
                        p = newParagraph(f.getDescription());
                        p.setIndentationLeft(10f);
                        p.setIndentationRight(10f);
                        doc.add(p);
                    }
                } else {

                    t = new PdfPTable(2);
                    t.setKeepTogether(true);
                    t.setSpacingBefore(5f);
                    t.setWidthPercentage(66f);
                    t.setWidths(new float[] { 0.33f, 0.66f });

                    c = newCell("ID");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.getId())));
                    t.addCell(c);

                    String type = "";
                    if (f.isAction()) {
                        type = "Action list";
                    } else if (f.isInBucket()) {
                        type = "In-Bucket";
                    } else if (f.isQueue()) {
                        type = "Next action queue";
                    } else if (f.isReference()) {
                        type = "Reference list";
                    } else if (f.isSomeday()) {
                        type = "Someday/Maybe list";
                    } else if (f.isBuildIn()) {
                        type = "Default list";
                    }

                    c = newCell("Type");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(type));
                    t.addCell(c);
                    c = newCell("Open");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.getOpenCount())));
                    t.addCell(c);
                    c = newCell("All");
                    t.addCell(c);
                    c = newCell(newStrongParagraph(String.valueOf(f.size())));
                    t.addCell(c);
                    c = newCell("Description");
                    t.addCell(c);
                    c = newDescriptionCell(f.getDescription());
                    t.addCell(c);

                    doc.add(t);
                }

                emptyH2 = true;
                emptyH3 = false;

            } else {

                if (emptyH3) {
                    p = newParagraph(NONE_DOT);
                    doc.add(p);
                }

                doc.add(newSubSection("List:" + " " + f.getName()));

                emptyH2 = false;
                emptyH3 = true;

            }

            continue;

        }

        if (o instanceof Action) {
            emptyH2 = false;
            emptyH3 = false;

            Action a = (Action) o;

            if (compact) {

                if (actionTable == null) {
                    actionTable = new PdfPTable(5);
                    actionTable.setWidthPercentage(100f);
                    actionTable.setHeaderRows(1);
                    actionTable.setSpacingBefore(5f);
                    c = newHeaderCell("ID");
                    actionTable.addCell(c);
                    c = newHeaderCell("Pri.");
                    actionTable.addCell(c);
                    c = newHeaderCell("Description");
                    actionTable.addCell(c);
                    c = newHeaderCell("Reminder");
                    actionTable.addCell(c);
                    c = newHeaderCell(CHECK_RESOLVED);
                    actionTable.addCell(c);

                    float width = doc.getPageSize().getWidth() - doc.getPageSize().getBorderWidthLeft()
                            - doc.getPageSize().getBorderWidthRight();
                    int i = model.getLastActionID();
                    float step = baseFontSize - 1;
                    int steps = (int) Math.floor(Math.log10(i)) + 1;
                    // ID column
                    float col1 = 8 + steps * step;
                    // Priority column
                    float col2 = 4 + 3 * (baseFontSize + 4);
                    // Reminder column
                    float col4 = 10 + step * 11;
                    // Resolved column
                    float col5 = 8 + baseFontSize;
                    // Description column
                    float col3 = width - col1 - col2 - col4 - col5;
                    actionTable.setWidths(new float[] { col1, col2, col3, col4, col5 });

                }

                addSingleActionRow(a, actionTable);

            } else {
                addSingleActionTable(model, doc, a);
            }
        }

    }

    if (actionTable != null) {
        doc.add(actionTable);
        actionTable = null;
    }
    if (emptyH2 || emptyH3) {

        p = newParagraph(NONE_DOT);
        doc.add(p);
    }

    //w.writeCharacters("Exported: "+ApplicationHelper.toISODateTimeString(new Date()));

    doc.close();
}

From source file:org.gtdfree.addons.PDFExportAddOn.java

License:Open Source License

private Font newFont() throws DocumentException, IOException {
    return new Font(baseFont, baseFontSize);
}

From source file:org.revager.export.InvitationPDFExporter.java

License:Open Source License

/**
 * Write the title page of the PDF document.
 * //from w  w w  .  ja v a  2s . co m
 * @throws ExportException
 *             If an error occurs while creating the title page
 */
private void writeTitlePage() throws ExportException {
    try {
        Font plainFontTitle = new Font(
                BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 12);

        Font boldFontTitle = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 12);

        Font boldItalicFontTitle = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 12);

        Font plainFont = new Font(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED),
                10);

        Font boldFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font boldItalicFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_BOLDOBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font italicFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font italicFontSmall = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 9);

        Phrase phraseStrut = new Phrase(" ");
        phraseStrut.setLeading(leading);

        /*
         * date and time of the meeting
         */
        String meetingDate = sdfDate.format(meeting.getPlannedDate().getTime());

        String meetingTime = sdfTime.format(meeting.getPlannedStart().getTime()) + " - "
                + sdfTime.format(meeting.getPlannedEnd().getTime()) + " ["
                + meeting.getPlannedEnd().getTimeZone().getDisplayName() + "]";
        ;

        /*
         * Base table
         */
        PdfPTable table = new PdfPTable(new float[] { 0.04f, 0.96f });
        table.setWidthPercentage(100);
        table.setSplitRows(false);
        table.getDefaultCell().setBorderWidth(0);
        table.getDefaultCell().setPadding(0);

        /*
         * recipient of the invitation
         */
        PdfPCell cell = new PdfPCell();
        cell.setBorder(0);
        cell.setColspan(2);
        cell.setPadding(padding);

        cell.addElement(phraseStrut);

        PdfPTable tableRecipient = new PdfPTable(2);
        tableRecipient.setWidthPercentage(100);
        tableRecipient.setSplitRows(false);
        tableRecipient.getDefaultCell().setBorderWidth(0);
        tableRecipient.getDefaultCell().setPadding(0);

        PdfPCell cellRecipient = new PdfPCell();
        cellRecipient.setBorder(0);
        cellRecipient.setPadding(0);
        cellRecipient.addElement(new Phrase(translate("To:"), plainFontTitle));
        cellRecipient.addElement(new Phrase(attendee.getName(), boldFontTitle));

        tableRecipient.addCell(cellRecipient);

        PdfPCell cellDate = new PdfPCell(new Phrase(sdfDate.format(new Date().getTime()), plainFont));
        cellDate.setHorizontalAlignment(Element.ALIGN_RIGHT);
        cellDate.setBorder(0);
        cellDate.setPadding(0);
        cellDate.setPaddingTop(7);

        tableRecipient.addCell(cellDate);

        cell.addElement(tableRecipient);

        cell.addElement(phraseStrut);
        cell.addElement(phraseStrut);
        cell.addElement(phraseStrut);

        /*
         * subject
         */
        cell.addElement(new Phrase(translate("Invitation for the Meeting on") + " " + meetingDate,
                boldItalicFontTitle));

        cell.addElement(phraseStrut);

        /*
         * invitation text
         */
        Phrase phrase = new Phrase(
                Data.getInstance().getAppData().getSetting(AppSettingKey.PDF_INVITATION_TEXT), plainFont);
        phrase.setLeading(leading);

        cell.addElement(phrase);

        cell.addElement(phraseStrut);

        table.addCell(cell);

        /*
         * meeting date, time and location
         */
        cell = new PdfPCell(new Phrase(meetingDate, boldItalicFont));
        cell.setBorder(0);
        cell.setColspan(2);
        cell.setPadding(padding);
        cell.setPaddingBottom(0);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);

        table.addCell(cell);

        cell = new PdfPCell(new Phrase(meetingTime, italicFont));
        cell.setBorder(0);
        cell.setColspan(2);
        cell.setPadding(padding);
        cell.setPaddingBottom(0);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);

        table.addCell(cell);

        if (!meeting.getPlannedLocation().equals("")) {
            cell = new PdfPCell(
                    new Phrase(translate("Location") + ": " + meeting.getPlannedLocation(), italicFont));
            cell.setBorder(0);
            cell.setColspan(2);
            cell.setPadding(padding);
            cell.setPaddingBottom(0);
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);

            table.addCell(cell);
        }

        /*
         * role; review title and description
         */
        cell = new PdfPCell();
        cell.setBorder(0);
        cell.setColspan(2);
        cell.setPadding(padding);

        cell.addElement(phraseStrut);
        cell.addElement(phraseStrut);

        phrase = new Phrase();
        phrase.setLeading(leading);
        phrase.add(new Chunk(MessageFormat.format(translate("You are invited as {0} to this review ({1})."),
                translate(attendee.getRole().toString()), getReviewTitle()), boldFont));

        cell.addElement(phrase);

        cell.addElement(phraseStrut);

        cell.addElement(new Phrase(resiData.getReview().getDescription(), italicFont));

        cell.addElement(phraseStrut);

        /*
         * Predecessor meeting
         */
        if (meetMgmt.getPredecessorMeeting(meeting) != null) {
            String preMeetingDate = sdfDate
                    .format(meetMgmt.getPredecessorMeeting(meeting).getProtocol().getDate().getTime());

            cell.addElement(new Phrase(MessageFormat
                    .format(translate("This meeting ties up to the review meeting of {0}."), preMeetingDate),
                    plainFont));

            cell.addElement(phraseStrut);
        }

        /*
         * If there is a product name defined
         */
        if (!Data.getInstance().getResiData().getReview().getProduct().getName().trim().equals("")) {
            /*
             * the product of this review
             */
            cell.addElement(new Phrase(translate("The following product will be reviewed:"), plainFont));
            cell.addElement(phraseStrut);

            table.addCell(cell);

            /*
             * Write name and version of the reviewed product
             */
            Phrase phrName = new Phrase(Data.getInstance().getResiData().getReview().getProduct().getName(),
                    boldItalicFont);
            phrName.setLeading(leading);

            PdfPCell cellName = new PdfPCell(phrName);
            cellName.setColspan(2);
            cellName.setBorderWidth(0);
            cellName.setPadding(padding);
            cellName.setPaddingBottom(0);
            cellName.setHorizontalAlignment(Element.ALIGN_CENTER);

            table.addCell(cellName);

            /*
             * If there is a product version defined
             */
            if (!Data.getInstance().getResiData().getReview().getProduct().getVersion().trim().equals("")) {
                Phrase phrVersion = new Phrase(
                        translate("Product Version") + ": "
                                + Data.getInstance().getResiData().getReview().getProduct().getVersion(),
                        italicFont);
                phrVersion.setLeading(leading);

                PdfPCell cellVersion = new PdfPCell(phrVersion);
                cellVersion.setColspan(2);
                cellVersion.setBorderWidth(0);
                cellVersion.setPadding(padding);
                cellVersion.setPaddingBottom(0);
                cellVersion.setHorizontalAlignment(Element.ALIGN_CENTER);

                table.addCell(cellVersion);
            }

            table.addCell(createVerticalStrut(PDFTools.cmToPt(0.7f), 2));
        } else {
            table.addCell(cell);
        }

        boolean showBottomStrut = false;

        /*
         * List point used for lists
         */
        Phrase phraseListPoint = new Phrase("", boldFont);
        phraseListPoint.setLeading(leading);

        PdfPCell cellListPoint = new PdfPCell();
        cellListPoint.addElement(phraseListPoint);
        cellListPoint.setBorderWidth(0);
        cellListPoint.setPadding(padding);
        cellListPoint.setPaddingLeft(padding * 2);
        cellListPoint.setPaddingBottom(0);

        /*
         * Textual references
         */
        for (String ref : Application.getInstance().getReviewMgmt().getProductReferences()) {
            Phrase phraseRef = new Phrase(ref, italicFontSmall);
            phraseRef.setLeading(leading);

            PdfPCell cellRef = new PdfPCell();
            cellRef.addElement(phraseRef);
            cellRef.setBorderWidth(0);
            cellRef.setPadding(padding);
            cellRef.setPaddingBottom(0);

            table.addCell(cellListPoint);

            table.addCell(cellRef);

            showBottomStrut = true;
        }

        /*
         * External file references
         */
        for (File ref : Application.getInstance().getReviewMgmt().getExtProdReferences()) {
            Phrase phraseRef = new Phrase();
            phraseRef.add(new Chunk(ref.getName(), italicFontSmall));
            phraseRef.add(new Chunk(" (" + translate("File Attachment") + ")", italicFontSmall));
            phraseRef.setFont(plainFont);
            phraseRef.setLeading(leading);

            PdfPCell cellRef = new PdfPCell();
            cellRef.addElement(phraseRef);
            cellRef.setBorderWidth(0);
            cellRef.setPadding(padding);
            cellRef.setPaddingBottom(0);

            table.addCell(cellListPoint);

            if (attachProdExtRefs) {
                cellRef.setCellEvent(new PDFCellEventExtRef(pdfWriter, ref));
            }

            table.addCell(cellRef);

            showBottomStrut = true;
        }

        if (showBottomStrut) {
            table.addCell(createVerticalStrut(PDFTools.cmToPt(0.4f), 2));
        }

        /*
         * "please prepare" for the reviwers; on questions ask moderators
         */
        cell = new PdfPCell();
        cell.setBorder(0);
        cell.setColspan(2);
        cell.setPadding(padding);

        phrase = new Phrase();
        phrase.setLeading(leading);

        if (attendee.getAspects() != null) {
            phrase.add(new Chunk(translate(
                    "Please prepare for the review meeting by checking the product for the aspects which are associated to you.")
                    + " ", plainFont));
        }

        List<Attendee> moderators = new ArrayList<Attendee>();
        for (Attendee a : Application.getInstance().getAttendeeMgmt().getAttendees()) {
            if (a.getRole() == Role.MODERATOR) {
                moderators.add(a);
            }
        }

        if (moderators.size() == 1 && attendee.getRole() != Role.MODERATOR) {
            phrase.add(new Chunk(translate(
                    "Please do not hesitate to contact the review moderator if you have any questions:") + " ",
                    plainFont));
        } else if (moderators.size() > 1 && attendee.getRole() != Role.MODERATOR) {
            phrase.add(new Chunk(translate(
                    "Please do not hesitate to contact one of the review moderators if you have any questions:")
                    + " ", plainFont));
        }

        cell.addElement(phrase);

        Phrase phraseStrutSmall = new Phrase(" ");
        phraseStrutSmall.setLeading(leading / 2);

        if (moderators.size() > 0 && attendee.getRole() != Role.MODERATOR) {
            for (Attendee mod : moderators) {
                cell.addElement(phraseStrutSmall);
                cell.addElement(new Phrase(mod.getName(), boldFont));
                cell.addElement(new Phrase(mod.getContact(), italicFont));
            }
        }

        table.addCell(cell);

        pdfDoc.add(table);
    } catch (Exception e) {
        /*
         * Not part of unit testing because this exception is only thrown if
         * an internal error occurs.
         */
        throw new ExportException(translate("Cannot generate front page of the PDF document."));
    }
}

From source file:org.revager.export.InvitationPDFExporter.java

License:Open Source License

/**
 * Write the aspects.//from  w w  w . j  a  v a2s. c  o  m
 * 
 * @throws ExportException
 *             If an error occurs while writing the aspects
 */
private void writeAspects() throws ExportException {
    /*
     * If the role of the attendee is not reviewer show all aspects
     */
    List<Aspect> aspects = null;

    if (attendee.getRole() == Role.REVIEWER) {
        aspects = attMgmt.getAspects(attendee);
    } else {
        aspects = aspMgmt.getAspects();
    }

    if (aspects.size() == 0) {
        return;
    }

    try {
        Font descriptionFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font directiveFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font categoryFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 10);

        Font reviewerFont = new Font(
                BaseFont.createFont(BaseFont.HELVETICA_OBLIQUE, BaseFont.CP1252, BaseFont.EMBEDDED), 9);

        /*
         * Build base table for all attendees
         */
        PdfPTable tableAspects = new PdfPTable(1);
        tableAspects.setWidthPercentage(100);
        tableAspects.setSplitRows(false);
        tableAspects.getDefaultCell().setBorderWidth(0);
        tableAspects.getDefaultCell().setPadding(0);

        boolean grayBackground = true;

        for (Aspect asp : aspects) {
            /*
             * Build table for one aspect
             */
            PdfPTable tableAspect = new PdfPTable(new float[] { 0.70f, 0.30f });
            tableAspect.setWidthPercentage(100);
            tableAspect.getDefaultCell().setBorderWidth(0);
            tableAspect.getDefaultCell().setPadding(0);

            PdfPCell cellAspect = new PdfPCell();
            cellAspect.setPadding(0);
            cellAspect.setBorder(0);

            Phrase phraseStrut = new Phrase(" ");
            phraseStrut.setLeading(leading * 0.4f);

            /*
             * directive and description of the aspect
             */
            PdfPCell cell = new PdfPCell();
            cell.setBorderWidth(0);
            cell.setPadding(padding * 0.4f);
            cell.setPaddingBottom(padding * 1.5f);
            cell.addElement(new Phrase(asp.getDirective(), directiveFont));
            cell.addElement(phraseStrut);
            cell.addElement(new Phrase(asp.getDescription(), descriptionFont));

            /*
             * the reviewers of this aspect (moderator only)
             */
            if (attendee.getRole() == Role.MODERATOR) {
                cell.addElement(phraseStrut);
                cell.addElement(phraseStrut);

                String separator = "";

                Phrase phraseReviewers = new Phrase();
                phraseReviewers.setLeading(leading);
                phraseReviewers.setFont(reviewerFont);

                for (Attendee att : attMgmt.getAttendees()) {
                    if (attMgmt.hasAspect(asp, att)) {
                        phraseReviewers.add(new Chunk(separator + att.getName(), reviewerFont));

                        separator = "    ";
                    }
                }

                cell.addElement(phraseReviewers);
            }

            tableAspect.addCell(cell);

            /*
             * category of the aspect
             */
            cell = new PdfPCell(new Phrase(asp.getCategory(), categoryFont));
            cell.setBorderWidth(0);
            cell.setPadding(padding * 0.4f);
            cell.setPaddingTop(padding * 1.1f);
            cell.setHorizontalAlignment(Element.ALIGN_RIGHT);

            tableAspect.addCell(cell);

            cellAspect.addElement(tableAspect);
            cellAspect.setPadding(0);
            cellAspect.setPaddingLeft(padding);
            cellAspect.setPaddingRight(padding);

            if (grayBackground == true) {
                grayBackground = false;
                cellAspect.setBackgroundColor(cellBackground);
            } else {
                grayBackground = true;
            }

            /*
             * Add aspect to the list
             */
            tableAspects.addCell(cellAspect);
        }

        PdfPCell cellBottomLine = new PdfPCell();
        cellBottomLine.setPadding(0);
        cellBottomLine.setBorderWidth(0);
        cellBottomLine.setBorderWidthBottom(1);
        cellBottomLine.setBorderColor(cellBackground);

        tableAspects.addCell(cellBottomLine);

        /*
         * Add the attendee base table to the document
         */
        pdfDoc.add(tableAspects);
    } catch (Exception e) {
        /*
         * Not part of unit testing because this exception is only thrown if
         * an internal error occurs.
         */
        throw new ExportException(translate("Cannot put aspects into the PDF document."));
    }
}