Example usage for com.lowagie.text Document Document

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

Introduction

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

Prototype


public Document(Rectangle pageSize, float marginLeft, float marginRight, float marginTop, float marginBottom) 

Source Link

Document

Constructs a new Document -object.

Usage

From source file:com.krawler.spring.exportFunctionality.exportMPXDAOImpl.java

License:Open Source License

public ByteArrayOutputStream getPdfData(JSONObject grid, HttpServletRequest request, JSONObject obj)
        throws ServiceException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter writer = null;/*from  w  ww  . j  ava2s  .  com*/
    Document document = null;
    try {
        JSONArray gridmap = grid == null ? null : grid.getJSONArray("data");
        String colHeader = "";
        String colHeaderFinal = "";
        String fieldListFinal = "";
        String fieldList = "";
        String width = "";
        String align = "";
        String alignFinal = "";
        String widthFinal = "";
        String colHeaderArrStr[] = null;
        String dataIndexArrStr[] = null;
        String widthArrStr[] = null;
        String alignArrStr[] = null;
        int strLength = 0;
        float totalWidth = 0;

        config = new com.krawler.utils.json.base.JSONObject(request.getParameter("config"));
        document = null;
        Rectangle rec = null;
        if (config.getBoolean("landscape")) {
            Rectangle recPage = new Rectangle(PageSize.A4.rotate());
            recPage.setBackgroundColor(new java.awt.Color(Integer.parseInt(config.getString("bgColor"), 16)));
            document = new Document(recPage, 15, 15, 30, 30);
            rec = document.getPageSize();
            totalWidth = rec.getWidth();
        } else {
            Rectangle recPage = new Rectangle(PageSize.A4);
            recPage.setBackgroundColor(new java.awt.Color(Integer.parseInt(config.getString("bgColor"), 16)));
            document = new Document(recPage, 15, 15, 30, 30);
            rec = document.getPageSize();
            totalWidth = rec.getWidth();
        }

        writer = PdfWriter.getInstance(document, baos);
        writer.setPageEvent(new EndPage());
        document.open();
        if (config.getBoolean("showLogo")) {
            addComponyLogo(document, request);
        }

        addTitleSubtitle(document);

        if (gridmap != null) {
            int givenTotalWidth = 0;
            for (int i = 0; i < gridmap.length(); i++) {
                JSONObject temp = gridmap.getJSONObject(i);
                givenTotalWidth += Integer.parseInt(temp.getString("width"));
            }
            double widthRatio = 1;
            if (givenTotalWidth > (totalWidth - 40.00)) {
                widthRatio = (totalWidth - 40.00) / givenTotalWidth; // 40.00 is left + right + table margin [15+15+10] margins of documents
            }
            for (int i = 0; i < gridmap.length(); i++) {
                JSONObject temp = gridmap.getJSONObject(i);
                colHeader += StringUtil.serverHTMLStripper(temp.getString("title"));
                if (colHeader.indexOf("*") != -1) {
                    colHeader = colHeader.substring(0, colHeader.indexOf("*") - 1) + ",";
                } else {
                    colHeader += ",";
                }
                fieldList += temp.getString("header") + ",";
                if (!config.getBoolean("landscape")) {
                    int totalWidth1 = (int) ((totalWidth / gridmap.length()) - 5.00);
                    width += "" + totalWidth1 + ","; //resize according to page view[potrait]
                } else {
                    double adjustedWidth = (Integer.parseInt(temp.getString("width")) * widthRatio);
                    width += ((int) Math.floor(adjustedWidth)) + ",";
                }
                if (temp.getString("align").equals("")) {
                    align += "none" + ",";
                } else {
                    align += temp.getString("align") + ",";
                }
            }
            strLength = colHeader.length() - 1;
            colHeaderFinal = colHeader.substring(0, strLength);
            strLength = fieldList.length() - 1;
            fieldListFinal = fieldList.substring(0, strLength);
            strLength = width.length() - 1;
            widthFinal = width.substring(0, strLength);
            strLength = align.length() - 1;
            alignFinal = align.substring(0, strLength);
            colHeaderArrStr = colHeaderFinal.split(",");
            dataIndexArrStr = fieldListFinal.split(",");
            widthArrStr = widthFinal.split(",");
            alignArrStr = alignFinal.split(",");
        } else {
            fieldList = request.getParameter("header");
            colHeader = request.getParameter("title");
            width = request.getParameter("width");
            align = request.getParameter("align");
            colHeaderArrStr = colHeader.split(",");
            dataIndexArrStr = fieldList.split(",");
            widthArrStr = width.split(",");
            alignArrStr = align.split(",");
        }

        JSONArray store = obj.getJSONArray("data");

        if (grid != null && grid.has("groupdata")) {
            JSONObject groupingConfig = grid.getJSONObject("groupdata");
            addGroupableTable(groupingConfig, 0, colHeaderArrStr.length, 0, store.length(), store,
                    dataIndexArrStr, colHeaderArrStr, widthArrStr, alignArrStr, document, request);
        } else {
            addTable(0, colHeaderArrStr.length, 0, store.length(), store, dataIndexArrStr, colHeaderArrStr,
                    widthArrStr, alignArrStr, document, request);
        }

    } catch (Exception e) {
        throw ServiceException.FAILURE("exportMPXDAOImpl.getPdfData", e);
    } finally {
        if (document != null) {
            document.close();
        }
        if (writer != null) {
            writer.close();
        }
    }
    return baos;
}

From source file:com.krawler.spring.hrms.exportreport.exportAppraisalReportPDFDAOImpl.java

License:Open Source License

private ByteArrayOutputStream AppraisalDetail(HttpServletRequest request, Session session, boolean isEmm,
        String str, String goalstr, String quesansstr)
        throws JSONException, SessionExpiredException, DocumentException, ServiceException, IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    String[] colHeader = {//from ww w .  j  a  va2s.  com
            messageSource.getMessage("hrms.common.employee.name", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.cycle.name", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.start.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.end.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.total.appraisals", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.common.Updates.NoofAppraisalsSubmitted", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.self.comments", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.appraiser.comments", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.competency.score", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.competencies", null,
                    RequestContextUtils.getLocale(request)) };
    String[] colHeader1 = {
            messageSource.getMessage("hrms.common.employee.name", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.cycle.name", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.start.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.end.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.total.appraisals", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.common.Updates.NoofAppraisalsSubmitted", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.appraiser.comments", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.competency.score", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.competencies", null,
                    RequestContextUtils.getLocale(request)) };
    String[] colHeader2 = {
            messageSource.getMessage("hrms.common.employee.name", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.cycle.name", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.start.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraisal.end.date", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.total.appraisals", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.common.Updates.NoofAppraisalsSubmitted", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.overall.competency.score", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.competencies", null,
                    RequestContextUtils.getLocale(request)) };
    String[] dataIndex = { "empname", "appcylename", "appcylestdate", "appcylendate", "totalappraisal",
            "appraisalsubmitted", "empcomment", "mancom", "manavgwght", "" };
    String[] dataIndex1 = { "empname", "appcylename", "appcylestdate", "appcylendate", "totalappraisal",
            "appraisalsubmitted", "mancom", "manavgwght", "" };
    String[] dataIndex2 = { "empname", "appcylename", "appcylestdate", "appcylendate", "totalappraisal",
            "appraisalsubmitted", "manavgwght", "" };
    String[] compHeader = {
            messageSource.getMessage("hrms.common.name", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.description", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.self.appraisal.score", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.self.appraisal.comment", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.competency.score", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.comments", null,
                    RequestContextUtils.getLocale(request)) };
    String[] compDataIndex = { "comptename", "comptdesc", "selfcompscore", "selfcomment", "compmanwght" };
    String[] compGoalHeader = {
            messageSource.getMessage("hrms.performance.goals", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.common.assigned.by", null, RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.rating", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.comment", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.self.rating", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.self.comments", null,
                    RequestContextUtils.getLocale(request)) };
    String[] compGoalDataIndex = { "gname", "assignedby", "gmanrat", "mangoalcomment", "gemprat",
            "empgoalcomment" };
    String[] quesAnsHeader1 = {
            messageSource.getMessage("hrms.performance.Questions", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.response", null,
                    RequestContextUtils.getLocale(request)) };
    String[] quesAnsHeader = {
            messageSource.getMessage("hrms.performance.Questions", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.appraiser.response", null,
                    RequestContextUtils.getLocale(request)),
            messageSource.getMessage("hrms.performance.self.response", null,
                    RequestContextUtils.getLocale(request)) };
    String[] quesAnsDataIndex = { hrmsAnonymousAppraisalConstants.question,
            hrmsAnonymousAppraisalConstants.answer, hrmsAnonymousAppraisalConstants.employeeanswer };
    String[] quesAnsDataIndex1 = { hrmsAnonymousAppraisalConstants.question,
            hrmsAnonymousAppraisalConstants.answer };
    String managerComments = "";
    String scoreAvg = "";
    String companyid = null;
    PdfWriter writer = null;
    try {
        String usID = request.getParameter("userid");
        String self = request.getParameter("self");
        Boolean removecolumn = false;
        if (!StringUtil.isNullOrEmpty(self) && self.equals("false")) {
            quesAnsHeader = quesAnsHeader1;
            quesAnsDataIndex = quesAnsDataIndex1;
            colHeader = colHeader1;
            dataIndex = dataIndex1;
            removecolumn = true;
        }

        if (StringUtil.isNullOrEmpty(usID)) {
            usID = sessionHandlerImplObj.getUserid(request);
        }
        if (StringUtil.isNullOrEmpty(request.getParameter("pdfEmail")))
            companyid = sessionHandlerImplObj.getCompanyid(request);
        else {
            User u = (User) hibernateTemplate.get(User.class, usID);
            companyid = u.getCompany().getCompanyID();
        }

        HashMap<String, Object> requestParams = new HashMap<String, Object>();
        //                companyid  = sessionHandlerImplObj.getCompanyid(request);

        requestParams.put("companyid", companyid);
        requestParams.put("checklink", "appraisal");
        if (!hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            quesAnsHeader = quesAnsHeader1;
            quesAnsDataIndex = quesAnsDataIndex1;
            colHeader = colHeader1;
            removecolumn = true;
        }
        requestParams.clear();
        requestParams.put("companyid", companyid);
        requestParams.put("checklink", "overallcomments");
        if (!hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            colHeader = colHeader2;
            dataIndex = dataIndex2;
        }

        requestParams.clear();
        Document document = new Document(PageSize.A4.rotate(), 25, 25, 25, 25);
        writer = PdfWriter.getInstance(document, baos);
        writer.setPageEvent(new EndPage());
        document.open();
        java.awt.Color tColor = new Color(9, 9, 9);
        //fontSmallBold.setColor(tColor);
        Paragraph p = new Paragraph();

        PdfPTable table = new PdfPTable(2);
        table.setWidthPercentage(100);
        table.setWidths(new float[] { 55, 75 });

        PdfPTable mainTable = new PdfPTable(1);
        mainTable.setTotalWidth(90);
        mainTable.setWidthPercentage(100);
        mainTable.setSpacingBefore(20);

        PdfPCell headcell = null;
        headcell = new PdfPCell(
                new Paragraph(fontFamilySelector.process(
                        messageSource.getMessage("hrms.performance.appraisal.details", null,
                                RequestContextUtils.getLocale(request)),
                        FontContext.REGULAR_BOLD_HELVETICA, tColor)));
        headcell.setBackgroundColor(new Color(0xEEEEEE));
        headcell.setPadding(5);
        mainTable.addCell(headcell);
        document.add(mainTable);

        //                String str=hrmsManager.getAppraisalReport(session, request);
        JSONObject jobjTemplate = new JSONObject(str);
        com.krawler.utils.json.base.JSONArray jarr = jobjTemplate.getJSONArray("data");
        com.krawler.utils.json.base.JSONArray jarr2 = jarr.getJSONObject(0).getJSONArray("data");
        JSONObject jobjAppraisal = new JSONObject(jarr2.getString(0));
        jarr = jobjAppraisal.getJSONArray("competencies");
        int headlen = colHeader.length;
        if (jarr.length() < 1) {
            headlen = headlen - 2;
        }

        for (int i = 0; i < headlen; i++) {
            PdfPCell pcell = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(colHeader[i], FontContext.MEDIUM_BOLD_HELVETICA)));
            pcell.setBorder(0);
            if (i == 0)
                pcell.setPaddingTop(10);
            pcell.setPaddingLeft(15);
            pcell.setPaddingBottom(4);
            pcell.setBorderColor(new Color(0xF2F2F2));
            pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell.setVerticalAlignment(Element.ALIGN_LEFT);
            table.addCell(pcell);

            if (!dataIndex[i].equals("mancom")) {
                pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(!dataIndex[i].equals("")
                        ? !jobjAppraisal.isNull(dataIndex[i]) ? jobjAppraisal.getString(dataIndex[i]) : ""
                        : "", FontContext.SMALL_NORMAL_HELVETICA)));
                if (i == 0)
                    pcell.setPaddingTop(10);
                pcell.setBorder(0);
                pcell.setPaddingLeft(10);
                pcell.setPaddingBottom(4);
                pcell.setBorderColor(new Color(0xF2F2F2));
                pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
                pcell.setVerticalAlignment(Element.ALIGN_LEFT);
                table.addCell(pcell);
            } else {
                if (!jobjAppraisal.isNull(dataIndex[i])) {
                    JSONArray spl = new JSONArray(jobjAppraisal.getString(dataIndex[i]));
                    String strData = "";
                    for (int counter = 0; counter < spl.length(); counter++) {
                        strData += spl.getString(counter) + "\n";
                    }
                    pcell = new PdfPCell(new Paragraph(
                            fontFamilySelector.process(strData, FontContext.SMALL_NORMAL_HELVETICA)));
                    if (i == 0)
                        pcell.setPaddingTop(10);
                    pcell.setBorder(0);
                    pcell.setPaddingLeft(10);
                    pcell.setPaddingBottom(4);
                    pcell.setBorderColor(new Color(0xF2F2F2));
                    pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    pcell.setVerticalAlignment(Element.ALIGN_LEFT);
                    table.addCell(pcell);
                }
            }
        }

        document.add(table);

        PdfPTable quesansTable = new PdfPTable(quesAnsHeader.length);
        quesansTable.setWidthPercentage(100);
        if (removecolumn) {
            quesansTable.setWidths(new float[] { 40, 40 });
        } else {
            quesansTable.setWidths(new float[] { 40, 40, 40 });
        }
        quesansTable.setSpacingBefore(20);
        quesansTable.setHeaderRows(1);
        for (int i = 0; i < quesAnsHeader.length; i++) {
            PdfPCell pgcell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(quesAnsHeader[i], FontContext.MEDIUM_BOLD_HELVETICA)));
            pgcell.setBorder(0);
            pgcell.setBorder(PdfPCell.BOX);
            pgcell.setPadding(4);
            pgcell.setBorderColor(Color.GRAY);
            pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            quesansTable.addCell(pgcell);
        }

        JSONObject quesansjobj = new JSONObject(quesansstr);
        JSONArray quesansjarr = quesansjobj.getJSONArray("quesans");
        JSONObject qajobj = new JSONObject();
        for (int i = 0; i < quesansjarr.length(); i++) {
            qajobj = quesansjarr.getJSONObject(i);
            for (int k = 0; k < quesAnsHeader.length; k++) {
                String qatext = !qajobj.isNull(quesAnsDataIndex[k]) ? qajobj.getString(quesAnsDataIndex[k])
                        : "";
                qatext = qatext.replaceAll("~", "\n\n");
                qatext = qatext.replaceAll("\n", "<br/>");
                StyleSheet st = new StyleSheet();
                st.loadTagStyle("body", "face", "HELVETICA");
                st.loadTagStyle("body", "size", "1");
                st.loadTagStyle("body", "leading", "8,0");
                StringReader stringReader = new StringReader(qatext);
                PdfPCell pcell = new PdfPCell();
                ArrayList listStr = HTMLWorker.parseToList(stringReader, st);
                pcell.setPadding(4);
                for (int htmlCount = 0; htmlCount < listStr.size(); ++htmlCount) {
                    if (!listStr.get(htmlCount).toString().equals("[]"))
                        pcell.addElement((Element) listStr.get(htmlCount));
                }

                pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                pcell.setBorderColor(Color.GRAY);
                pcell.setPadding(4);
                pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
                pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                quesansTable.addCell(pcell);
            }
        }
        document.add(quesansTable);

        PdfPTable compTable = new PdfPTable(6);
        compTable.setWidthPercentage(100);
        compTable.setWidths(new float[] { 50, 60, 30, 50, 42, 70 });
        compTable.setSpacingBefore(20);
        compTable.setHeaderRows(1);

        for (int i = 0; i < compHeader.length; i++) {
            PdfPCell pcell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(compHeader[i], FontContext.MEDIUM_BOLD_HELVETICA)));
            pcell.setBorder(0);
            pcell.setBorder(PdfPCell.BOX);
            pcell.setPadding(4);
            pcell.setBorderColor(Color.GRAY);
            pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            compTable.addCell(pcell);
        }

        for (int i = 0; i < jarr.length(); i++) {
            jobjAppraisal = jarr.getJSONObject(i);
            for (int k = 0; k < compHeader.length; k++) {
                if (k != compHeader.length - 1) {
                    scoreAvg = "";
                    if (!jobjAppraisal.isNull(compDataIndex[k]) && compDataIndex[k].equals("compmanwght")) {
                        scoreAvg = jobjAppraisal.getString("nominalRat");
                        Chunk chunk1 = fontFamilySelector.processChunk(
                                jobjAppraisal.getString(compDataIndex[k]) + "\n\n",
                                FontContext.SMALL_NORMAL_HELVETICA);
                        Chunk chunk2 = null;
                        requestParams.clear();
                        if (!StringUtil.isNullOrEmpty(request.getParameter("pdfEmail"))) {
                            //                                User user=(User)session.get(User.class,request.getParameter("userid"));
                            //                                companyid=user.getCompany().getCompanyID();
                            requestParams.put("companyid", companyid);
                            requestParams.put("checklink", "modaverage");
                            if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
                                chunk2 = fontFamilySelector.processChunk("["
                                        + messageSource.getMessage("hrms.performance.mod.avg", null,
                                                RequestContextUtils.getLocale(request))
                                        + ":  " + scoreAvg + " ]", FontContext.SMALL_NORMAL_HELVETICA);
                            } else {
                                chunk2 = fontFamilySelector.processChunk("["
                                        + messageSource.getMessage("hrms.performance.avg", null,
                                                RequestContextUtils.getLocale(request))
                                        + ":  " + scoreAvg + " ]", FontContext.SMALL_NORMAL_HELVETICA);
                            }
                        } else {
                            requestParams.put("companyid", companyid);
                            requestParams.put("checklink", "modaverage");
                            if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
                                chunk2 = fontFamilySelector.processChunk("["
                                        + messageSource.getMessage("hrms.performance.mod.avg", null,
                                                RequestContextUtils.getLocale(request))
                                        + ":  " + scoreAvg + " ]", FontContext.SMALL_NORMAL_HELVETICA);
                            } else {
                                chunk2 = fontFamilySelector.processChunk("["
                                        + messageSource.getMessage("hrms.performance.avg", null,
                                                RequestContextUtils.getLocale(request))
                                        + ":  " + scoreAvg + " ]", FontContext.SMALL_NORMAL_HELVETICA);
                            }
                        }
                        Phrase phrase1 = new Phrase();
                        phrase1.add(chunk1);
                        phrase1.add(chunk2);

                        p = new Paragraph();
                        p.add(phrase1);
                    }
                    PdfPCell pcell = new PdfPCell();
                    if (!scoreAvg.equals("")) {
                        pcell = new PdfPCell(new Paragraph(p));
                        pcell.setPadding(0);
                        pcell.setPaddingTop(2);
                        pcell.setPaddingBottom(4);
                    } else {
                        if (!jobjAppraisal.isNull(compDataIndex[k])) {
                            String htmlStr = jobjAppraisal.getString(compDataIndex[k]);
                            htmlStr = htmlStr.replaceAll("\n", "<br>");
                            StyleSheet st = new StyleSheet();
                            st.loadTagStyle("body", "face", "HELVETICA");
                            st.loadTagStyle("body", "size", "1");
                            st.loadTagStyle("body", "leading", "8,0");
                            HTMLWorker worker = new HTMLWorker(document);
                            StringReader stringReader = new StringReader(htmlStr);
                            ArrayList<Element> listStr = HTMLWorker.parseToList(stringReader, st);
                            pcell.setPadding(4);
                            for (int htmlCount = 0; htmlCount < listStr.size(); ++htmlCount) {
                                if (!listStr.get(htmlCount).getChunks().isEmpty()) {
                                    pcell.addElement(fontFamilySelector.processElement(
                                            listStr.get(htmlCount).getChunks(),
                                            FontContext.SMALL_NORMAL_HELVETICA));
                                }
                            }
                        } else
                            pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                    !jobjAppraisal.isNull(compDataIndex[k]) ? StringUtil
                                            .serverHTMLStripper(jobjAppraisal.getString(compDataIndex[k])) : "",
                                    FontContext.SMALL_NORMAL_HELVETICA)));
                    }
                    pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                    pcell.setBorderColor(Color.GRAY);
                    pcell.setHorizontalAlignment(
                            compDataIndex[k].equals("comptename") || compDataIndex[k].equals("comptdesc")
                                    || compDataIndex[k].equals("selfcomment") ? Element.ALIGN_LEFT
                                            : Element.ALIGN_CENTER);
                    pcell.setVerticalAlignment(
                            compDataIndex[k].equals("comptdesc") || compDataIndex[k].equals("comptdesc")
                                    || compDataIndex[k].equals("selfcomment") ? Element.ALIGN_LEFT
                                            : Element.ALIGN_CENTER);
                    compTable.addCell(pcell);

                } else {
                    jarr2 = jobjAppraisal.getJSONArray("comments");
                    managerComments = "";
                    int commentCount = 1;
                    for (int j = jarr2.length() - 1; j >= 0; j--) {
                        jobjTemplate = jarr2.getJSONObject(j);
                        managerComments += commentCount + ")  " + jobjTemplate.getString("managercomment")
                                + "\n\n";
                        commentCount++;
                    }
                    PdfPCell pcell = new PdfPCell(new Paragraph(
                            fontFamilySelector.process(managerComments, FontContext.SMALL_NORMAL_HELVETICA)));
                    pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                    pcell.setPadding(4);
                    pcell.setBorderColor(Color.GRAY);
                    pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    pcell.setVerticalAlignment(Element.ALIGN_LEFT);
                    compTable.addCell(pcell);
                }
            }
        }
        document.add(compTable);
        PdfPCell pcell;
        if (jarr.length() > 0) {
            PdfPTable helpTable = new PdfPTable(1);
            helpTable.setTotalWidth(90);
            helpTable.setWidthPercentage(100);
            helpTable.setSpacingBefore(20);

            pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    messageSource.getMessage("hrms.performance.mod.avg", null,
                            RequestContextUtils.getLocale(request))
                            + ". : "
                            + messageSource.getMessage("hrms.performance.mode.average.ratings", null,
                                    RequestContextUtils.getLocale(request)),
                    FontContext.SMALL_BOLD_HELVETICA)));
            pcell.setBorder(0);
            pcell.setPadding(4);
            pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
            helpTable.addCell(pcell);

            requestParams.clear();
            requestParams.put("companyid", companyid);
            requestParams.put("checklink", "modaverage");
            if (!StringUtil.isNullOrEmpty(request.getParameter("pdfEmail"))) {
                if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
                    document.add(helpTable);
                }
            } else {
                if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
                    document.add(helpTable);
                }
            }
        }
        PdfPTable compgTable = new PdfPTable(6);
        compgTable.setWidthPercentage(100);
        compgTable.setWidths(new float[] { 50, 60, 30, 50, 42, 70 });
        compgTable.setSpacingBefore(20);
        compgTable.setHeaderRows(1);
        for (int i = 0; i < compGoalHeader.length; i++) {
            PdfPCell pgcell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(compGoalHeader[i], FontContext.MEDIUM_BOLD_HELVETICA)));
            pgcell.setBorder(0);
            pgcell.setBorder(PdfPCell.BOX);
            pgcell.setPadding(4);
            pgcell.setBorderColor(Color.GRAY);
            pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
            compgTable.addCell(pgcell);
        }

        JSONObject jobjTemplates = new JSONObject(goalstr);
        com.krawler.utils.json.base.JSONArray jarr11 = jobjTemplates.getJSONArray("data");
        JSONObject jobjl = new JSONObject();
        for (int i = 0; i < jarr11.length(); i++) {
            jobjl = jarr11.getJSONObject(i);
            for (int k = 0; k < compHeader.length; k++) {
                pcell = new PdfPCell(
                        new Paragraph(
                                fontFamilySelector.process(
                                        !jobjl.isNull(compGoalDataIndex[k]) ? StringUtil
                                                .serverHTMLStripper(jobjl.getString(compGoalDataIndex[k])) : "",
                                        FontContext.SMALL_NORMAL_HELVETICA)));
                pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                pcell.setBorderColor(Color.GRAY);
                pcell.setPadding(4);
                pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                compgTable.addCell(pcell);
            }
        }
        document.add(compgTable);

        document.newPage();
        document.close();
    } catch (DocumentException ex) {
        ex.printStackTrace();
        throw ServiceException.FAILURE("AppraisalDetails.AppraisalDetail", ex);
    } catch (JSONException e) {
        e.printStackTrace();
        throw ServiceException.FAILURE("AppraisalDetails.AppraisalDetail", e);
    } catch (Exception ex) {
        ex.printStackTrace();
        throw ServiceException.FAILURE(ex.getMessage(), ex);
    } finally {
        writer.close();
    }
    return baos;

}

From source file:com.krawler.spring.hrms.payroll.payslip.ExportPayslipController.java

License:Open Source License

public ModelAndView exportPDF(HttpServletRequest request, HttpServletResponse response) {
    JSONObject jsonResp = new JSONObject();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter writer = null;/*from  ww  w.  j  a  v  a  2  s.c  o  m*/
    try {

        Company company = (Company) kwlCommonTablesDAOObj.getObject("com.krawler.common.admin.Company",
                sessionHandlerImplObj.getCompanyid(request));
        int i = 0;
        DecimalFormat decfm = new DecimalFormat("#,##0.00");
        Date d2 = null;
        Date d3 = null;
        int days = 0;
        boolean showborder = true;
        if (!StringUtil.isNullOrEmpty(request.getParameter("showborder"))) {
            showborder = Boolean.parseBoolean(request.getParameter("showborder"));
        }
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
        String stDate = request.getParameter("stdate").replace("/", "-");
        String endDate = request.getParameter("enddate").replace("/", "-");
        d2 = sdf.parse(stDate);
        d3 = sdf.parse(endDate);

        days = getWorkingDays(request.getParameter("stdate").replace("/", "-"),
                request.getParameter("enddate").replace("/", "-"), company.getCompanyID());

        String historyid = "";

        List<Payhistory> lst = exportPayslipDAO.getPayhistory(request.getParameter("empid"), d2, d3);
        ;
        if (lst != null && lst.size() == 0) {
            throw new Exception("Exception occured");
        } else if (lst != null && lst.size() > 0) {
            String currSymbol = getCurrencySymbol(request, false);
            masterDB.Payhistory payhistory = (masterDB.Payhistory) lst.get(0);
            historyid = payhistory.getHistoryid();
            double unpaidleaves = payhistory.getUnpaidleaves();

            Document document = new Document(PageSize.A4, 15, 15, 15, 15);
            writer = PdfWriter.getInstance(document, baos);
            writer.setPageEvent(new EndPage(request));
            document.open();

            String userid = request.getParameter("empid");

            User userinfo = payhistory.getUserID();
            Useraccount ua = (Useraccount) kwlCommonTablesDAOObj
                    .getObject("com.krawler.common.admin.Useraccount", userinfo.getUserID());
            String uname = userinfo.getLastName() != null ? userinfo.getLastName() : "";
            String empid = getUserCode(ua, company.getCompanyID());

            String department = payhistory.getDepartment();
            String designation = getUserDesignation(ua);
            String bankacc = ua.getAccno() != null ? ua.getAccno() : "";
            Empprofile empprof = null;
            String epf = "";
            String dateofjoin = "";
            try {
                empprof = (Empprofile) kwlCommonTablesDAOObj.getObject("com.krawler.hrms.ess.Empprofile",
                        userid);
                epf = StringUtil.isNullOrEmpty(empprof.getPfno()) ? "" : empprof.getPfno();
                dateofjoin = empprof.getJoindate() != null ? empprof.getJoindate().toString() : "";
            } catch (Exception ex) {
                epf = "";
            }
            PdfPTable mainTable = new PdfPTable(1);
            mainTable.setWidthPercentage(100);
            PdfPTable table1 = new PdfPTable(3);
            table1.setWidthPercentage(100);
            table1.setWidths(new float[] { 40, 40, 20 });
            PdfPTable userTable1 = new PdfPTable(1);
            String cmpid = AuthHandler.getCompanyid(request);
            userTable1.setHorizontalAlignment(Element.ALIGN_MIDDLE);
            userTable1.setWidthPercentage(10);
            PdfPCell cell11 = null;

            PdfPCell cell1x = new PdfPCell(
                    new Paragraph(fontFamilySelector.process("  ", FontContext.REGULAR_BOLD_TIMES_NEW_ROMAN)));
            cell1x.setBorder(0);
            userTable1.addCell(cell1x);
            try {
                String imgPath = StorageHandler.GetProfileImgStorePath() + cmpid + ".png";

                if (StringUtil.isStandAlone()) {
                    imgPath = URLUtil.getPageURL(request, "").concat(ProfileImageServlet.defaultCompanyImgPath);
                }

                Image img = Image.getInstance(imgPath);
                cell11 = new PdfPCell(img);
                cell11.setPaddingLeft(5);
            } catch (Exception e) {
                cell11 = new PdfPCell(new Paragraph(fontFamilySelector
                        .process(AuthHandler.getCompanyName(request), FontContext.TABLE_BOLD_TIMES_NEW_ROMAN)));
                cell11.setHorizontalAlignment(Element.ALIGN_CENTER);
            }
            if (cell11 != null) {
                cell11.setBorder(0);
                userTable1.addCell(cell11);
            }

            PdfPCell cell1 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process("", FontContext.REGULAR_BOLD_TIMES_NEW_ROMAN)));
            cell1.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell1.setBorder(0);
            userTable1.addCell(cell1);

            PdfPTable userTable2 = new PdfPTable(1);
            userTable2.setWidthPercentage(100);
            PdfPCell cell = new PdfPCell(new Paragraph(fontFamilySelector.process(company.getCompanyName(),
                    FontContext.REGULAR_BOLD_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            cell.setPaddingTop(15);
            userTable2.addCell(cell);
            cell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(company.getCity(), FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            userTable2.addCell(cell);
            cell = new PdfPCell(new Paragraph(fontFamilySelector.process(company.getAddress(),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            userTable2.addCell(cell);
            cell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(company.getState(), FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            userTable2.addCell(cell);
            cell = new PdfPCell(new Paragraph(fontFamilySelector.process(company.getZipCode(),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            userTable2.addCell(cell);
            cell = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.payslip.period.params",
                                    new Object[] { request.getParameter("stdate"),
                                            request.getParameter("enddate") },
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setBorder(0);
            userTable2.addCell(cell);

            PdfPTable userTable3 = new PdfPTable(1);
            userTable3.setWidthPercentage(100);
            PdfPCell cell2 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process("", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell2.setBorder(0);
            userTable1.addCell(cell2);

            PdfPCell mainCell11 = new PdfPCell(userTable1);
            if (!showborder) {
                mainCell11.setBorder(0);
            } else {
                mainCell11.setBorder(Rectangle.LEFT);
            }

            table1.addCell(mainCell11);
            PdfPCell mainCell13 = new PdfPCell(userTable2);
            mainCell13.setBorder(0);
            table1.addCell(mainCell13);
            PdfPCell mainCell15 = new PdfPCell(userTable3);
            if (!showborder) {
                mainCell15.setBorder(0);
            } else {
                mainCell15.setBorder(Rectangle.RIGHT);
            }
            table1.addCell(mainCell15);

            PdfPCell mainCell12 = new PdfPCell(new Paragraph(""));
            if (!showborder) {
                mainCell12.setBorder(0);
            } else {
                mainCell12.setBorder(Rectangle.LEFT);
            }
            table1.addCell(mainCell12);
            PdfPCell mainCell14 = new PdfPCell(new Paragraph(""));
            mainCell14.setBorder(0);
            table1.addCell(mainCell14);
            PdfPCell mainCell16 = new PdfPCell(new Paragraph(""));
            if (!showborder) {
                mainCell16.setBorder(0);
            } else {
                mainCell16.setBorder(Rectangle.RIGHT);
            }
            table1.addCell(mainCell16);

            PdfPCell mainCell1 = new PdfPCell(table1);
            if (!showborder) {
                mainCell1.setBorder(0);
            } else {
                mainCell1.setBorder(1);
            }
            mainTable.addCell(mainCell1);
            // __________________________________________________________________________
            PdfPTable table2 = new PdfPTable(4);
            table2.setWidthPercentage(100);
            table2.setWidths(new float[] { 20, 30, 20, 30 });

            PdfPCell h11 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.employee.code", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h11.setHorizontalAlignment(Element.ALIGN_LEFT);
            h11.setPadding(5);
            if (!showborder) {
                h11.setBorder(0);
            }
            table2.addCell(h11);
            PdfPCell h12 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process("" + empid, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h12.setHorizontalAlignment(Element.ALIGN_LEFT);
            h12.setPadding(5);
            if (!showborder) {
                h12.setBorder(0);
            }
            table2.addCell(h12);
            PdfPCell h13 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.employee.name", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h13.setHorizontalAlignment(Element.ALIGN_LEFT);
            h13.setPadding(5);
            if (!showborder) {
                h13.setBorder(0);
            }
            table2.addCell(h13);
            PdfPCell h14 = new PdfPCell(new Paragraph(fontFamilySelector
                    .process(userinfo.getFirstName() + " " + uname, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h14.setHorizontalAlignment(Element.ALIGN_LEFT);
            h14.setPadding(5);
            if (!showborder) {
                h14.setBorder(0);
            }
            table2.addCell(h14);

            PdfPCell h21 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.department", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h21.setHorizontalAlignment(Element.ALIGN_LEFT);
            h21.setPadding(5);
            if (!showborder) {
                h21.setBorder(0);
            }
            table2.addCell(h21);
            PdfPCell h22 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(department, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h22.setHorizontalAlignment(Element.ALIGN_LEFT);
            h22.setPadding(5);
            if (!showborder) {
                h22.setBorder(0);
            }
            table2.addCell(h22);
            PdfPCell h33 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.designation", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h33.setHorizontalAlignment(Element.ALIGN_LEFT);
            h33.setPadding(5);
            if (!showborder) {
                h33.setBorder(0);
            }
            table2.addCell(h33);
            PdfPCell h34 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(designation, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h34.setHorizontalAlignment(Element.ALIGN_LEFT);
            h34.setPadding(5);
            if (!showborder) {
                h34.setBorder(0);
            }
            table2.addCell(h34);
            PdfPCell h43 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.bank.ac.no", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h43.setHorizontalAlignment(Element.ALIGN_LEFT);
            h43.setPadding(5);
            if (!showborder) {
                h43.setBorder(0);
            }
            table2.addCell(h43);
            PdfPCell h44 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(bankacc, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h44.setHorizontalAlignment(Element.ALIGN_LEFT);
            h44.setPadding(5);
            if (!showborder) {
                h44.setBorder(0);
            }
            table2.addCell(h44);
            PdfPCell h61 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.working.days", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h61.setHorizontalAlignment(Element.ALIGN_LEFT);
            h61.setPadding(5);
            if (!showborder) {
                h61.setBorder(0);
            }
            table2.addCell(h61);
            PdfPCell h62 = new PdfPCell(new Paragraph(fontFamilySelector.process(String.valueOf(days),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h62.setHorizontalAlignment(Element.ALIGN_LEFT);
            h62.setPadding(5);
            if (!showborder) {
                h62.setBorder(0);
            }
            table2.addCell(h62);
            PdfPCell h63 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    messageSource.getMessage("hrms.common.e.p.f", null, RequestContextUtils.getLocale(request)),
                    FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h63.setHorizontalAlignment(Element.ALIGN_LEFT);
            h63.setPadding(5);
            if (!showborder) {
                h63.setBorder(0);
            }
            table2.addCell(h63);
            PdfPCell h64 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(epf, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h64.setHorizontalAlignment(Element.ALIGN_LEFT);
            h64.setPadding(5);
            if (!showborder) {
                h64.setBorder(0);
            }
            table2.addCell(h64);
            PdfPCell h65 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.common.DateofJoining", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            h65.setHorizontalAlignment(Element.ALIGN_LEFT);
            h65.setPadding(5);
            if (!showborder) {
                h65.setBorder(0);
            }
            table2.addCell(h65);
            PdfPCell h66 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(dateofjoin, FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            h66.setHorizontalAlignment(Element.ALIGN_LEFT);
            h66.setPadding(5);
            if (!showborder) {
                h66.setBorder(0);
            }
            table2.addCell(h66);

            for (int y = 0; y < 2; y++) {
                PdfPCell h71 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                h71.setHorizontalAlignment(Element.ALIGN_LEFT);
                if (!showborder) {
                    h71.setBorder(0);
                } else {
                    h71.setBorder(Rectangle.LEFT);
                }
                table2.addCell(h71);
                for (i = 0; i < 2; i++) {
                    h71 = new PdfPCell(new Paragraph(
                            fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                    h71.setHorizontalAlignment(Element.ALIGN_LEFT);
                    h71.setBorder(0);
                    table2.addCell(h71);
                }
                h71 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                h71.setHorizontalAlignment(Element.ALIGN_LEFT);
                if (!showborder) {
                    h71.setBorder(0);
                } else {
                    h71.setBorder(Rectangle.RIGHT);
                }
                table2.addCell(h71);
            }
            PdfPCell mainCell2 = new PdfPCell(table2);
            if (!showborder) {
                mainCell2.setBorder(0);
            } else {
                mainCell2.setBorder(1);
            }
            mainTable.addCell(mainCell2);

            PdfPTable table3main = new PdfPTable(1);
            table3main.setWidthPercentage(100);
            PdfPTable table7main = new PdfPTable(1);
            table7main.setWidthPercentage(100);

            PdfPTable table31 = new PdfPTable(4);
            table31.setWidthPercentage(100);
            table31.setWidths(new float[] { 30, 20, 30, 20 });
            PdfPTable table41 = new PdfPTable(2);
            table41.setWidthPercentage(100);
            table41.setWidths(new float[] { 50, 50 });

            //***************************************************************************************************************
            PdfPCell s11 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.Earnings", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s11.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                s11.setBorder(0);
            } else {
                s11.setBorder(Rectangle.LEFT + Rectangle.BOTTOM);
            }
            s11.setPadding(5);
            table31.addCell(s11);
            PdfPCell s12 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.amount.params", new Object[] { currSymbol },
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s12.setHorizontalAlignment(Element.ALIGN_RIGHT);
            s12.setPadding(5);
            if (!showborder) {
                s12.setBorder(0);
            } else {
                s12.setBorder(Rectangle.LEFT + Rectangle.BOTTOM);
            }
            table31.addCell(s12);
            PdfPCell s14 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.Deduction", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s14.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                s14.setBorder(0);
            } else {
                s14.setBorder(Rectangle.LEFT + Rectangle.BOTTOM);
            }
            s14.setPadding(5);
            table31.addCell(s14);
            PdfPCell s15 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.amount.params", new Object[] { currSymbol },
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s15.setHorizontalAlignment(Element.ALIGN_RIGHT);
            if (!showborder) {
                s15.setBorder(0);
            } else {
                s15.setBorder(Rectangle.LEFT + Rectangle.RIGHT + Rectangle.BOTTOM);
            }
            s15.setPadding(5);
            table31.addCell(s15);
            int Wcount = 0;
            float taxtotal = 0;

            List<Historydetail> lst1 = exportPayslipDAO.getHistorydetail(historyid, "Wages", "Basic");
            List<Historydetail> list = exportPayslipDAO.getHistorydetailNotType(historyid, "Wages", "Basic");
            if (list != null) {
                lst1.addAll(list);
            }

            List<Historydetail> lst2 = exportPayslipDAO.getHistorydetail(historyid, "Taxes");

            CompanyPreferences cp = hrmsCommonDAOObj.getCompanyPreferences(company.getCompanyID());
            int financialMonth = cp.getFinancialmonth();
            Calendar c1 = Calendar.getInstance();
            c1.setTime(d3);
            c1.set(Calendar.MONTH, financialMonth);
            c1.set(Calendar.DATE, 1);
            Date d = c1.getTime();
            Date DOJ = new java.util.Date(empprof.getJoindate().getTime());
            if (d3.before(d)) {
                int currentYear = c1.get(Calendar.YEAR) - 1;
                c1.set(Calendar.YEAR, currentYear);
                d = c1.getTime();
            }
            if (DOJ.after(d)) {
                c1.setTime(DOJ);
                c1.set(Calendar.DATE, 1);
                d = c1.getTime();
            }
            List<Historydetail> lst3 = exportPayslipDAO.getHistorydetail(historyid, "Deduction");
            int size = lst1.size() > (lst2.size() + lst3.size()) ? lst1.size() : lst2.size() + lst3.size();
            float wagetotal = 0;
            double totalYTDEarning = 0, totalYTDDeduction = 0;
            for (i = 0; i < size; i++) {
                masterDB.Historydetail hd = null;
                if (i < lst1.size()) {
                    hd = (masterDB.Historydetail) lst1.get(i);
                    PdfPCell s21 = new PdfPCell(new Paragraph(fontFamilySelector.process(hd.getType(),
                            FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                    s21.setHorizontalAlignment(Element.ALIGN_LEFT);
                    if (!showborder) {
                        s21.setBorder(0);
                    } else {
                        s21.setBorder(Rectangle.LEFT);
                    }
                    s21.setPadding(5);
                    table31.addCell(s21);

                    BigDecimal bd = new BigDecimal(hd.getAmount());
                    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
                    double newamount = bd.doubleValue();

                    PdfPCell s22 = new PdfPCell(
                            new Paragraph(fontFamilySelector.process(String.valueOf(decfm.format(newamount)),
                                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                    s22.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    if (!showborder) {
                        s22.setBorder(0);
                    } else {
                        s22.setBorder(Rectangle.LEFT);
                    }
                    s22.setPadding(5);
                    table31.addCell(s22);

                    List<Historydetail> lstw = exportPayslipDAO.getHistorydetail(request.getParameter("empid"),
                            d, d3, hd.getType());
                    double wageAmt = 0;
                    masterDB.Historydetail hd1 = null;
                    for (int y = 0; y < lstw.size(); y++) {
                        hd1 = (masterDB.Historydetail) lstw.get(y);
                        wageAmt += Double.parseDouble(hd1.getAmount());
                    }
                    wagetotal = wagetotal + Float.parseFloat(hd.getAmount());
                    totalYTDEarning = totalYTDEarning + wageAmt;
                    Wcount++;
                } else {
                    for (int j = 0; j < 2; j++) {
                        PdfPCell s21 = new PdfPCell(new Paragraph(
                                fontFamilySelector.process("", FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                        s21.setHorizontalAlignment(Element.ALIGN_LEFT);
                        if (!showborder) {
                            s21.setBorder(0);
                        } else {
                            s21.setBorder(Rectangle.LEFT);
                        }
                        s21.setPadding(5);
                        table31.addCell(s21);
                    }
                }
                if (i < lst2.size()) {
                    hd = (masterDB.Historydetail) lst2.get(i);
                    PdfPCell s24 = new PdfPCell(new Paragraph(fontFamilySelector.process(hd.getType(),
                            FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                    s24.setHorizontalAlignment(Element.ALIGN_LEFT);
                    if (!showborder) {
                        s24.setBorder(0);
                    } else {
                        s24.setBorder(Rectangle.LEFT);
                    }
                    s24.setPadding(5);
                    table31.addCell(s24);

                    BigDecimal bd = new BigDecimal(hd.getAmount());
                    bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
                    double newamount = bd.doubleValue();

                    PdfPCell s25 = new PdfPCell(new Paragraph(fontFamilySelector
                            .process(decfm.format(newamount), FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                    s25.setHorizontalAlignment(Element.ALIGN_RIGHT);
                    if (!showborder) {
                        s25.setBorder(0);
                    } else {
                        s25.setBorder(Rectangle.RIGHT + Rectangle.LEFT);
                    }
                    s25.setPadding(5);
                    table31.addCell(s25);

                    List<Historydetail> lstw1 = exportPayslipDAO.getHistorydetail(request.getParameter("empid"),
                            d, d3, hd.getType());
                    double taxAmt = 0;
                    masterDB.Historydetail hd2 = null;
                    for (int y = 0; y < lstw1.size(); y++) {
                        hd2 = (masterDB.Historydetail) lstw1.get(y);
                        taxAmt += Double.parseDouble(hd2.getAmount());
                    }
                    taxtotal = taxtotal + Float.parseFloat(hd.getAmount());
                    totalYTDDeduction = totalYTDDeduction + taxAmt;
                } else {
                    if (i - lst2.size() < lst3.size()) {
                        hd = (masterDB.Historydetail) lst3.get(i - lst2.size());
                        PdfPCell s24 = new PdfPCell(new Paragraph(fontFamilySelector.process(hd.getType(),
                                FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                        if (hd.getType().equals("Unpaid_leaves")) {
                            s24 = new PdfPCell(new Paragraph(
                                    fontFamilySelector.process(hd.getType() + "(" + unpaidleaves + ")",
                                            FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                        }
                        s24.setHorizontalAlignment(Element.ALIGN_LEFT);
                        if (!showborder) {
                            s24.setBorder(0);
                        } else {
                            s24.setBorder(Rectangle.LEFT);
                        }
                        s24.setPadding(5);
                        table31.addCell(s24);

                        BigDecimal bd = new BigDecimal(hd.getAmount());
                        bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
                        double newamount = bd.doubleValue();

                        PdfPCell s25 = new PdfPCell(new Paragraph(fontFamilySelector
                                .process(decfm.format(newamount), FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                        s25.setHorizontalAlignment(Element.ALIGN_RIGHT);
                        if (!showborder) {
                            s25.setBorder(0);
                        } else {
                            s25.setBorder(Rectangle.RIGHT + Rectangle.LEFT);
                            ;
                        }
                        s25.setPadding(5);
                        table31.addCell(s25);

                        List<Historydetail> lstw2 = exportPayslipDAO
                                .getHistorydetail(request.getParameter("empid"), d, d3, hd.getType());
                        masterDB.Historydetail hd3 = null;
                        double deductAmt = 0;
                        for (int y = 0; y < lstw2.size(); y++) {
                            hd3 = (masterDB.Historydetail) lstw2.get(y);
                            deductAmt += Double.parseDouble(hd3.getAmount());
                        }

                        taxtotal = taxtotal + Float.parseFloat(hd.getAmount());
                        totalYTDDeduction = totalYTDDeduction + deductAmt;
                    } else {
                        for (int j = 0; j < 2; j++) {
                            PdfPCell s21 = new PdfPCell(new Paragraph(
                                    fontFamilySelector.process("", FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                            s21.setHorizontalAlignment(Element.ALIGN_LEFT);
                            if (!showborder) {
                                s21.setBorder(0);
                            } else {
                                s21.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                            }
                            s21.setPadding(5);
                            table31.addCell(s21);
                        }
                    }
                }
            }
            PdfPCell s91 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.total.earnings", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s91.setHorizontalAlignment(Element.ALIGN_BASELINE);
            s91.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                s91.setBorder(0);
            } else {
                s91.setBorder(Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM);
            }
            s91.setPadding(5);
            table31.addCell(s91);
            BigDecimal bd = new BigDecimal(String.valueOf(wagetotal));
            bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
            double newamount = bd.doubleValue();
            PdfPCell s92 = new PdfPCell(new Paragraph(fontFamilySelector.process(decfm.format(newamount),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            s92.setHorizontalAlignment(Element.ALIGN_BASELINE);
            s92.setHorizontalAlignment(Element.ALIGN_RIGHT);
            if (!showborder) {
                s92.setBorder(0);
            } else {
                s92.setBorder(Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM);
            }
            s92.setPadding(5);
            table31.addCell(s92);
            PdfPCell s94 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.total.deductions", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            s94.setHorizontalAlignment(Element.ALIGN_BASELINE);
            s94.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                s94.setBorder(0);
            } else {
                s94.setBorder(Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM);
            }
            s94.setPadding(5);
            table31.addCell(s94);
            bd = new BigDecimal(String.valueOf(taxtotal));
            bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
            newamount = bd.doubleValue();
            PdfPCell s95 = new PdfPCell(new Paragraph(fontFamilySelector.process(decfm.format(newamount),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            s95.setHorizontalAlignment(Element.ALIGN_BASELINE);
            s95.setHorizontalAlignment(Element.ALIGN_RIGHT);
            if (!showborder) {
                s95.setBorder(0);
            } else {
                s95.setBorder(Rectangle.RIGHT + Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM);
            }
            s95.setPadding(5);
            table31.addCell(s95);
            for (int y = 0; y < 2; y++) {
                PdfPCell he71 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                he71.setHorizontalAlignment(Element.ALIGN_LEFT);
                if (!showborder) {
                    he71.setBorder(0);
                } else {
                    he71.setBorder(Rectangle.LEFT);
                }
                table31.addCell(he71);
                for (i = 0; i < 2; i++) {
                    he71 = new PdfPCell(new Paragraph(
                            fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                    he71.setHorizontalAlignment(Element.ALIGN_LEFT);
                    he71.setBorder(0);
                    table31.addCell(he71);
                }
                he71 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                he71.setHorizontalAlignment(Element.ALIGN_LEFT);
                if (!showborder) {
                    he71.setBorder(0);
                } else {
                    he71.setBorder(Rectangle.RIGHT);
                }
                table31.addCell(he71);
            }

            List<Historydetail> lst4 = exportPayslipDAO.getHistorydetail(historyid, "Employer Contribution");
            double ectotal = 0;
            PdfPCell ec11 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.EmployerContribution", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            ec11.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                ec11.setBorder(0);
            } else {
                ec11.setBorder(Rectangle.LEFT + Rectangle.BOTTOM);
            }
            ec11.setPadding(5);
            table41.addCell(ec11);
            PdfPCell ec12 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.amount.params", new Object[] { currSymbol },
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            ec12.setHorizontalAlignment(Element.ALIGN_RIGHT);
            ec12.setPadding(5);
            if (!showborder) {
                ec12.setBorder(0);
            } else {
                ec12.setBorder(Rectangle.LEFT + Rectangle.BOTTOM + Rectangle.RIGHT);
            }
            table41.addCell(ec12);
            masterDB.Historydetail hd1 = null;
            for (i = 0; i < lst4.size(); i++) {
                hd1 = (masterDB.Historydetail) lst4.get(i);
                PdfPCell s24 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process(hd1.getType(), FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                s24.setHorizontalAlignment(Element.ALIGN_LEFT);
                if (!showborder) {
                    s24.setBorder(0);
                } else {
                    s24.setBorder(Rectangle.LEFT);
                }
                s24.setPadding(5);
                table41.addCell(s24);
                bd = new BigDecimal(hd1.getAmount());
                bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
                newamount = bd.doubleValue();
                ectotal = ectotal + newamount;

                PdfPCell s25 = new PdfPCell(new Paragraph(fontFamilySelector.process(decfm.format(newamount),
                        FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
                s25.setHorizontalAlignment(Element.ALIGN_RIGHT);
                if (!showborder) {
                    s25.setBorder(0);
                } else {
                    s25.setBorder(Rectangle.RIGHT + Rectangle.LEFT);
                }
                s25.setPadding(5);
                table41.addCell(s25);
            }

            PdfPCell se91 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.total.contribution", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            se91.setHorizontalAlignment(Element.ALIGN_BASELINE);
            se91.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                se91.setBorder(0);
            } else {
                se91.setBorder(Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM);
            }
            se91.setPadding(5);
            table41.addCell(se91);
            bd = new BigDecimal(String.valueOf(ectotal));
            bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
            newamount = bd.doubleValue();
            PdfPCell se92 = new PdfPCell(new Paragraph(fontFamilySelector.process(decfm.format(newamount),
                    FontContext.SMALL_NORMAL_TIMES_NEW_ROMAN)));
            se92.setHorizontalAlignment(Element.ALIGN_BASELINE);
            se92.setHorizontalAlignment(Element.ALIGN_RIGHT);
            if (!showborder) {
                se92.setBorder(0);
            } else {
                se92.setBorder(Rectangle.LEFT + Rectangle.TOP + Rectangle.BOTTOM + Rectangle.RIGHT);
            }
            se92.setPadding(5);
            table41.addCell(se92);

            PdfPCell Cell31 = new PdfPCell(table31);
            if (!showborder) {
                Cell31.setBorder(0);
            } else {
                Cell31.setBorder(1);
            }
            table3main.addCell(Cell31);

            PdfPCell mainCell4 = new PdfPCell(table3main);
            if (!showborder) {
                mainCell4.setBorder(0);
            } else {
                mainCell4.setBorder(1);
            }
            mainTable.addCell(mainCell4);

            PdfPCell Cell41 = new PdfPCell(table41);
            if (!showborder) {
                Cell41.setBorder(0);
            } else {
                Cell41.setBorder(1);
            }
            table7main.addCell(Cell41);

            PdfPCell mainCell44 = new PdfPCell(table7main);
            if (!showborder) {
                mainCell44.setBorder(0);
            } else {
                mainCell44.setBorder(1);
            }
            mainTable.addCell(mainCell44);

            //***************************************************************************************************************

            PdfPTable table4 = new PdfPTable(2);
            table4.setWidthPercentage(100);
            for (i = 0; i < 4; i++) {
                PdfPCell i33 = new PdfPCell(new Paragraph(
                        fontFamilySelector.process("  ", FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
                i33.setHorizontalAlignment(Element.ALIGN_CENTER);
                if (!showborder) {
                    i33.setBorder(0);
                } else {
                    i33.setBorder(Rectangle.LEFT + Rectangle.RIGHT);
                }
                table4.addCell(i33);
            }

            PdfPCell i31 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    messageSource.getMessage("hrms.payroll.netpay", null,
                            RequestContextUtils.getLocale(request)) + " ",
                    FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            i31.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                i31.setBorder(0);
            } else {
                i31.setBorder(Rectangle.LEFT + Rectangle.TOP);
            }
            i31.setPadding(5);
            table4.addCell(i31);
            double netpay = 0;
            netpay = wagetotal - taxtotal;
            netpay = Math.round(netpay);
            String amount = numberFormatter((double) netpay, currSymbol);
            PdfPCell i33 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(amount, FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            i33.setHorizontalAlignment(Element.ALIGN_RIGHT);
            if (!showborder) {
                i33.setBorder(0);
            } else {
                i31.setBorder(Rectangle.RIGHT);
            }
            i33.setPadding(5);
            table4.addCell(i33);

            PdfPCell i32 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.in.words", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            i32.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                i32.setBorder(0);
            } else {
                i31.setBorder(Rectangle.LEFT);
            }
            i32.setPadding(5);
            table4.addCell(i32);
            EnglishNumberToWords enw = new EnglishNumberToWords(request, messageSource);
            String netinword = enw.convert(netpay);
            PdfPCell i34 = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.only",
                                    new Object[] { getCurrencyName(request), netinword },
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            i34.setHorizontalAlignment(Element.ALIGN_LEFT);
            if (!showborder) {
                i34.setBorder(0);
            } else {
                i31.setBorder(Rectangle.RIGHT);
            }
            i34.setPadding(5);
            table4.addCell(i34);

            PdfPCell mainCell5 = new PdfPCell(table4);
            if (!showborder) {
                mainCell5.setBorder(0);
            } else {
                mainCell5.setBorder(1);
            }
            mainTable.addCell(mainCell5);

            document.add(new Paragraph("\n\n"));

            PdfPTable table5 = new PdfPTable(2);
            table5.setWidthPercentage(80);
            cell = new PdfPCell(new Paragraph("___________________________"));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setBorder(0);
            table5.addCell(cell);
            cell = new PdfPCell(new Paragraph("___________________________"));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setBorder(0);
            table5.addCell(cell);
            cell = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.employee.signature", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setBorder(0);
            table5.addCell(cell);
            cell = new PdfPCell(
                    new Paragraph(fontFamilySelector.process(
                            messageSource.getMessage("hrms.payroll.manager.signature", null,
                                    RequestContextUtils.getLocale(request)),
                            FontContext.SMALL_BOLD_TIMES_NEW_ROMAN)));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setBorder(0);
            table5.addCell(cell);

            document.add(mainTable);
            document.close();
        }

        String filename = "Employee_Payslip.pdf";
        if (!StringUtil.isNullOrEmpty(request.getParameter("reportname"))) {
            String temp = request.getParameter("reportname");
            filename = temp.lastIndexOf(".pdf") >= 0 ? temp : temp + ".pdf";
        }
        response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
        response.setContentType("application/octet-stream");
        response.setContentLength(baos.size());
        response.getOutputStream().write(baos.toByteArray());

        jsonResp.put("valid", true);
        jsonResp.put("data", "");
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (response.getOutputStream() != null) {
                response.getOutputStream().flush();
                response.getOutputStream().close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        writer.close();
    }
    return new ModelAndView("jsonView", "model", jsonResp.toString());
}

From source file:com.krawler.spring.hrms.printreport.PrintAppraisalReportDAOImp.java

License:Open Source License

public void createPDFPriview(HttpServletRequest request, HttpServletResponse response, JSONArray obj,
        Map<String, String> personalData) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Document document = new Document(PageSize.A4.rotate(), 25, 25, 25, 25);

    PdfWriter writer = null;//w  ww  .  j  a  va 2 s. c om
    try {
        HashMap<String, Object> requestParams = new HashMap<String, Object>();

        boolean isQuestion = request.getParameter("question").equals("true") ? true : false;
        boolean promotion = request.getParameter("promotion").equals("false") ? false : true;
        Boolean isMyAppraisal = Boolean.parseBoolean(personalData.get("isMyAppraisal"));
        CompanyPreferences companyPreferences = (CompanyPreferences) hibernateTemplate
                .get(CompanyPreferences.class, sessionHandlerImplObj.getCompanyid(request));
        writer = PdfWriter.getInstance(document, baos);
        writer.setPageEvent(new EndPage());
        document.open();
        java.awt.Color tColor = new Color(9, 9, 9);
        //fontSmallBold.setColor(tColor);

        //heading
        PdfPTable headTable = new PdfPTable(1);
        headTable.setTotalWidth(90);
        headTable.setWidthPercentage(100);
        headTable.setSpacingBefore(20);
        PdfPCell headcell = new PdfPCell(
                new Paragraph(fontFamilySelector.process(messageSource.getMessage("hrms.common.AppraisalForm",
                        null, RequestContextUtils.getLocale(request)), FontContext.REGULAR_BOLD_HELVETICA)));
        headcell.setBackgroundColor(new Color(0xEEEEEE));
        headcell.setPadding(5);
        headTable.addCell(headcell);
        document.add(headTable);
        //heading

        //Details
        int flag = 0;
        String appDetailsParam[] = {
                messageSource.getMessage("hrms.performance.appraisal.cycle.name", null,
                        RequestContextUtils.getLocale(request)) + ":  ",
                messageSource.getMessage("hrms.common.employee.name", null,
                        RequestContextUtils.getLocale(request)) + ":  ",
                messageSource.getMessage("hrms.performance.appraisal.cycle.period", null,
                        RequestContextUtils.getLocale(request)) + ":  ",
                messageSource.getMessage("hrms.Masters.Designation", null,
                        RequestContextUtils.getLocale(request)) + ":  ",
                messageSource.getMessage("hrms.performance.performance.rating", null,
                        RequestContextUtils.getLocale(request)) + "*:  " };
        String appDetailsValue[] = { personalData.get("appcycname"), personalData.get("empname"),
                messageSource.getMessage("hrms.common.form", null, RequestContextUtils.getLocale(request))
                        + ": " + personalData.get("startdate") + " "
                        + messageSource.getMessage("hrms.common.to", null,
                                RequestContextUtils.getLocale(request))
                        + ": " + personalData.get("enddate"),
                personalData.get("desgname"), personalData.get("performance") };

        requestParams.clear();
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        requestParams.put("checklink", "promotion");
        if (!hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            flag = 1;
        }

        PdfPTable appDetailsTable = new PdfPTable(2);
        appDetailsTable.setWidthPercentage(100);
        appDetailsTable.setWidths(new float[] { 55, 75 });
        if (isMyAppraisal) {
            flag = 1;
        }

        for (int i = 0; i < (appDetailsParam.length - flag); i++) {
            PdfPCell pcell = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(appDetailsParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
            pcell.setBorder(0);
            pcell.setPaddingTop(10);
            pcell.setPaddingLeft(15);
            pcell.setPaddingBottom(4);
            pcell.setBorderColor(new Color(0xF2F2F2));
            pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell);

            PdfPCell pcell1 = new PdfPCell(new Paragraph(
                    fontFamilySelector.process(appDetailsValue[i], FontContext.SMALL_NORMAL_HELVETICA)));
            pcell1.setBorder(0);
            pcell1.setPaddingTop(10);
            pcell1.setPaddingLeft(15);
            pcell1.setPaddingBottom(4);
            pcell1.setBorderColor(new Color(0xF2F2F2));
            pcell1.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell1.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell1);
        }

        requestParams.clear();
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        requestParams.put("checklink", "overallcomments");
        if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            PdfPCell pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    (isMyAppraisal
                            ? messageSource.getMessage("hrms.performance.self.overall.comment", null,
                                    RequestContextUtils.getLocale(request)) + ":  "
                            : messageSource.getMessage("hrms.performance.overall.appraiser.comments", null,
                                    RequestContextUtils.getLocale(request)) + ":  "),
                    FontContext.MEDIUM_BOLD_HELVETICA)));
            pcell.setBorder(0);
            pcell.setPaddingTop(10);
            pcell.setPaddingLeft(15);
            pcell.setPaddingBottom(4);
            pcell.setBorderColor(new Color(0xF2F2F2));
            pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell);

            PdfPCell pcell1 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    (isMyAppraisal ? personalData.get("selfcomment") : personalData.get("empcomment")),
                    FontContext.SMALL_NORMAL_HELVETICA)));
            pcell1.setBorder(0);
            pcell1.setPaddingTop(10);
            pcell1.setPaddingLeft(15);
            pcell1.setPaddingBottom(4);
            pcell1.setBorderColor(new Color(0xF2F2F2));
            pcell1.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell1.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell1);
        }

        requestParams.clear();
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        requestParams.put("checklink", "promotion");
        if (!isMyAppraisal && hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            PdfPCell pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    messageSource.getMessage("hrms.performance.promotion.recommendation", null,
                            RequestContextUtils.getLocale(request)) + ":  ",
                    FontContext.MEDIUM_BOLD_HELVETICA)));
            pcell.setBorder(0);
            pcell.setPaddingTop(10);
            pcell.setPaddingLeft(15);
            pcell.setPaddingBottom(4);
            pcell.setBorderColor(new Color(0xF2F2F2));
            pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell);

            PdfPCell pcell1 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                    (promotion
                            ? messageSource.getMessage("hrms.MasterData.Yes", null,
                                    RequestContextUtils.getLocale(request))
                            : messageSource.getMessage("hrms.MasterData.No", null,
                                    RequestContextUtils.getLocale(request))),
                    FontContext.SMALL_NORMAL_HELVETICA)));
            pcell1.setBorder(0);
            pcell1.setPaddingTop(10);
            pcell1.setPaddingLeft(15);
            pcell1.setPaddingBottom(4);
            pcell1.setBorderColor(new Color(0xF2F2F2));
            pcell1.setHorizontalAlignment(Element.ALIGN_LEFT);
            pcell1.setVerticalAlignment(Element.ALIGN_LEFT);
            appDetailsTable.addCell(pcell1);
        }

        if (promotion && !isMyAppraisal && hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            String[] appDetaisPromotionParam = {
                    messageSource.getMessage("hrms.performance.new.department", null,
                            RequestContextUtils.getLocale(request)) + ":  ",
                    messageSource.getMessage("hrms.performance.new.designation", null,
                            RequestContextUtils.getLocale(request)) + ":  ",
                    messageSource.getMessage("hrms.performance.salary.increment", null,
                            RequestContextUtils.getLocale(request)) + "(%):  " };
            String[] appDetaisPromotionValue = {
                    personalData.get("newDept") != null ? personalData.get("newDept") : "",
                    personalData.get("newDesig") != null ? personalData.get("newDesig") : "",
                    personalData.get("salInc") != null ? personalData.get("salInc") : "" };
            for (int i = 0; i < appDetaisPromotionParam.length; i++) {
                PdfPCell pcell = new PdfPCell(new Paragraph(fontFamilySelector
                        .process(appDetaisPromotionParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
                pcell.setBorder(0);
                pcell.setPaddingTop(10);
                pcell.setPaddingLeft(15);
                pcell.setPaddingBottom(4);
                pcell.setBorderColor(new Color(0xF2F2F2));
                pcell.setHorizontalAlignment(Element.ALIGN_LEFT);
                pcell.setVerticalAlignment(Element.ALIGN_LEFT);
                appDetailsTable.addCell(pcell);

                PdfPCell pcell1 = new PdfPCell(new Paragraph(fontFamilySelector
                        .process(appDetaisPromotionValue[i], FontContext.SMALL_NORMAL_HELVETICA)));
                pcell1.setBorder(0);
                pcell1.setPaddingTop(10);
                pcell1.setPaddingLeft(15);
                pcell1.setPaddingBottom(4);
                pcell1.setBorderColor(new Color(0xF2F2F2));
                pcell1.setHorizontalAlignment(Element.ALIGN_LEFT);
                pcell1.setVerticalAlignment(Element.ALIGN_LEFT);
                appDetailsTable.addCell(pcell1);
            }
        }
        document.add(appDetailsTable);
        //Details

        //Comp
        requestParams.clear();
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        requestParams.put("checklink", "competency");
        if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            try {
                if (!isQuestion) {
                    JSONArray jsonComp = obj.getJSONArray(0);
                    if (!isMyAppraisal) {
                        String[] compParam = {
                                messageSource.getMessage("hrms.performance.competency", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.competency.description", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.weightage", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.appraiser.rating", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.appraiser.comment", null,
                                        RequestContextUtils.getLocale(request)) };
                        String[] colParam = { "cmptname", "cmptdesc", "cmptwt", "manrat", "mancompcomment" };
                        PdfPTable questionTable = null;
                        if (companyPreferences.isWeightage()) {
                            questionTable = new PdfPTable(5);
                            questionTable.setWidths(new float[] { 50, 60, 30, 30, 42 });
                        } else {
                            questionTable = new PdfPTable(4);
                            questionTable.setWidths(new float[] { 50, 60, 30, 42 });
                        }
                        questionTable.setWidthPercentage(100);
                        questionTable.setSpacingBefore(20);
                        questionTable.setHeaderRows(1);
                        for (int i = 0; i < compParam.length; i++) {
                            if (!(!companyPreferences.isWeightage() && i == 2)) {
                                PdfPCell pgcell = new PdfPCell(new Paragraph(fontFamilySelector
                                        .process(compParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
                                pgcell.setBorder(0);
                                pgcell.setBorder(PdfPCell.BOX);
                                pgcell.setPadding(4);
                                pgcell.setBorderColor(Color.GRAY);
                                pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                questionTable.addCell(pgcell);
                            }
                        }

                        for (int i = 0; i < jsonComp.length(); i++) {
                            for (int j = 0; j < colParam.length; j++) {
                                if (!(!companyPreferences.isWeightage() && j == 2)) {
                                    PdfPCell pcell = null;
                                    if (j != 3)
                                        pcell = new PdfPCell(
                                                new Paragraph(fontFamilySelector.process(
                                                        jsonComp.getJSONObject(i).has(colParam[j]) ? jsonComp
                                                                .getJSONObject(i).getString(colParam[j]) : "",
                                                        FontContext.SMALL_NORMAL_HELVETICA)));
                                    else {
                                        pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                                jsonComp.getJSONObject(i).has(colParam[j])
                                                        ? (jsonComp.getJSONObject(i).getString(colParam[j])
                                                                .equals("0")
                                                                        ? ""
                                                                        : jsonComp.getJSONObject(i)
                                                                                .getString(colParam[j]))
                                                        : "",
                                                FontContext.SMALL_NORMAL_HELVETICA)));
                                    }
                                    pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell.setBorderColor(Color.GRAY);
                                    pcell.setPadding(4);
                                    pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                                    questionTable.addCell(pcell);
                                }
                            }
                        }
                        document.add(questionTable);
                    } else {
                        String[] compParam = {
                                messageSource.getMessage("hrms.performance.competency", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.competency.description", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.weightage", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.self.rating", null,
                                        RequestContextUtils.getLocale(request)),
                                messageSource.getMessage("hrms.performance.self.comments", null,
                                        RequestContextUtils.getLocale(request)) };
                        String[] colParam = { "cmptname", "cmptdesc", "cmptwt", "emprat", "empcompcomment" };
                        PdfPTable questionTable = null;
                        if (companyPreferences.isWeightage()) {
                            questionTable = new PdfPTable(5);
                            questionTable.setWidths(new float[] { 50, 60, 30, 30, 42 });
                        } else {
                            questionTable = new PdfPTable(4);
                            questionTable.setWidths(new float[] { 50, 60, 30, 42 });
                        }
                        questionTable.setWidthPercentage(100);
                        questionTable.setSpacingBefore(20);
                        questionTable.setHeaderRows(1);
                        for (int i = 0; i < compParam.length; i++) {
                            if (!(!companyPreferences.isWeightage() && i == 2)) {
                                PdfPCell pgcell = new PdfPCell(new Paragraph(fontFamilySelector
                                        .process(compParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
                                pgcell.setBorder(0);
                                pgcell.setBorder(PdfPCell.BOX);
                                pgcell.setPadding(4);
                                pgcell.setBorderColor(Color.GRAY);
                                pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                questionTable.addCell(pgcell);
                            }
                        }

                        for (int i = 0; i < jsonComp.length(); i++) {
                            for (int j = 0; j < colParam.length; j++) {
                                if (!(!companyPreferences.isWeightage() && j == 2)) {
                                    PdfPCell pcell;
                                    if (j != 3)
                                        pcell = new PdfPCell(
                                                new Paragraph(fontFamilySelector.process(
                                                        jsonComp.getJSONObject(i).has(colParam[j]) ? jsonComp
                                                                .getJSONObject(i).getString(colParam[j]) : "",
                                                        FontContext.SMALL_NORMAL_HELVETICA)));
                                    else
                                        pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                                jsonComp.getJSONObject(i).has(colParam[j])
                                                        ? (jsonComp.getJSONObject(i).getString(colParam[j])
                                                                .equals("0")
                                                                        ? ""
                                                                        : jsonComp.getJSONObject(i)
                                                                                .getString(colParam[j]))
                                                        : "",
                                                FontContext.SMALL_NORMAL_HELVETICA)));
                                    pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell.setBorderColor(Color.GRAY);
                                    pcell.setPadding(4);
                                    pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                                    questionTable.addCell(pcell);
                                }
                            }
                        }
                        document.add(questionTable);
                    }
                } else {//Questions
                    try {
                        JSONArray jsonQues = obj.getJSONArray(1);
                        JSONArray jsonAnsTemp = obj.getJSONArray(2);
                        JSONArray jsonAns = new JSONArray();

                        PdfPTable quesMainTable = new PdfPTable(1);
                        quesMainTable.setTotalWidth(90);
                        quesMainTable.setWidthPercentage(100);
                        quesMainTable.setSpacingBefore(20);
                        quesMainTable.setSkipFirstHeader(true);
                        PdfPCell quesHeadcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                messageSource.getMessage("hrms.performance.qualitative.appraisal", null,
                                        RequestContextUtils.getLocale(request)),
                                FontContext.MEDIUM_BOLD_HELVETICA)));
                        quesHeadcell.setPadding(5);
                        quesMainTable.addCell(quesHeadcell);
                        document.add(quesMainTable);

                        PdfPTable[] quesTable = new PdfPTable[jsonQues.length()];

                        try {
                            for (int i = 0; i < jsonQues.length(); i++) {
                                String qid = (String) jsonQues.getJSONObject(i).get("qdescription");
                                for (int j = 0; j < jsonAnsTemp.length(); j++) {
                                    try {
                                        if (qid.equals((String) jsonAnsTemp.getJSONObject(j).get("question"))) {
                                            jsonAns.put(jsonAnsTemp.getJSONObject(j));
                                            break;
                                        }
                                    } catch (JSONException e) {
                                        jsonAns.put("");
                                    }
                                }
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        for (int i = 0; i < jsonQues.length(); i++) {
                            quesTable[i] = new PdfPTable(2);
                            quesTable[i].setWidthPercentage(90);
                            quesTable[i].setWidths(new float[] { 10, 80 });
                            quesTable[i].setSpacingBefore(20);
                            quesTable[i].setHeaderRows(1);

                            PdfPCell pgcell1 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                    messageSource.getMessage("hrms.performance.que", null,
                                            RequestContextUtils.getLocale(request)) + ".",
                                    FontContext.SMALL_NORMAL_HELVETICA)));
                            pgcell1.setBorder(0);
                            pgcell1.setBorder(PdfPCell.BOX);
                            pgcell1.setPadding(4);
                            pgcell1.setHorizontalAlignment(Element.ALIGN_CENTER);
                            quesTable[i].addCell(pgcell1);

                            PdfPCell pgcell2 = new PdfPCell(
                                    new Paragraph(
                                            fontFamilySelector
                                                    .process(
                                                            jsonQues.getJSONObject(i).has("qdesc") ? jsonQues
                                                                    .getJSONObject(i).getString("qdesc") : "",
                                                            FontContext.SMALL_NORMAL_HELVETICA)));
                            pgcell2.setBorder(0);
                            pgcell2.setBorder(PdfPCell.BOX);
                            pgcell2.setPadding(4);
                            pgcell2.setHorizontalAlignment(Element.ALIGN_LEFT);
                            quesTable[i].addCell(pgcell2);

                            int cnt = 0;
                            try {
                                cnt = jsonQues.getJSONObject(i).has("qans")
                                        ? Integer.parseInt(jsonQues.getJSONObject(i).getString("qans"))
                                        : 0;
                            } catch (NumberFormatException e) {
                                e.printStackTrace();
                            }
                            if (jsonAns.length() > 0) {
                                JSONArray arr = jsonAns.getJSONObject(i).getJSONArray("answer");
                                for (int j = 0; j < arr.length(); j++) {
                                    PdfPCell pcell1 = new PdfPCell(new Paragraph(fontFamilySelector
                                            .process((j + 1) + "", FontContext.SMALL_NORMAL_HELVETICA)));
                                    pcell1.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell1.setBorderColor(Color.GRAY);
                                    pcell1.setPadding(4);
                                    pcell1.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    pcell1.setVerticalAlignment(Element.ALIGN_CENTER);
                                    quesTable[i].addCell(pcell1);

                                    PdfPCell pcell2 = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                            arr.getJSONObject(j).getString("" + j + ""),
                                            FontContext.SMALL_NORMAL_HELVETICA)));
                                    pcell2.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell2.setBorderColor(Color.GRAY);
                                    pcell2.setPadding(4);
                                    pcell2.setHorizontalAlignment(Element.ALIGN_LEFT);
                                    pcell2.setVerticalAlignment(Element.ALIGN_CENTER);
                                    quesTable[i].addCell(pcell2);
                                }
                            } else {
                                for (int j = 0; j < cnt; j++) {
                                    PdfPCell pcell1 = new PdfPCell(new Paragraph(fontFamilySelector
                                            .process((j + 1) + "", FontContext.SMALL_NORMAL_HELVETICA)));
                                    pcell1.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell1.setBorderColor(Color.GRAY);
                                    pcell1.setPadding(4);
                                    pcell1.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    pcell1.setVerticalAlignment(Element.ALIGN_CENTER);
                                    quesTable[i].addCell(pcell1);

                                    PdfPCell pcell = new PdfPCell(new Paragraph(fontFamilySelector.process("",
                                            FontContext.SMALL_NORMAL_HELVETICA)));
                                    pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                    pcell.setBorderColor(Color.GRAY);
                                    pcell.setPadding(4);
                                    pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                    pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                                    quesTable[i].addCell(pcell);
                                }
                            }
                            PdfPCell pcell = new PdfPCell(new Paragraph(
                                    fontFamilySelector.process(" ", FontContext.SMALL_NORMAL_HELVETICA)));
                            pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                            pcell.setBorderColor(Color.GRAY);
                            pcell.setPadding(4);
                            pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                            pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                            //questionTable.addCell(pcell);

                            document.add(quesTable[i]);
                        }
                        //document.add(questionTable);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        //Comp

        //Goals
        requestParams.clear();
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        requestParams.put("checklink", "goal");
        if (hrmsCommonDAOObj.checkModule(requestParams).isSuccessFlag()) {
            try {
                JSONArray jsonGoals = obj.getJSONArray(3);
                if (!isMyAppraisal) {
                    String goalParam[] = {
                            messageSource.getMessage("hrms.performance.goals", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.percent.completed", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.goal.weightage", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.appraiser.rating", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.appraiser.comment", null,
                                    RequestContextUtils.getLocale(request)) };
                    String colHeader[] = { "gname", "gcomplete", "gwth", "gmanrat", "mangoalcomment" };
                    PdfPTable goalTable = null;
                    if (companyPreferences.isWeightage()) {
                        goalTable = new PdfPTable(5);
                        goalTable.setWidths(new float[] { 50, 60, 30, 30, 42 });
                    } else {
                        goalTable = new PdfPTable(4);
                        goalTable.setWidths(new float[] { 50, 60, 30, 42 });
                    }
                    goalTable.setWidthPercentage(100);
                    goalTable.setSpacingBefore(20);
                    goalTable.setHeaderRows(1);
                    for (int i = 0; i < goalParam.length; i++) {
                        if (!(!companyPreferences.isWeightage() && i == 2)) {
                            PdfPCell pgcell = new PdfPCell(new Paragraph(fontFamilySelector
                                    .process(goalParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
                            pgcell.setBorder(0);
                            pgcell.setBorder(PdfPCell.BOX);
                            pgcell.setPadding(4);
                            pgcell.setBorderColor(Color.GRAY);
                            pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                            goalTable.addCell(pgcell);
                        }
                    }

                    for (int i = 0; i < jsonGoals.length(); i++) {
                        for (int j = 0; j < colHeader.length; j++) {
                            if (!(!companyPreferences.isWeightage() && j == 2)) {
                                PdfPCell pcell;
                                if (j != 3)
                                    pcell = new PdfPCell(
                                            new Paragraph(
                                                    fontFamilySelector
                                                            .process(
                                                                    jsonGoals.getJSONObject(i).has(colHeader[j])
                                                                            ? jsonGoals.getJSONObject(i)
                                                                                    .getString(colHeader[j])
                                                                            : "",
                                                                    FontContext.SMALL_NORMAL_HELVETICA)));
                                else
                                    pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                            jsonGoals.getJSONObject(i).has(colHeader[j])
                                                    ? (jsonGoals.getJSONObject(i).getString(colHeader[j])
                                                            .equals("0")
                                                                    ? ""
                                                                    : jsonGoals.getJSONObject(i)
                                                                            .getString(colHeader[j]))
                                                    : "",
                                            FontContext.SMALL_NORMAL_HELVETICA)));
                                pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                pcell.setBorderColor(Color.GRAY);
                                pcell.setPadding(4);
                                pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                                goalTable.addCell(pcell);
                            }
                        }
                    }
                    document.add(goalTable);
                } else {
                    String goalParam[] = {
                            messageSource.getMessage("hrms.performance.goals", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.percent.completed", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.goal.weightage", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.self.rating", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.performance.self.comments", null,
                                    RequestContextUtils.getLocale(request)),
                            messageSource.getMessage("hrms.common.assigned.by", null,
                                    RequestContextUtils.getLocale(request)) };
                    String colHeader[] = { "gname", "gcomplete", "gwth", "gemprat", "empgoalcomment",
                            "assignedby" };
                    PdfPTable goalTable = null;
                    if (companyPreferences.isWeightage()) {
                        goalTable = new PdfPTable(6);
                        goalTable.setWidths(new float[] { 50, 60, 30, 50, 42, 60 });
                    } else {
                        goalTable = new PdfPTable(5);
                        goalTable.setWidths(new float[] { 50, 60, 50, 42, 60 });
                    }
                    goalTable.setWidthPercentage(100);
                    goalTable.setSpacingBefore(20);
                    goalTable.setHeaderRows(1);
                    for (int i = 0; i < goalParam.length; i++) {
                        if (!(!companyPreferences.isWeightage() && i == 2)) {
                            PdfPCell pgcell = new PdfPCell(new Paragraph(fontFamilySelector
                                    .process(goalParam[i], FontContext.MEDIUM_BOLD_HELVETICA)));
                            pgcell.setBorder(0);
                            pgcell.setBorder(PdfPCell.BOX);
                            pgcell.setPadding(4);
                            pgcell.setBorderColor(Color.GRAY);
                            pgcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                            goalTable.addCell(pgcell);
                        }
                    }

                    for (int i = 0; i < jsonGoals.length(); i++) {
                        for (int j = 0; j < colHeader.length; j++) {
                            if (!(!companyPreferences.isWeightage() && j == 2)) {
                                PdfPCell pcell;
                                if (j != 3)
                                    pcell = new PdfPCell(
                                            new Paragraph(
                                                    fontFamilySelector
                                                            .process(
                                                                    jsonGoals.getJSONObject(i).has(colHeader[j])
                                                                            ? jsonGoals.getJSONObject(i)
                                                                                    .getString(colHeader[j])
                                                                            : "",
                                                                    FontContext.SMALL_NORMAL_HELVETICA)));
                                else
                                    pcell = new PdfPCell(new Paragraph(fontFamilySelector.process(
                                            jsonGoals.getJSONObject(i).has(colHeader[j])
                                                    ? (jsonGoals.getJSONObject(i).getString(colHeader[j])
                                                            .equals("0")
                                                                    ? ""
                                                                    : jsonGoals.getJSONObject(i)
                                                                            .getString(colHeader[j]))
                                                    : "",
                                            FontContext.SMALL_NORMAL_HELVETICA)));
                                pcell.setBorder(PdfPCell.BOTTOM | PdfPCell.LEFT | PdfPCell.RIGHT);
                                pcell.setBorderColor(Color.GRAY);
                                pcell.setPadding(4);
                                pcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                pcell.setVerticalAlignment(Element.ALIGN_CENTER);
                                goalTable.addCell(pcell);
                            }
                        }
                    }
                    document.add(goalTable);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        //Goals

        document.newPage();
        document.close();
        response.setHeader("Content-Disposition", "attachment; filename=\"" + "App_Form" + ".pdf\"");
        response.setContentType("application/octet-stream");
        response.setContentLength(baos.size());
        response.getOutputStream().write(baos.toByteArray());
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        writer.close();
    }
}

From source file:com.macrosoft.icms.util.PDFCreator.java

public static void createPdfByData(String fileName, String path, Map dataMap) {
    Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
    String opetype = (String) dataMap.get("opetype");

    try {//from   w ww.j a  v  a 2s  . c om
        //PDF
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        PdfWriter.getInstance(document, new FileOutputStream(path + fileName));

        //PDF
        document.open();

        //
        BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font titleChinese = new Font(bfChinese, 30, Font.BOLD);
        //table
        Font contentFont = new Font(bfChinese, 16, Font.NORMAL);
        //table
        Font tblTitleFont = new Font(bfChinese, 16, Font.BOLD);
        //PDF
        Paragraph title = new Paragraph((String) dataMap.get("title"), titleChinese);
        title.setAlignment(Paragraph.ALIGN_CENTER);
        document.add(title);

        Paragraph attionTitle = new Paragraph("", contentFont);
        attionTitle.setAlignment(Paragraph.ALIGN_CENTER);

        if ("GT".equals(opetype)) {
            Map<String, String> gtMap = (Map<String, String>) dataMap.get("gtMap");
            Table gtxxtable = new Table(5);
            int gtxxwidths[] = { 30, 15, 20, 15, 20 };
            gtxxtable.setWidths(gtxxwidths);
            gtxxtable.setWidth(100);
            gtxxtable.setPadding(3);
            gtxxtable.setBorderWidth(1);
            gtxxtable.setAlignment(Cell.ALIGN_CENTER);

            Cell cell = new Cell(new Phrase(" ", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("traname"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(4);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setRowspan(7);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("name"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("sex"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("cerno"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(3);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("dom"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(3);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("postalcode"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("tel"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("email"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(3);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("polstand"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("nation"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("litedeg"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("occstbeapp"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setRowspan(2);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("grjy"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(4);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("jtjy"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("fammember"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(2);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("busscoandform"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(4);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("oploc"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(4);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("empnum"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase("", contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            gtxxtable.addCell(cell);
            cell = new Cell(new Phrase(gtMap == null ? "" : gtMap.get("capam"), contentFont));
            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
            cell.setColspan(2);
            gtxxtable.addCell(cell);

            Paragraph p1 = new Paragraph(
                    "\n    ",
                    contentFont);
            Paragraph p2 = new Paragraph(" ", contentFont);
            p2.setIndentationLeft(500);
            Paragraph p3 = new Paragraph("                         ", contentFont);
            p3.setIndentationLeft(500);
            cell = new Cell();
            cell.add(p1);
            cell.add(p2);
            cell.add(p3);
            cell.setColspan(5);
            gtxxtable.addCell(cell);

            document.add(gtxxtable);

            Paragraph wtitle = new Paragraph("\n", titleChinese);
            wtitle.setAlignment(Paragraph.ALIGN_CENTER);
            document.add(wtitle);

            Map<String, String> wtrMap = (Map<String, String>) dataMap.get("wtrMap");
            Paragraph wtr = new Paragraph("\n :" + (wtrMap == null ? "" : wtrMap.get("sqr")),
                    contentFont);
            document.add(wtr);
            wtr = new Paragraph(" " + (wtrMap == null ? "" : wtrMap.get("wtr")), contentFont);
            document.add(wtr);
            wtr = new Paragraph("  \n", contentFont);
            document.add(wtr);
            wtr = new Paragraph("1. " + (wtrMap == null ? " " : wtrMap.get("qx1"))
                    + "  ", contentFont);
            wtr.setIndentationLeft(100);
            document.add(wtr);
            wtr = new Paragraph("2. " + (wtrMap == null ? " " : wtrMap.get("qx2"))
                    + "  ", contentFont);
            wtr.setIndentationLeft(100);
            document.add(wtr);
            wtr = new Paragraph(
                    "3. " + (wtrMap == null ? " " : wtrMap.get("qx3")) + "  ",
                    contentFont);
            wtr.setIndentationLeft(100);
            document.add(wtr);
            wtr = new Paragraph("4. " + (wtrMap == null ? " " : wtrMap.get("qx4"))
                    + "  ", contentFont);
            wtr.setIndentationLeft(100);
            document.add(wtr);

            wtr = new Paragraph("\n   " + (wtrMap == null ? "" : wtrMap.get("confrom"))
                    + "         " + (wtrMap == null ? "" : wtrMap.get("conto")) + "\n", contentFont);
            document.add(wtr);

            Table t = new Table(4);
            int twidths[] = { 20, 30, 20, 30 };
            t.setWidths(twidths);
            t.setWidth(100);
            t.setPadding(3);
            t.setBorderWidth(1);
            t.setAlignment(Cell.ALIGN_CENTER);

            Cell tCell = new Cell(new Phrase("", contentFont));
            tCell.setColspan(2);
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            tCell = new Cell(new Phrase(wtrMap == null ? "" : wtrMap.get("unit"), contentFont));
            tCell.setColspan(2);
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            tCell = new Cell(new Phrase("", contentFont));
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            tCell = new Cell(new Phrase(wtrMap == null ? "" : wtrMap.get("postalcode"), contentFont));
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            tCell = new Cell(new Phrase("", contentFont));
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            tCell = new Cell(new Phrase(wtrMap == null ? "" : wtrMap.get("tel"), contentFont));
            tCell.setHorizontalAlignment(Element.ALIGN_CENTER);
            t.addCell(tCell);
            document.add(t);

            Paragraph pp = new Paragraph("\n", contentFont);
            document.add(pp);
            pp = new Paragraph("                                                                     ",
                    contentFont);
            pp.setAlignment(Paragraph.ALIGN_RIGHT);
            document.add(pp);

        } else {
            //
            //
            Table jbxxtable = new Table(4);
            int jbxxwidths[] = { 20, 30, 20, 30 };
            jbxxtable.setWidths(jbxxwidths);
            jbxxtable.setWidth(100);
            jbxxtable.setPadding(3);
            jbxxtable.setBorderWidth(1);
            jbxxtable.setAlignment(Cell.ALIGN_CENTER);

            //
            Cell jbxxTitle = new Cell(new Phrase("", tblTitleFont));
            jbxxTitle.setColspan(4);
            jbxxTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(jbxxTitle);

            Map<String, String> jbxxMap = (Map<String, String>) dataMap.get("jbxxMap");

            if ("GS".equals(opetype) || "NZFR".equals(opetype) || "HHQY".equals(opetype)
                    || "GRDZ".equals(opetype) || "WZGS".equals(opetype) || "WZHH".equals(opetype)
                    || "HZS".equals(opetype) || "HZSFZ".equals(opetype)) {
                Cell jbxxName = new Cell(new Phrase(" ", contentFont));
                jbxxName.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxName);

                Cell jbxxNameValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("entname"), contentFont));
                jbxxNameValue.setColspan(3);
                jbxxtable.addCell(jbxxNameValue);

                Cell jbxxRegno = new Cell(new Phrase("/\n", contentFont));
                jbxxRegno.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxRegno);
                if ("WZGS".equals(opetype)) {
                    Cell jbxxRegnoValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("regno"), contentFont));
                    jbxxtable.addCell(jbxxRegnoValue);
                    Cell gbc = new Cell(new Phrase("", contentFont));
                    gbc.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(gbc);
                    gbc = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("country"), contentFont));
                    gbc.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(gbc);
                } else {
                    Cell jbxxRegnoValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("regno"), contentFont));
                    jbxxRegnoValue.setColspan(3);
                    jbxxtable.addCell(jbxxRegnoValue);
                }
            } else if ("FGS".equals(opetype) || "NZYY".equals(opetype) || "HHFZ".equals(opetype)
                    || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype) || "WZHHFZ".equals(opetype)) {
                String lsdw = "";
                if ("NZYY".equals(opetype) || "WZFZ".equals(opetype) || "WZHHFZ".equals(opetype)) {
                    lsdw = "";
                }
                Cell cell = null;
                if (!"HHFZ".equals(opetype) && !"GRDZFZ".equals(opetype)) {
                    cell = new Cell(new Phrase(lsdw, contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("supentname"), contentFont));
                    jbxxtable.addCell(cell);

                    cell = new Cell(new Phrase("/", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("supregno"), contentFont));
                    jbxxtable.addCell(cell);
                }

                String fgsname = "";
                if ("NZYY".equals(opetype)) {
                    fgsname = "";
                } else if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype)
                        || "WZHHFZ".equals(opetype)) {
                    fgsname = "";
                }
                cell = new Cell(new Phrase(fgsname, contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("entname"), contentFont));
                jbxxtable.addCell(cell);

                String regname = "//";
                if ("NZYY".equals(opetype)) {
                    regname = "//";
                } else if ("NZYY".equals(opetype) || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype)) {
                    regname = "//";
                }
                cell = new Cell(new Phrase(regname, contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regno"), contentFont));
                jbxxtable.addCell(cell);
            }
            if ("WGJY".equals(opetype)) {
                Cell cell = new Cell(new Phrase(" ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("entname"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("/", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regno"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(" ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("dom"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else if ("WGDB".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("entname"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("/", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regno"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("dom"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else {
                String domname = "";
                if ("FGS".equals(opetype) || "WZHHFZ".equals(opetype)) {
                    domname = "";
                } else if ("GRDZ".equals(opetype)) {
                    domname = "";
                } else if ("GRDZFZ".equals(opetype) || "HHFZ".equals(opetype) || "HZSFZ".equals(opetype)) {
                    domname = "";
                } else if ("WZHH".equals(opetype) || "HHQY".equals(opetype)) {
                    domname = "";
                }
                Cell jbxxDom = new Cell(new Phrase(domname, contentFont));
                jbxxDom.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxDom);

                Cell jbxxDomValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("dom"), contentFont));
                jbxxDomValue.setColspan(3);
                jbxxtable.addCell(jbxxDomValue);

                Cell jbxxOploc = new Cell(new Phrase("", contentFont));
                jbxxOploc.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxOploc);

                Cell jbxxOplocValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("oploc"), contentFont));
                jbxxOplocValue.setColspan(3);
                jbxxtable.addCell(jbxxOplocValue);
            }

            Cell jbxxTel = new Cell(new Phrase("", contentFont));
            jbxxTel.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(jbxxTel);

            Cell jbxxTelValue = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("tel"), contentFont));
            jbxxTelValue.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(jbxxTelValue);

            Cell jbxxEmail = new Cell(new Phrase("", contentFont));
            jbxxEmail.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(jbxxEmail);

            Cell jbxxEmailValue = new Cell(
                    new Phrase(jbxxMap == null ? "" : jbxxMap.get("postalcode"), contentFont));
            jbxxEmailValue.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(jbxxEmailValue);

            //
            String slname = " ";
            if ("NZFR".equals(opetype) || "NZYY".equals(opetype) || "WGJY".equals(opetype)) {
                slname = "";
            }
            Cell slTitle = new Cell(new Phrase(slname, tblTitleFont));
            slTitle.setColspan(4);
            slTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
            jbxxtable.addCell(slTitle);

            if ("GS".equals(opetype) || "NZFR".equals(opetype) || "WZGS".equals(opetype)) {
                Cell jbxxLerep = new Cell(new Phrase("", contentFont));
                jbxxLerep.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxLerep);

                Cell jbxxLerepValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                jbxxLerepValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxLerepValue);

                if ("WZGS".equals(opetype)) {
                    Cell cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("country"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("position"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    cell.setColspan(3);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("congro"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("congrocur"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("congrousd"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("enttype"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("insform"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("\n\n\n", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    cell.setColspan(3);
                    jbxxtable.addCell(cell);
                } else {
                    Cell jbxxPosition = new Cell(new Phrase(" ", contentFont));
                    jbxxPosition.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxPosition);

                    Cell jbxxPositionValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("position"), contentFont));
                    jbxxPositionValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxPositionValue);

                    String regcapname = "";
                    if ("NZFR".equals(opetype)) {
                        regcapname = "";
                    }
                    Cell jbxxRegcap = new Cell(new Phrase(regcapname, contentFont));
                    jbxxRegcap.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxRegcap);

                    Cell jbxxRegcapValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                    jbxxRegcapValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxRegcapValue);

                    String enttypename = "";
                    if ("NZFR".equals(opetype)) {
                        enttypename = "";
                    }
                    Cell jbxxEnttype = new Cell(new Phrase(enttypename, contentFont));
                    jbxxEnttype.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxEnttype);

                    Cell jbxxEnttypeValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("enttype"), contentFont));
                    jbxxEnttypeValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxEnttypeValue);
                }

                if ("GS".equals(opetype)) {
                    Cell jbxxInsform = new Cell(new Phrase("\n", contentFont));
                    jbxxInsform.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxInsform);

                    Cell jbxxInsformValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("insform"), contentFont));
                    jbxxInsformValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxInsformValue.setColspan(3);
                    jbxxtable.addCell(jbxxInsformValue);

                    Cell jbxxBusscope = new Cell(new Phrase("\n\n\n", contentFont));
                    jbxxBusscope.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxBusscope);

                    Cell jbxxBusscopeValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                    jbxxBusscopeValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxBusscopeValue.setColspan(3);
                    jbxxtable.addCell(jbxxBusscopeValue);
                }

                Cell jbxxOpfyears = new Cell(new Phrase("", contentFont));
                jbxxOpfyears.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxOpfyears);

                Cell jbxxOpfyearsValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("opfyears"), contentFont));
                jbxxOpfyearsValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxOpfyearsValue);

                Cell jbxxConum = new Cell(new Phrase("", contentFont));
                jbxxConum.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxConum);

                Cell jbxxConumValue = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("conum"), contentFont));
                jbxxConumValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(jbxxConumValue);

                if ("NZFR".equals(opetype)) {
                    Cell jbxxBusscope = new Cell(new Phrase("\n\n\n", contentFont));
                    jbxxBusscope.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(jbxxBusscope);

                    Cell jbxxBusscopeValue = new Cell(
                            new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                    jbxxBusscopeValue.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxBusscopeValue.setColspan(3);
                    jbxxtable.addCell(jbxxBusscopeValue);
                }
            } else if ("FGS".equals(opetype) || "NZYY".equals(opetype) || "HHFZ".equals(opetype)
                    || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype) || "WZHHFZ".equals(opetype)
                    || "HZSFZ".equals(opetype)) {
                Cell cell = null;
                if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype)) {
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("houseadd"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("cerno"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("empno"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("tel"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("postalcode"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("yysj"), contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    cell.setColspan(3);
                    jbxxtable.addCell(cell);
                } else {
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                    jbxxtable.addCell(cell);
                    if ("NZYY".equals(opetype)) {
                        cell = new Cell(new Phrase("", contentFont));
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        jbxxtable.addCell(cell);
                        cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("tel"), contentFont));
                        jbxxtable.addCell(cell);
                        cell = new Cell(new Phrase("", contentFont));
                        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        jbxxtable.addCell(cell);
                        cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                        jbxxtable.addCell(cell);
                    }
                    cell = new Cell(new Phrase("", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    jbxxtable.addCell(cell);
                    cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("conum"), contentFont));
                    jbxxtable.addCell(cell);
                }

                String bussname = "";
                if ("FGS".equals(opetype)) {
                    bussname = "";
                } else if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype) || "WZHHFZ".equals(opetype)) {
                    bussname = "";
                }
                cell = new Cell(new Phrase(bussname, contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setColspan(3);
                jbxxtable.addCell(cell);

                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(
                        new Phrase(jbxxMap == null ? "" : jbxxMap.get("calculationmethod"), contentFont));
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else if ("HHQY".equals(opetype)) {
                Cell hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setRowspan(2);
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(2);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(
                        new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(2);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("hhlx"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(3);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("hhcze"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(3);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("\n\n\n", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(3);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(" ______________________________________________",
                        contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(3);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("parnum"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("exenum"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase("", contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(hhcell);
                hhcell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("empnum"), contentFont));
                hhcell.setHorizontalAlignment(Element.ALIGN_CENTER);
                hhcell.setColspan(3);
                jbxxtable.addCell(hhcell);
            } else if ("GRDZ".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("empnum"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("grczfs"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("\n\n\n", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else if ("WZHH".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("  ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("country"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("reccap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcapcur"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("enttype"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("\n\n\n", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("opfyears"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("conum"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
            } else if ("WGJY".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("enttype"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("depincha"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("exaauth"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("sandate"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcapcur"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("yysj"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("itemofoporcpro"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentname"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentadd"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else if ("WGDB".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("yysj"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regorg"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("yysj"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("sandate"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("sandocno"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);

                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(4);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentname"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentforname"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(" ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentadd"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("cxqx"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentautsign"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forenliafor"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentcap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("country"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("forentscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            } else if ("HZS".equals(opetype)) {
                Cell cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("lerep"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("regcap"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
                Paragraph p1 = new Paragraph("    " + dataMap.get("cyzs") + "     ",
                        contentFont);
                Paragraph p2 = new Paragraph("    " + dataMap.get("nmcy")
                        + "          " + dataMap.get("nmcyrate") + "   %", contentFont);
                p2.setIndentationLeft(60);
                Paragraph p3 = new Paragraph("     " + dataMap.get("frcy")
                        + "          " + dataMap.get("frcyrate") + "   %", contentFont);
                p3.setIndentationLeft(120);

                cell = new Cell();
                cell.add(p1);
                cell.add(p2);
                cell.add(p3);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(4);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase("\n\n\n", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                jbxxtable.addCell(cell);
                cell = new Cell(new Phrase(jbxxMap == null ? "" : jbxxMap.get("busscope"), contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(3);
                jbxxtable.addCell(cell);
            }

            document.add(jbxxtable);

            //
            //TABLE
            Table remarktable = new Table(6);
            int remarkwidths[] = { 15, 10, 20, 15, 20, 20 };
            remarktable.setWidths(remarkwidths);
            remarktable.setWidth(100);
            remarktable.setPadding(3);
            remarktable.setBorderWidth(1);
            remarktable.setAlignment(Cell.ALIGN_CENTER);
            if ("GS".equals(opetype) || "NZFR".equals(opetype) || "HHQY".equals(opetype)
                    || "HHFZ".equals(opetype) || "GRDZ".equals(opetype) || "GRDZFZ".equals(opetype)
                    || "WZGS".equals(opetype) || "WZHH".equals(opetype) || "HZS".equals(opetype)) {
                Cell bgTitle = new Cell(new Phrase("", tblTitleFont));
                bgTitle.setColspan(6);
                bgTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(bgTitle);

                Cell bg1 = new Cell(new Phrase("", contentFont));
                bg1.setColspan(2);
                bg1.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(bg1);

                Cell bg2 = new Cell(new Phrase("", contentFont));
                bg2.setColspan(2);
                bg2.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(bg2);

                Cell bg3 = new Cell(new Phrase("", contentFont));
                bg3.setColspan(2);
                bg3.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(bg3);

                for (int i = 0; i < 5; i++) {
                    Cell bg11 = new Cell("");
                    bg11.setColspan(2);
                    remarktable.addCell(bg11);

                    Cell bg21 = new Cell(" ");
                    bg21.setColspan(2);
                    remarktable.addCell(bg21);

                    Cell bg31 = new Cell(" ");
                    bg31.setColspan(2);
                    remarktable.addCell(bg31);
                }

                if ("GS".equals(opetype) || "HHQY".equals(opetype) || "GRDZ".equals(opetype)
                        || "WZGS".equals(opetype) || "WZHH".equals(opetype) || "HZS".equals(opetype)) {
                    Cell baTitle = new Cell(new Phrase(" ", tblTitleFont));
                    baTitle.setColspan(6);
                    baTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(baTitle);

                    Cell fgsCell = new Cell(new Phrase("\n", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    fgsCell.setRowspan(2);
                    remarktable.addCell(fgsCell);

                    Cell nameCell = new Cell(new Phrase("", contentFont));
                    nameCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nameCell);

                    Cell nameValueCell = new Cell(new Phrase("", contentFont));
                    remarktable.addCell(nameValueCell);

                    Cell regnoCell = new Cell(new Phrase("/", contentFont));
                    regnoCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    regnoCell.setColspan(2);
                    remarktable.addCell(regnoCell);

                    Cell regnoValueCell = new Cell(new Phrase("", contentFont));
                    remarktable.addCell(regnoValueCell);

                    Cell djjgCell = new Cell(new Phrase("", contentFont));
                    djjgCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(djjgCell);

                    Cell djjgValueCell = new Cell(new Phrase("", contentFont));
                    remarktable.addCell(djjgValueCell);

                    Cell djrqCell = new Cell(new Phrase("", contentFont));
                    djrqCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    djrqCell.setColspan(2);
                    remarktable.addCell(djrqCell);

                    Cell djrqValueCell = new Cell(new Phrase("", contentFont));
                    remarktable.addCell(djrqValueCell);

                    if ("GRDZ".equals(opetype)) {
                        Cell qtc = new Cell(new Phrase("", contentFont));
                        qtc.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(qtc);
                        qtc = new Cell(new Phrase("     ", contentFont));
                        qtc.setHorizontalAlignment(Element.ALIGN_CENTER);
                        qtc.setColspan(5);
                        remarktable.addCell(qtc);
                    } else {
                        Cell qszCell = new Cell(new Phrase("", contentFont));
                        qszCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        qszCell.setRowspan(2);
                        remarktable.addCell(qszCell);

                        Cell cyCell = new Cell(new Phrase("", contentFont));
                        cyCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(cyCell);

                        Cell cyValueCell = new Cell(new Phrase("", contentFont));
                        cyValueCell.setColspan(4);
                        remarktable.addCell(cyValueCell);

                        Cell fzrCell = new Cell(new Phrase("", contentFont));
                        fzrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(fzrCell);

                        Cell fzrValueCell = new Cell(new Phrase("", contentFont));
                        remarktable.addCell(fzrValueCell);

                        Cell lxdhCell = new Cell(new Phrase("", contentFont));
                        lxdhCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        lxdhCell.setColspan(2);
                        remarktable.addCell(lxdhCell);

                        Cell lxdhValueCell = new Cell(new Phrase("", contentFont));
                        remarktable.addCell(lxdhValueCell);
                    }

                    if ("GS".equals(opetype) || "WZGS".equals(opetype)) {
                        Cell qtCell = new Cell(new Phrase("", contentFont));
                        qtCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(qtCell);
                        Cell qtValueCell = new Cell(new Phrase(
                                "                    ",
                                contentFont));
                        qtValueCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        qtValueCell.setColspan(5);
                        remarktable.addCell(qtValueCell);
                    } else if ("HHQY".equals(opetype)) {
                        Cell qtCell = new Cell(new Phrase("", contentFont));
                        qtCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(qtCell);
                        Cell qtValueCell = new Cell(
                                new Phrase("        ", contentFont));
                        qtValueCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        qtValueCell.setColspan(5);
                        remarktable.addCell(qtValueCell);
                        qtCell = new Cell(new Phrase("", contentFont));
                        qtCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        remarktable.addCell(qtCell);
                        qtValueCell = new Cell(new Phrase("         ", contentFont));
                        qtValueCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                        qtValueCell.setColspan(5);
                        remarktable.addCell(qtValueCell);
                    }

                } else if ("NZFR".equals(opetype)) {
                    Cell nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setRowspan(2);
                    nzfrCell.setColspan(2);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("  ", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("  ", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("  ", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);

                    nzfrCell = new Cell(new Phrase(" ", tblTitleFont));
                    nzfrCell.setColspan(6);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);

                    nzfrCell = new Cell(new Phrase("\n", contentFont));
                    nzfrCell.setRowspan(4);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);

                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setColspan(2);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase(" ", contentFont));
                    nzfrCell.setColspan(3);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setColspan(2);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase(" ", contentFont));
                    nzfrCell.setColspan(3);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setColspan(2);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase(" ", contentFont));
                    nzfrCell.setColspan(3);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setColspan(2);
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase(" ", contentFont));
                    nzfrCell.setColspan(3);
                    remarktable.addCell(nzfrCell);

                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("    ", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    nzfrCell.setColspan(2);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(nzfrCell);
                    nzfrCell = new Cell(new Phrase("     ", contentFont));
                    nzfrCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    nzfrCell.setColspan(2);
                    remarktable.addCell(nzfrCell);
                }
            } else if ("FGS".equals(opetype) || "NZYY".equals(opetype) || "WZFZ".equals(opetype)
                    || "WZHHFZ".equals(opetype) || "WGJY".equals(opetype) || "WGDB".equals(opetype)
                    || "HZSFZ".equals(opetype)) {
                Cell fgsCell = new Cell(new Phrase("/", tblTitleFont));
                fgsCell.setColspan(6);
                fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(fgsCell);

                fgsCell = new Cell(new Phrase("/", contentFont));
                fgsCell.setColspan(2);
                fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(fgsCell);

                fgsCell = new Cell(new Phrase("/", contentFont));
                fgsCell.setColspan(2);
                fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(fgsCell);

                fgsCell = new Cell(new Phrase("/", contentFont));
                fgsCell.setColspan(2);
                fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(fgsCell);

                for (int i = 0; i < 3; i++) {
                    fgsCell = new Cell("");
                    fgsCell.setColspan(2);
                    remarktable.addCell(fgsCell);

                    fgsCell = new Cell(" ");
                    fgsCell.setColspan(2);
                    remarktable.addCell(fgsCell);

                    fgsCell = new Cell(" ");
                    fgsCell.setColspan(2);
                    remarktable.addCell(fgsCell);
                }

                if ("FGS".equals(opetype) || "HZSFZ".equals(opetype)) {
                    fgsCell = new Cell(new Phrase(" ", tblTitleFont));
                    fgsCell.setColspan(6);
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase(
                            "  1;      2;\n  3;  4",
                            contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);

                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("       ", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);
                } else if ("NZYY".equals(opetype)) {
                    fgsCell = new Cell(new Phrase(" ", tblTitleFont));
                    fgsCell.setColspan(6);
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase(
                            "  1;     2;\n  3 3; 4",
                            contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);

                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(
                            new Phrase("   ", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("       ", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);

                    fgsCell = new Cell(new Phrase("", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(fgsCell);
                    fgsCell = new Cell(new Phrase("            ", contentFont));
                    fgsCell.setHorizontalAlignment(Element.ALIGN_LEFT);
                    fgsCell.setColspan(5);
                    remarktable.addCell(fgsCell);
                }
            }

            if ("HHFZ".equals(opetype) || "GRDZ".equals(opetype) || "GRDZFZ".equals(opetype)
                    || "WZFZ".equals(opetype) || "WZHHFZ".equals(opetype)) {
                Cell cell = null;
                cell = new Cell(new Phrase(" ", tblTitleFont));
                cell.setColspan(6);
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(cell);

                cell = new Cell(new Phrase(" ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(cell);
                if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype)
                        || "WZHHFZ".equals(opetype)) {
                    cell = new Cell(new Phrase(
                            " 1.       2.\n 3.       4. ",
                            contentFont));
                } else if ("GRDZ".equals(opetype)) {
                    cell = new Cell(new Phrase(
                            " \n \n \n __________________ ",
                            contentFont));
                }
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(5);
                remarktable.addCell(cell);
                if ("GRDZ".equals(opetype)) {
                    cell = new Cell(new Phrase(" ", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    remarktable.addCell(cell);
                    cell = new Cell(new Phrase(" ", contentFont));
                    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                    cell.setColspan(5);
                    remarktable.addCell(cell);
                }
                cell = new Cell(new Phrase(" ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                remarktable.addCell(cell);
                cell = new Cell(new Phrase("      ", contentFont));
                cell.setHorizontalAlignment(Element.ALIGN_CENTER);
                cell.setColspan(5);
                remarktable.addCell(cell);
            }

            //
            Cell sqrTitle = new Cell(new Phrase("", tblTitleFont));
            sqrTitle.setColspan(6);
            sqrTitle.setHorizontalAlignment(Element.ALIGN_CENTER);
            remarktable.addCell(sqrTitle);

            String sqrtext = "";
            if ("GS".equals(opetype) || "WZGS".equals(opetype)) {
                sqrtext = "\n       \n";
            } else if ("FGS".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("NZFR".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("NZYY".equals(opetype)) {
                sqrtext = "\n       \n";
            } else if ("HHQY".equals(opetype) || "WZHH".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype)
                    || "WZHHFZ".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("GRDZ".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("WGJY".equals(opetype)) {
                sqrtext = "\n      \n";
            } else if ("WGDB".equals(opetype)) {
                sqrtext = "\n       \n";
            } else if ("HZS".equals(opetype) || "HZSFZ".equals(opetype)) {
                sqrtext = "\n      \n";
            }
            Paragraph sqrp = new Paragraph(sqrtext, contentFont);
            String fdbdrname = "";
            if ("HHQY".equals(opetype) || "WZHH".equals(opetype)) {
                fdbdrname = "";
            } else if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype)
                    || "WZHHFZ".equals(opetype)) {
                fdbdrname = "\n  \n  ";
            } else if ("GRDZ".equals(opetype)) {
                fdbdrname = "";
            } else if ("WGJY".equals(opetype) || "WGDB".equals(opetype)) {
                fdbdrname = ":";
            }
            Paragraph fdbdr = new Paragraph("      " + fdbdrname
                    + "                                                                                                        ",
                    contentFont);
            fdbdr.setFirstLineIndent(40);
            Paragraph fzrqz = new Paragraph(
                    "    " + (("GS".equals(opetype)
                            || "HHQY".equals(opetype) || "WZHH".equals(opetype) || "GRDZ".equals(opetype)
                            || "WZGS".equals(opetype) || "HZS".equals(opetype))
                                    ? ""
                                    : "")
                            + "                                                                                                                                              ",
                    contentFont);
            fzrqz.setFirstLineIndent(40);
            Cell allCell = new Cell();
            allCell.add(sqrp);
            allCell.add(fdbdr);
            allCell.add(fzrqz);
            allCell.setColspan(6);
            remarktable.addCell(allCell);

            document.add(remarktable);

            //
            if ("GRDZ".equals(opetype)) {
                Paragraph lerepTitle = new Paragraph("\n", titleChinese);
                lerepTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(lerepTitle);

                //TABLE
                Table lereptable = new Table(4);
                int lerepwidths[] = { 20, 30, 20, 30 };
                lereptable.setWidths(lerepwidths);
                lereptable.setWidth(100);
                lereptable.setPadding(3);
                lereptable.setBorderWidth(1);
                lereptable.setAlignment(Cell.ALIGN_CENTER);

                Map<String, String> lerepMap = (Map<String, String>) dataMap.get("lerepMap");
                Cell lerep1 = new Cell(new Phrase(" ", contentFont));
                lerep1.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep1);
                Cell lerep2 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("name"), contentFont));
                lerep2.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep2);
                Cell lerep3 = new Cell(new Phrase(" ", contentFont));
                lerep3.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep3);
                Cell lerep4 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("sex"), contentFont));
                lerep4.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep4);

                Cell lerep5 = new Cell(new Phrase("", contentFont));
                lerep5.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep5);
                Cell lerep6 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("natdate"), contentFont));
                lerep6.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep6);
                Cell lerep7 = new Cell(new Phrase(" ", contentFont));
                lerep7.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep7);
                Cell lerep8 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("nation"), contentFont));
                lerep8.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep8);

                Cell lerep9 = new Cell(new Phrase("", contentFont));
                lerep9.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep9);
                Cell lerep10 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("litedeg"), contentFont));
                lerep10.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep10);
                Cell lerep11 = new Cell(new Phrase("", contentFont));
                lerep11.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep11);
                Cell lerep12 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("polstand"), contentFont));
                lerep12.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep12);

                Cell lerep13 = new Cell(new Phrase("", contentFont));
                lerep13.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep13);
                Cell lerep14 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("mobile"), contentFont));
                lerep14.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep14);
                Cell lerep15 = new Cell(new Phrase("", contentFont));
                lerep15.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep15);
                Cell lerep16 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("email"), contentFont));
                lerep16.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep16);

                Cell lerep17 = new Cell(new Phrase("", contentFont));
                lerep17.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep17);
                Cell lerep18 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("certype"), contentFont));
                lerep18.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep18);
                Cell lerep19 = new Cell(new Phrase("", contentFont));
                lerep19.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep19);
                Cell lerep20 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("cerno"), contentFont));
                lerep20.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep20);

                Cell lerep21 = new Cell(new Phrase(" ", contentFont));
                lerep21.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep21);
                Cell lerep22 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("houseadd"), contentFont));
                lerep22.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep22);
                Cell lerep23 = new Cell(new Phrase("", contentFont));
                lerep23.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep23);
                Cell lerep24 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("postalcode"), contentFont));
                lerep24.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep24);

                Cell lerep25 = new Cell(new Phrase("", contentFont));
                lerep25.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep25);
                Cell lerep26 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("occstbeapp"), contentFont));
                lerep26.setHorizontalAlignment(Element.ALIGN_CENTER);
                lerep26.setColspan(3);
                lereptable.addCell(lerep26);

                document.add(lereptable);
            } else if ("WGDB".equals(opetype)) {
                Paragraph lerepTitle1 = new Paragraph("\n", titleChinese);
                lerepTitle1.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(lerepTitle1);
                Paragraph lerepTitle2 = new Paragraph("/", titleChinese);
                lerepTitle2.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(lerepTitle2);

                //TABLE
                Table lereptable = new Table(4);
                int lerepwidths[] = { 20, 30, 20, 30 };
                lereptable.setWidths(lerepwidths);
                lereptable.setWidth(100);
                lereptable.setPadding(3);
                lereptable.setBorderWidth(1);
                lereptable.setAlignment(Cell.ALIGN_CENTER);

                Map<String, String> lerepMap = (Map<String, String>) dataMap.get("lerepMap");
                Cell lerep1 = new Cell(new Phrase("", contentFont));
                lerep1.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep1);
                Cell lerep2 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("entname"), contentFont));
                lerep2.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep2);
                Cell lerep3 = new Cell(new Phrase("", contentFont));
                lerep3.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep3);
                Cell lerep4 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("name"), contentFont));
                lerep4.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep4);

                Cell lerep5 = new Cell(new Phrase("", contentFont));
                lerep5.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep5);
                Cell lerep6 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("position"), contentFont));
                lerep6.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep6);
                Cell lerep7 = new Cell(new Phrase("", contentFont));
                lerep7.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep7);
                Cell lerep8 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("country"), contentFont));
                lerep8.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep8);

                Cell lerep9 = new Cell(new Phrase("", contentFont));
                lerep9.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep9);
                Cell lerep10 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("arrchdate"), contentFont));
                lerep10.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep10);
                Cell lerep11 = new Cell(new Phrase("", contentFont));
                lerep11.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep11);
                Cell lerep12 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("tel"), contentFont));
                lerep12.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep12);

                Cell lerep13 = new Cell(new Phrase("", contentFont));
                lerep13.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep13);
                Cell lerep14 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("certype"), contentFont));
                lerep14.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep14);
                Cell lerep15 = new Cell(new Phrase("", contentFont));
                lerep15.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep15);
                Cell lerep16 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("cerno"), contentFont));
                lerep16.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep16);

                Cell lerep17 = new Cell(new Phrase("", contentFont));
                lerep17.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep17);
                Cell lerep18 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("houaddinchina"), contentFont));
                lerep18.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep18);
                Cell lerep19 = new Cell(new Phrase("", contentFont));
                lerep19.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep19);
                Cell lerep20 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("repdate"), contentFont));
                lerep20.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep20);

                Paragraph rep1 = new Paragraph("",
                        contentFont);
                rep1.setAlignment(Paragraph.ALIGN_LEFT);
                Paragraph rep2 = new Paragraph("1",
                        contentFont);
                rep2.setAlignment(Paragraph.ALIGN_LEFT);
                Paragraph rep3 = new Paragraph(
                        "25",
                        contentFont);
                rep3.setAlignment(Paragraph.ALIGN_LEFT);
                Paragraph rep4 = new Paragraph("3", contentFont);
                rep4.setAlignment(Paragraph.ALIGN_LEFT);
                Paragraph rep5 = new Paragraph("/", contentFont);
                rep5.setAlignment(Paragraph.ALIGN_LEFT);
                rep5.setIndentationLeft(200);

                Cell lerep21 = new Cell();
                lerep21.add(rep1);
                lerep21.add(rep2);
                lerep21.add(rep3);
                lerep21.add(rep4);
                lerep21.add(rep5);
                lerep21.setColspan(4);
                lereptable.addCell(lerep21);

                document.add(lereptable);
            } else {
                Paragraph lerepTitle = null;
                if ("GS".equals(opetype) || "NZFR".equals(opetype) || "WZGS".equals(opetype)
                        || "HZS".equals(opetype)) {
                    lerepTitle = new Paragraph("\n", titleChinese);
                } else if ("FGS".equals(opetype) || "NZYY".equals(opetype) || "HHFZ".equals(opetype)
                        || "GRDZFZ".equals(opetype) || "WZFZ".equals(opetype) || "WZHHFZ".equals(opetype)
                        || "WGJY".equals(opetype) || "HZSFZ".equals(opetype)) {
                    lerepTitle = new Paragraph("\n", titleChinese);
                } else if ("HHQY".equals(opetype) || "WZHH".equals(opetype)) {
                    lerepTitle = new Paragraph("\n", titleChinese);
                }
                lerepTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(lerepTitle);

                //TABLE
                Table lereptable = new Table(4);
                int lerepwidths[] = { 20, 30, 20, 30 };
                lereptable.setWidths(lerepwidths);
                lereptable.setWidth(100);
                lereptable.setPadding(3);
                lereptable.setBorderWidth(1);
                lereptable.setAlignment(Cell.ALIGN_CENTER);

                Map<String, String> lerepMap = (Map<String, String>) dataMap.get("lerepMap");
                Cell lerep1 = new Cell(new Phrase(" ", contentFont));
                lerep1.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep1);
                Cell lerep2 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("name"), contentFont));
                lerep2.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep2);
                Cell lerep3 = new Cell(new Phrase("", contentFont));
                lerep3.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep3);
                Cell lerep4 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("tel"), contentFont));
                lerep4.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep4);

                Cell lerep5 = new Cell(new Phrase("", contentFont));
                lerep5.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep5);
                Cell lerep6 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("mobile"), contentFont));
                lerep6.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep6);
                Cell lerep7 = new Cell(new Phrase("", contentFont));
                lerep7.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep7);
                Cell lerep8 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("email"), contentFont));
                lerep8.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep8);

                Cell lerep9 = new Cell(new Phrase("", contentFont));
                lerep9.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep9);
                Cell lerep10 = new Cell(
                        new Phrase(lerepMap == null ? "" : lerepMap.get("certype"), contentFont));
                lerep10.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep10);
                Cell lerep11 = new Cell(new Phrase("", contentFont));
                lerep11.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep11);
                Cell lerep12 = new Cell(new Phrase(lerepMap == null ? "" : lerepMap.get("cerno"), contentFont));
                lerep12.setHorizontalAlignment(Element.ALIGN_CENTER);
                lereptable.addCell(lerep12);
                if ("HHFZ".equals(opetype) || "GRDZFZ".equals(opetype)) {
                    Cell lerep13 = new Cell(new Phrase("", contentFont));
                    lerep13.setHorizontalAlignment(Element.ALIGN_CENTER);
                    lereptable.addCell(lerep13);
                    Cell lerep14 = new Cell(
                            new Phrase(lerepMap == null ? "" : lerepMap.get("occstbeapp"), contentFont));
                    lerep14.setHorizontalAlignment(Element.ALIGN_CENTER);
                    lerep14.setColspan(3);
                    lereptable.addCell(lerep14);
                } else if ("WZFZ".equals(opetype) || "WZHH".equals(opetype) || "WZHHFZ".equals(opetype)
                        || "WGJY".equals(opetype)) {
                    Cell lerep13 = new Cell(new Phrase("", contentFont));
                    lerep13.setHorizontalAlignment(Element.ALIGN_CENTER);
                    lereptable.addCell(lerep13);
                    Cell lerep14 = new Cell(
                            new Phrase(lerepMap == null ? "" : lerepMap.get("country"), contentFont));
                    lerep14.setHorizontalAlignment(Element.ALIGN_CENTER);
                    lerep14.setColspan(3);
                    lereptable.addCell(lerep14);
                }

                document.add(lereptable);
            }

            if ("HZS".equals(opetype)) {
                Paragraph hzsp = new Paragraph(
                        "\n  ",
                        contentFont);
                document.add(hzsp);
                Paragraph hzsp1 = new Paragraph("\n", contentFont);
                hzsp1.setIndentationLeft(200);
                document.add(hzsp1);
                Paragraph hzsp2 = new Paragraph("\n                                                 ",
                        contentFont);
                hzsp2.setAlignment(Paragraph.ALIGN_RIGHT);
                document.add(hzsp2);
            }

            if ("GS".equals(opetype) || "WZGS".equals(opetype)) {
                //()
                Paragraph ryxxTitle = new Paragraph("\n", titleChinese);
                ryxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(ryxxTitle);

                //TABLE
                Table ryxxtable = new Table(1);
                int ryxxwidths[] = { 100 };
                ryxxtable.setWidths(ryxxwidths);
                ryxxtable.setWidth(100);
                ryxxtable.setPadding(3);
                ryxxtable.setBorderWidth(1);
                ryxxtable.setAlignment(Cell.ALIGN_CENTER);
                List<Map<String, String>> ryxxList = (List<Map<String, String>>) dataMap.get("ryxxList");
                if (ryxxList != null && !ryxxList.isEmpty()) {
                    for (int i = 0; i < ryxxList.size(); i++) {
                        Map<String, String> ryxxs = ryxxList.get(i);
                        Paragraph p = new Paragraph();
                        if ("GS".equals(opetype)) {
                            Phrase p1 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("name")) + "     ", contentFont);
                            p.add(p1);
                            Phrase p2 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("position")) + "     ",
                                    contentFont);
                            p.add(p2);
                            Phrase p3 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("certype")) + "     ",
                                    contentFont);
                            p.add(p3);
                            Phrase p4 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("cerno")) + "     ",
                                    contentFont);
                            p.add(p4);
                        } else if ("WZGS".equals(opetype)) {
                            Phrase p1 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("name")) + "     ", contentFont);
                            p.add(p1);
                            Phrase p2 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("country")) + "     ",
                                    contentFont);
                            p.add(p2);
                            Phrase p3 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("certype")) + "     ",
                                    contentFont);
                            p.add(p3);
                            Phrase p4 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("cerno")) + "     ",
                                    contentFont);
                            p.add(p4);
                            Phrase p5 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("position")) + "     ",
                                    contentFont);
                            p.add(p5);
                            Phrase p6 = new Phrase(
                                    "" + (ryxxs == null ? "" : ryxxs.get("posbrform")) + "     ",
                                    contentFont);
                            p.add(p6);
                        }
                        Cell cell = new Cell(p);
                        ryxxtable.addCell(cell);
                    }
                }
                document.add(ryxxtable);
            }

            if ("GS".equals(opetype)) {
                //()
                Paragraph czxxTitle = new Paragraph("\n()", titleChinese);
                czxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(czxxTitle);

                //TABLE
                Table czxxtable = new Table(7);
                int czxxwidths[] = { 20, 20, 15, 10, 10, 15, 10 };
                czxxtable.setWidths(czxxwidths);
                czxxtable.setWidth(100);
                czxxtable.setPadding(3);
                czxxtable.setBorderWidth(1);
                czxxtable.setAlignment(Cell.ALIGN_CENTER);

                List<List<String>> czxxList = (List<List<String>>) dataMap.get("czxxList");
                if (czxxList != null && !czxxList.isEmpty()) {
                    Cell ct1 = new Cell(new Phrase("\n", contentFont));
                    ct1.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct1);
                    Cell ct2 = new Cell(new Phrase("", contentFont));
                    ct2.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct2);
                    Cell ct3 = new Cell(new Phrase("", contentFont));
                    ct3.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct3);
                    Cell ct4 = new Cell(new Phrase("", contentFont));
                    ct4.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct4);
                    Cell ct5 = new Cell(new Phrase("", contentFont));
                    ct5.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct5);
                    Cell ct6 = new Cell(new Phrase("\n", contentFont));
                    ct6.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct6);
                    Cell ct7 = new Cell(new Phrase("", contentFont));
                    ct7.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct7);
                    for (int i = 0; i < czxxList.size(); i++) {
                        List<String> czxxs = czxxList.get(i);
                        if (!czxxs.isEmpty()) {
                            for (int j = 0; j < czxxs.size(); j++) {
                                Cell czCell = new Cell(new Phrase(czxxs.get(j), contentFont));
                                czCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                czxxtable.addCell(czCell);
                            }
                        }
                    }
                }
                document.add(czxxtable);
            } else if ("WZGS".equals(opetype) || "WZHH".equals(opetype)) {
                //()
                Paragraph czxxTitle = new Paragraph("\n/", titleChinese);
                czxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(czxxTitle);

                //TABLE
                int length = 0;
                int[] czxxwidths = null;
                if ("WZGS".equals(opetype)) {
                    length = 8;
                    czxxwidths = new int[] { 20, 10, 15, 10, 10, 15, 10, 10 };
                } else if ("WZHH".equals(opetype)) {
                    length = 9;
                    czxxwidths = new int[] { 12, 11, 11, 11, 11, 11, 11, 11, 11 };
                }
                Table czxxtable = new Table(length);
                czxxtable.setWidths(czxxwidths);
                czxxtable.setWidth(100);
                czxxtable.setPadding(3);
                czxxtable.setBorderWidth(1);
                czxxtable.setAlignment(Cell.ALIGN_CENTER);

                List<List<String>> czxxList = (List<List<String>>) dataMap.get("czxxList");
                if (czxxList != null && !czxxList.isEmpty()) {
                    String ct1text = "";
                    if ("WZGS".equals(opetype)) {
                        ct1text = "\n";
                    } else if ("WZHH".equals(opetype)) {
                        ct1text = "\n";
                    }
                    Cell ct1 = new Cell(new Phrase(ct1text, contentFont));
                    ct1.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct1);
                    Cell ct11 = new Cell(new Phrase("", contentFont));
                    ct11.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct11);
                    Cell ct2 = new Cell(new Phrase("", contentFont));
                    ct2.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct2);
                    Cell ct3 = new Cell(new Phrase("", contentFont));
                    ct3.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct3);
                    Cell ct31 = new Cell(new Phrase("", contentFont));
                    ct31.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct31);
                    Cell ct4 = new Cell(new Phrase("", contentFont));
                    ct4.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct4);
                    Cell ct5 = new Cell(new Phrase("", contentFont));
                    ct5.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct5);
                    Cell ct6 = new Cell(new Phrase("\n", contentFont));
                    ct6.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct6);
                    Cell ct7 = new Cell(new Phrase("", contentFont));
                    ct7.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct7);
                    for (int i = 0; i < czxxList.size(); i++) {
                        List<String> czxxs = czxxList.get(i);
                        if (!czxxs.isEmpty()) {
                            for (int j = 0; j < czxxs.size(); j++) {
                                Cell czCell = new Cell(new Phrase(czxxs.get(j), contentFont));
                                czCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                czxxtable.addCell(czCell);
                            }
                        }
                    }
                }
                document.add(czxxtable);
            } else if ("HHQY".equals(opetype)) {
                //
                Paragraph czxxTitle = new Paragraph("\n", titleChinese);
                czxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(czxxTitle);

                //TABLE
                Table czxxtable = new Table(9);
                int czxxwidths[] = { 12, 11, 11, 11, 11, 11, 11, 11, 11 };
                czxxtable.setWidths(czxxwidths);
                czxxtable.setWidth(100);
                czxxtable.setPadding(3);
                czxxtable.setBorderWidth(1);
                czxxtable.setAlignment(Cell.ALIGN_CENTER);

                List<List<String>> czxxList = (List<List<String>>) dataMap.get("czxxList");
                if (czxxList != null && !czxxList.isEmpty()) {
                    Cell ct1 = new Cell(new Phrase("", contentFont));
                    ct1.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct1);
                    Cell ct2 = new Cell(new Phrase("", contentFont));
                    ct2.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct2);
                    Cell ct3 = new Cell(new Phrase("", contentFont));
                    ct3.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct3);
                    Cell ct4 = new Cell(new Phrase("", contentFont));
                    ct4.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct4);
                    Cell ct5 = new Cell(new Phrase("", contentFont));
                    ct5.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct5);
                    Cell ct6 = new Cell(new Phrase("", contentFont));
                    ct6.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct6);
                    Cell ct7 = new Cell(new Phrase("", contentFont));
                    ct7.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct7);
                    Cell ct8 = new Cell(new Phrase("", contentFont));
                    ct8.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct8);
                    Cell ct9 = new Cell(new Phrase("", contentFont));
                    ct9.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct9);
                    for (int i = 0; i < czxxList.size(); i++) {
                        List<String> czxxs = czxxList.get(i);
                        if (!czxxs.isEmpty()) {
                            for (int j = 0; j < czxxs.size(); j++) {
                                Cell czCell = new Cell(new Phrase(czxxs.get(j), contentFont));
                                czCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                czxxtable.addCell(czCell);
                            }
                        }
                    }
                }
                document.add(czxxtable);
            } else if ("HZS".equals(opetype)) {
                //
                Paragraph czxxTitle = new Paragraph("\n", titleChinese);
                czxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(czxxTitle);

                //TABLE
                Table czxxtable = new Table(5);
                int czxxwidths[] = { 10, 30, 20, 20, 20 };
                czxxtable.setWidths(czxxwidths);
                czxxtable.setWidth(100);
                czxxtable.setPadding(3);
                czxxtable.setBorderWidth(1);
                czxxtable.setAlignment(Cell.ALIGN_CENTER);

                List<List<String>> czxxList = (List<List<String>>) dataMap.get("czxxList");
                if (czxxList != null && !czxxList.isEmpty()) {
                    Cell ct1 = new Cell(new Phrase("", contentFont));
                    ct1.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct1);
                    Cell ct2 = new Cell(new Phrase("", contentFont));
                    ct2.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct2);
                    Cell ct3 = new Cell(new Phrase("", contentFont));
                    ct3.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct3);
                    Cell ct4 = new Cell(new Phrase("", contentFont));
                    ct4.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct4);
                    Cell ct5 = new Cell(new Phrase("", contentFont));
                    ct5.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct5);
                    for (int i = 0; i < czxxList.size(); i++) {
                        List<String> czxxs = czxxList.get(i);
                        if (!czxxs.isEmpty()) {
                            for (int j = 0; j < czxxs.size(); j++) {
                                Cell czCell = new Cell(new Phrase(czxxs.get(j), contentFont));
                                czCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                czxxtable.addCell(czCell);
                            }
                        }
                    }
                }
                document.add(czxxtable);

                Paragraph czzep = new Paragraph("\n:    " + dataMap.get("regcap") + "   ()  ",
                        contentFont);
                czzep.setAlignment(Paragraph.ALIGN_LEFT);
                czzep.setIndentationLeft(100);
                document.add(czzep);
                Paragraph czzep1 = new Paragraph("\n  ", contentFont);
                czzep1.setAlignment(Paragraph.ALIGN_LEFT);
                czzep1.setIndentationLeft(100);
                document.add(czzep1);
                Paragraph czzep2 = new Paragraph(
                        "\n                                                        ", contentFont);
                czzep2.setAlignment(Paragraph.ALIGN_RIGHT);
                document.add(czzep2);
            }

            if ("HZS".equals(opetype)) {
                //
                Paragraph czxxTitle = new Paragraph("\n", titleChinese);
                czxxTitle.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(czxxTitle);

                //TABLE
                Table czxxtable = new Table(5);
                int czxxwidths[] = { 10, 20, 30, 25, 15 };
                czxxtable.setWidths(czxxwidths);
                czxxtable.setWidth(100);
                czxxtable.setPadding(3);
                czxxtable.setBorderWidth(1);
                czxxtable.setAlignment(Cell.ALIGN_CENTER);

                List<List<String>> czxxList = (List<List<String>>) dataMap.get("hzsList");
                if (czxxList != null && !czxxList.isEmpty()) {
                    Cell ct1 = new Cell(new Phrase("", contentFont));
                    ct1.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct1);
                    Cell ct2 = new Cell(new Phrase("", contentFont));
                    ct2.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct2);
                    Cell ct3 = new Cell(new Phrase("", contentFont));
                    ct3.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct3);
                    Cell ct4 = new Cell(new Phrase("", contentFont));
                    ct4.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct4);
                    Cell ct5 = new Cell(new Phrase("", contentFont));
                    ct5.setHorizontalAlignment(Element.ALIGN_CENTER);
                    czxxtable.addCell(ct5);
                    for (int i = 0; i < czxxList.size(); i++) {
                        List<String> czxxs = czxxList.get(i);
                        if (!czxxs.isEmpty()) {
                            for (int j = 0; j < czxxs.size(); j++) {
                                Cell czCell = new Cell(new Phrase(czxxs.get(j), contentFont));
                                czCell.setHorizontalAlignment(Element.ALIGN_CENTER);
                                czxxtable.addCell(czCell);
                            }
                        }
                    }
                }
                document.add(czxxtable);

                Paragraph czzep = new Paragraph("\n:    " + dataMap.get("cyzs") + "   ()    ",
                        contentFont);
                czzep.setAlignment(Paragraph.ALIGN_LEFT);
                czzep.setIndentationLeft(40);
                document.add(czzep);
                Paragraph czzep1 = new Paragraph(" " + dataMap.get("nmcy") + "   ()  "
                        + dataMap.get("nmcyrate") + "    % ", contentFont);
                czzep1.setAlignment(Paragraph.ALIGN_LEFT);
                czzep1.setIndentationLeft(100);
                document.add(czzep1);
                Paragraph czzep2 = new Paragraph("   " + dataMap.get("frcy")
                        + "   () " + dataMap.get("frcyrate") + "  %", contentFont);
                czzep2.setAlignment(Paragraph.ALIGN_LEFT);
                czzep2.setIndentationLeft(100);
                document.add(czzep2);

                Paragraph czzep3 = new Paragraph(
                        " ",
                        contentFont);
                czzep3.setAlignment(Paragraph.ALIGN_LEFT);
                czzep3.setIndentationLeft(40);
                document.add(czzep3);

                Paragraph czzep4 = new Paragraph("\n ", contentFont);
                czzep4.setAlignment(Paragraph.ALIGN_LEFT);
                czzep4.setIndentationLeft(100);
                document.add(czzep4);

                Paragraph czzep5 = new Paragraph(
                        "\n                                                                 ",
                        contentFont);
                czzep4.setAlignment(Paragraph.ALIGN_RIGHT);
                document.add(czzep4);
            }

            //()
            Paragraph cwfzrTitle = new Paragraph("\n", titleChinese);
            cwfzrTitle.setAlignment(Paragraph.ALIGN_CENTER);
            document.add(cwfzrTitle);

            //TABLE
            Table cwfzrtable = new Table(4);
            int cwfzrwidths[] = { 20, 30, 20, 30 };
            cwfzrtable.setWidths(cwfzrwidths);
            cwfzrtable.setWidth(100);
            cwfzrtable.setPadding(3);
            cwfzrtable.setBorderWidth(1);
            cwfzrtable.setAlignment(Cell.ALIGN_CENTER);

            Map<String, String> cwfzrMap = (Map<String, String>) dataMap.get("cwfzrMap");
            Cell cwfzr1 = new Cell(new Phrase(" ", contentFont));
            cwfzr1.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr1);
            Cell cwfzr2 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("name"), contentFont));
            cwfzr2.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr2);
            Cell cwfzr3 = new Cell(new Phrase("", contentFont));
            cwfzr3.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr3);
            Cell cwfzr4 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("tel"), contentFont));
            cwfzr4.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr4);

            Cell cwfzr5 = new Cell(new Phrase("", contentFont));
            cwfzr5.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr5);
            Cell cwfzr6 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("mobile"), contentFont));
            cwfzr6.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr6);
            Cell cwfzr7 = new Cell(new Phrase("", contentFont));
            cwfzr7.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr7);
            Cell cwfzr8 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("email"), contentFont));
            cwfzr8.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr8);

            Cell cwfzr9 = new Cell(new Phrase("", contentFont));
            cwfzr9.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr9);
            Cell cwfzr10 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("certype"), contentFont));
            cwfzr10.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr10);
            Cell cwfzr11 = new Cell(new Phrase("", contentFont));
            cwfzr11.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr11);
            Cell cwfzr12 = new Cell(new Phrase(cwfzrMap == null ? "" : cwfzrMap.get("cerno"), contentFont));
            cwfzr12.setHorizontalAlignment(Element.ALIGN_CENTER);
            cwfzrtable.addCell(cwfzr12);

            document.add(cwfzrtable);

            //()
            Paragraph llrTitle = new Paragraph("\n", titleChinese);
            llrTitle.setAlignment(Paragraph.ALIGN_CENTER);
            document.add(llrTitle);

            //TABLE
            Table llrtable = new Table(4);
            int llrwidths[] = { 20, 30, 20, 30 };
            llrtable.setWidths(llrwidths);
            llrtable.setWidth(100);
            llrtable.setPadding(3);
            llrtable.setBorderWidth(1);
            llrtable.setAlignment(Cell.ALIGN_CENTER);

            Map<String, String> llrMap = (Map<String, String>) dataMap.get("llrMap");
            Cell llr1 = new Cell(new Phrase(" ", contentFont));
            llr1.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr1);
            Cell llr2 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("name"), contentFont));
            llr2.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr2);
            Cell llr3 = new Cell(new Phrase("", contentFont));
            llr3.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr3);
            Cell llr4 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("tel"), contentFont));
            llr4.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr4);

            Cell llr5 = new Cell(new Phrase("", contentFont));
            llr5.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr5);
            Cell llr6 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("mobile"), contentFont));
            llr6.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr6);
            Cell llr7 = new Cell(new Phrase("", contentFont));
            llr7.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr7);
            Cell llr8 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("email"), contentFont));
            llr8.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr8);

            Cell llr9 = new Cell(new Phrase("", contentFont));
            llr9.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr9);
            Cell llr10 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("certype"), contentFont));
            llr10.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr10);
            Cell llr11 = new Cell(new Phrase("", contentFont));
            llr11.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr11);
            Cell llr12 = new Cell(new Phrase(llrMap == null ? "" : llrMap.get("cerno"), contentFont));
            llr12.setHorizontalAlignment(Element.ALIGN_CENTER);
            llrtable.addCell(llr12);

            document.add(llrtable);

            //()
            Paragraph wtrTitle = new Paragraph("\n", titleChinese);
            wtrTitle.setAlignment(Paragraph.ALIGN_CENTER);
            document.add(wtrTitle);

            Map<String, String> wtrMap = (Map<String, String>) dataMap.get("wtrMap");

            String sqrText = "   " + (wtrMap == null ? "" : wtrMap.get("sqr"));
            Paragraph sqr = new Paragraph(sqrText, contentFont);
            sqr.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(sqr);

            String wtrText = " " + (wtrMap == null ? "" : wtrMap.get("wtr"));
            Paragraph wtr = new Paragraph(wtrText, contentFont);
            wtr.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(wtr);

            Paragraph wtsx = new Paragraph("\n", contentFont);
            wtsx.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(wtsx);

            String wtText1 = "1    " + (wtrMap == null ? "" : wtrMap.get("entname"))
                    + "     ";
            Paragraph wt1 = new Paragraph(wtText1, contentFont);
            //
            wt1.setIndentationLeft(60);
            document.add(wt1);

            Paragraph wt2 = new Paragraph("           ",
                    contentFont);
            //
            wt2.setIndentationLeft(70);
            document.add(wt2);

            Paragraph wt3 = new Paragraph("       __________",
                    contentFont);
            //
            wt3.setIndentationLeft(70);
            document.add(wt3);

            Paragraph wt4 = new Paragraph("2." + (wtrMap == null ? "" : wtrMap.get("qx1"))
                    + " ", contentFont);
            //
            wt4.setIndentationLeft(60);
            document.add(wt4);

            Paragraph wt5 = new Paragraph(
                    "3." + (wtrMap == null ? "" : wtrMap.get("qx2")) + "  ",
                    contentFont);
            //
            wt5.setIndentationLeft(60);
            document.add(wt5);

            Paragraph wt6 = new Paragraph(
                    "4." + (wtrMap == null ? "" : wtrMap.get("qx3")) + " ",
                    contentFont);
            //
            wt6.setIndentationLeft(60);
            document.add(wt6);

            Paragraph wt7 = new Paragraph(
                    "5." + (wtrMap == null ? "" : wtrMap.get("qx4")) + "\n",
                    contentFont);
            //
            wt7.setIndentationLeft(60);
            document.add(wt7);

            Paragraph wt8 = new Paragraph(
                    "    " + (wtrMap == null ? "" : wtrMap.get("confrom"))
                            + "        " + (wtrMap == null ? "" : wtrMap.get("conto")) + " \n ",
                    contentFont);
            wt8.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(wt8);

            //TABLE
            Table wtrtable = new Table(2);
            int[] wtrwidths = { 50, 50 };
            wtrtable.setWidths(wtrwidths);
            wtrtable.setWidth(100);
            wtrtable.setPadding(3);
            wtrtable.setBorderWidth(1);
            wtrtable.setAlignment(Cell.ALIGN_CENTER);

            Cell wtrc1 = new Cell(new Phrase("", contentFont));
            wtrc1.setRowspan(3);
            wtrc1.setHorizontalAlignment(Element.ALIGN_CENTER);
            wtrtable.addCell(wtrc1);

            Cell wtrc2 = new Cell(new Phrase(" ", contentFont));
            wtrc2.setHorizontalAlignment(Element.ALIGN_LEFT);
            wtrtable.addCell(wtrc2);

            String telText = "" + (wtrMap == null ? "" : wtrMap.get("tel"));
            Cell wtrc3 = new Cell(new Phrase(telText, contentFont));
            wtrc3.setHorizontalAlignment(Element.ALIGN_LEFT);
            wtrtable.addCell(wtrc3);

            String mobileText = "" + (wtrMap == null ? "" : wtrMap.get("mobile"));
            Cell wtrc4 = new Cell(new Phrase(mobileText, contentFont));
            wtrc4.setHorizontalAlignment(Element.ALIGN_LEFT);
            wtrtable.addCell(wtrc4);

            document.add(wtrtable);

            Paragraph wt9 = new Paragraph("\n ", contentFont);
            wt9.setAlignment(Paragraph.ALIGN_LEFT);
            document.add(wt9);

            Paragraph wt10 = new Paragraph("\n" + (wtrMap == null ? "" : wtrMap.get("condate")) + " ",
                    contentFont);
            wt10.setAlignment(Paragraph.ALIGN_RIGHT);
            document.add(wt10);

            //
            if ("WZGS".equals(opetype) || "WZHH".equals(opetype) || "WGJY".equals(opetype)) {
                Paragraph wtsTitle1 = new Paragraph("\n", titleChinese);
                wtsTitle1.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(wtsTitle1);
                Paragraph wtsTitle2 = new Paragraph("", titleChinese);
                wtsTitle2.setAlignment(Paragraph.ALIGN_CENTER);
                document.add(wtsTitle2);

                Map<String, String> sdMap = (Map<String, String>) dataMap.get("sdMap");

                Paragraph sdsq = new Paragraph(" ", contentFont);
                sdsq.setAlignment(Paragraph.ALIGN_LEFT);
                document.add(sdsq);

                String sdbsqText = "    " + (sdMap == null ? "" : sdMap.get("name"));
                Paragraph sdbsq = new Paragraph(sdbsqText, contentFont);
                sdbsq.setAlignment(Paragraph.ALIGN_LEFT);
                document.add(sdbsq);

                String sqfwText = "   " + (sdMap == null ? "" : sdMap.get("name"))
                        + "     ";
                Paragraph sqfw = new Paragraph(sqfwText, contentFont);
                sqfw.setAlignment(Paragraph.ALIGN_LEFT);
                document.add(sqfw);

                Paragraph sqfw2 = new Paragraph(
                        "_______",
                        contentFont);
                sqfw2.setAlignment(Paragraph.ALIGN_LEFT);
                sqfw2.setIndentationLeft(60);
                document.add(sqfw2);

                //TABLE
                Table sdstable = new Table(4);
                int[] sdswidths = { 20, 30, 20, 30 };
                sdstable.setWidths(sdswidths);
                sdstable.setWidth(100);
                sdstable.setPadding(3);
                sdstable.setBorderWidth(1);
                sdstable.setAlignment(Cell.ALIGN_CENTER);

                Cell sd1 = new Cell(new Phrase("", contentFont));
                sd1.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd1);

                Cell sd2 = new Cell(new Phrase(sdMap == null ? "" : sdMap.get("addr"), contentFont));
                sd2.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd2);

                Cell sd3 = new Cell(new Phrase("", contentFont));
                sd3.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd3);

                Cell sd4 = new Cell(new Phrase(sdMap == null ? "" : sdMap.get("postalcode"), contentFont));
                sd4.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd4);

                Cell sd5 = new Cell(new Phrase("", contentFont));
                sd5.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd5);

                Cell sd6 = new Cell(new Phrase(sdMap == null ? "" : sdMap.get("linkman"), contentFont));
                sd6.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd6);

                Cell sd7 = new Cell(new Phrase("", contentFont));
                sd7.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd7);

                Cell sd8 = new Cell(new Phrase(sdMap == null ? "" : sdMap.get("email"), contentFont));
                sd8.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd8);

                Cell sd9 = new Cell(new Phrase("\n", contentFont));
                sd9.setRowspan(2);
                sd9.setHorizontalAlignment(Element.ALIGN_CENTER);
                sdstable.addCell(sd9);

                Cell sd10 = new Cell(
                        new Phrase("     " + (sdMap == null ? "" : sdMap.get("tel")), contentFont));
                sd10.setColspan(3);
                sd10.setHorizontalAlignment(Element.ALIGN_LEFT);
                sdstable.addCell(sd10);

                Cell sd11 = new Cell(
                        new Phrase("     " + (sdMap == null ? "" : sdMap.get("mobtel")), contentFont));
                sd11.setColspan(3);
                sd11.setHorizontalAlignment(Element.ALIGN_LEFT);
                sdstable.addCell(sd11);

                document.add(sdstable);

                Paragraph sds1 = new Paragraph(
                        "\n                                                                            ",
                        contentFont);
                sds1.setAlignment(Paragraph.ALIGN_LEFT);
                sds1.setIndentationLeft(100);
                document.add(sds1);

                Paragraph sds2 = new Paragraph("\n                                                      ",
                        contentFont);
                sds2.setAlignment(Paragraph.ALIGN_RIGHT);
                document.add(sds2);

                Paragraph remark = new Paragraph(
                        "  ",
                        contentFont);
                remark.setIndentationLeft(60);
                remark.setAlignment(Paragraph.ALIGN_LEFT);
                document.add(remark);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        logger.debug(e);
    }

    //PDF
    document.close();
}

From source file:com.matic.sudoku.io.export.PdfExporter.java

License:Open Source License

/**
 * Write board contents to PDF/*from w ww. j a v a  2s  .c om*/
 * 
 * @param board The board to write
 * @param targetFile Target output PDF file to write to
 * @throws DocumentException If any PDF library error occurs
 * @throws IOException If any error occurs while writing the PDF file
 */
public void write(final Board board, final File targetFile) throws DocumentException, IOException {
    //FontFactory.defaultEmbedding = true;
    final Document document = new Document(PageSize.A4, DOCUMENT_MARGIN, DOCUMENT_MARGIN, DOCUMENT_MARGIN,
            DOCUMENT_MARGIN);
    final OutputStream outputStream = new FileOutputStream(targetFile);
    final PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);

    document.open();

    final PdfContentByte contentByte = pdfWriter.getDirectContent();
    final Rectangle pageSize = document.getPageSize();

    final float pageHeight = pageSize.getHeight();
    final float pageWidth = pageSize.getWidth();

    contentByte.saveState();

    final Graphics2D g2d = contentByte.createGraphics(pageWidth, pageHeight);
    board.setSize((int) pageWidth, (int) pageWidth);
    board.handleResized();

    final int puzzleWidth = board.getPuzzleWidth();

    //Calculate x and y coordinates for centered game board
    final int originX = (int) (pageWidth / 2 - (puzzleWidth / 2));
    final int originY = (int) ((pageHeight / 2) - (puzzleWidth / 2));

    board.setDrawingOrigin(originX, originY);
    board.draw(g2d, true, false);

    contentByte.restoreState();

    g2d.dispose();
    document.close();
    outputStream.flush();
    outputStream.close();
}

From source file:com.matic.sudoku.io.export.PdfExporter.java

License:Open Source License

/**
 * Generate and export multiple boards to PDF
 * //from   w  w  w.j av  a2  s.co  m
 * @param exporterParameters PDF exporter parameters
 * @param generator Generator used for puzzle generation
 * @throws IOException If any PDF library error occurs
 * @throws DocumentException If any error occurs while writing the PDF file
 */
public void write(final ExporterParameters exporterParameters, final Generator generator,
        final int boardDimension) throws IOException, DocumentException {
    //How many PDF-pages are needed to fit all puzzles using the desired page formatting
    final int optimisticPageCount = exporterParameters.getPuzzleCount()
            / exporterParameters.getPuzzlesPerPage();
    final int pageCount = exporterParameters.getPuzzleCount() % exporterParameters.getPuzzlesPerPage() > 0
            ? optimisticPageCount + 1
            : optimisticPageCount;

    final Document document = new Document(PageSize.A4, DOCUMENT_MARGIN, DOCUMENT_MARGIN, DOCUMENT_MARGIN,
            DOCUMENT_MARGIN);
    final OutputStream outputStream = new FileOutputStream(exporterParameters.getOutputPath());
    final PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);

    final String creator = Sudoku.getNameAndVersion();
    document.addSubject("Puzzles generated by " + creator);
    document.addCreator(creator);
    document.open();

    final Rectangle pageSize = document.getPageSize();
    final int pageHeight = (int) pageSize.getHeight();
    final int pageWidth = (int) pageSize.getWidth();

    //Get appropriate number of rows and columns needed to divide a page into
    final int horizontalDimension = exporterParameters.getPuzzlesPerPage() > 2 ? 2 : 1;
    final int verticalDimension = exporterParameters.getPuzzlesPerPage() > 1 ? 2 : 1;

    //Get available space for each board (with margins) on a page
    final int boardWidth = pageWidth / horizontalDimension;
    final int boardHeight = pageHeight / verticalDimension;

    final Board board = new Board(boardDimension, SymbolType.DIGITS);
    board.setSize(boardWidth, boardHeight);
    board.handleResized();

    //Get available height/width on a page for a puzzle itself
    final int puzzleWidth = board.getPuzzleWidth();
    int puzzlesPrinted = 0;

    final PdfContentByte contentByte = pdfWriter.getDirectContent();
    final Grading[] gradings = getGeneratedPuzzleGradings(exporterParameters.getGradings(),
            exporterParameters.getOrdering(), exporterParameters.getPuzzleCount());

    pageCounter: for (int page = 0; page < pageCount; ++page) {
        document.newPage();
        final Graphics2D g2d = contentByte.createGraphics(pageWidth, pageHeight);
        for (int y = 0, i = 0; i < verticalDimension; y += boardHeight, ++i) {
            for (int x = 0, j = 0; j < horizontalDimension; x += boardWidth, ++j) {
                //Check whether to generate a new puzzle or print empty boards 
                final ExportMode exportMode = exporterParameters.getExportMode();
                final Grading selectedGrading = exportMode == ExportMode.BLANK ? null
                        : gradings[puzzlesPrinted];
                if (exportMode == ExportMode.GENERATE_NEW) {
                    board.setPuzzle(generatePuzzle(generator, getSymmetry(exporterParameters.getSymmetries()),
                            selectedGrading));
                    board.recordGivens();
                }

                //Calculate puzzle drawing origins
                final int originX = x + (int) (boardWidth / 2 - (puzzleWidth / 2));
                final int originY = y + (int) (boardHeight / 2) - (puzzleWidth / 2);

                board.setSymbolType(getSymbolType(exporterParameters.getSymbolType()));
                board.setDrawingOrigin(originX, originY);
                board.draw(g2d, false, false);

                drawLegend(g2d,
                        getLegendString(exporterParameters.isShowNumbering(),
                                exporterParameters.isShowGrading(), puzzlesPrinted + 1, selectedGrading),
                        originX, originY, puzzleWidth);

                if (++puzzlesPrinted == exporterParameters.getPuzzleCount()) {
                    //We've printed all puzzles, break
                    g2d.dispose();
                    break pageCounter;
                }
            }
        }
        g2d.dispose();
    }
    document.close();
    outputStream.flush();
    outputStream.close();
}

From source file:com.mycompany.controller.catalog.PDFController.java

License:Apache License

@RequestMapping(value = ("/createPDF"), method = RequestMethod.GET)
public void doDownload(HttpServletRequest request, HttpServletResponse response) throws IOException {

    try {//from  w  w  w . j a va 2  s . co m
        BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext();
        Document document = new Document(PageSize.A4, 36, 72, 108, 180);
        PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Bharath\\Desktop\\bharath1.pdf"));
        document.open();
        Map<String, String[]> map = (Map<String, String[]>) context.getRequest().getParameterMap();
        Iterator<Map.Entry<String, String[]>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String[]> pairs = (Map.Entry<String, String[]>) it.next();
            document.add(new Paragraph(Arrays.toString(pairs.getValue())));
            it.remove(); // avoids a ConcurrentModificationException
        }
        document.close();
        System.out.println("converted to HTML");
    } catch (Exception e) {
        e.printStackTrace();
    }
    File downloadFile = new File("C:\\Users\\Bharath\\Desktop\\bharath1.pdf");
    FileInputStream inputStream = new FileInputStream(downloadFile);
    response.setContentType("application/pdf");
    response.setContentLength((int) downloadFile.length());
    // set headers for the response
    String headerKey = "Content-Disposition";
    String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
    response.setHeader(headerKey, headerValue);
    OutputStream outStream = response.getOutputStream();
    System.out.println("9");
    byte[] buffer = new byte[BUFFER_SIZE];
    int bytesRead = -1;
    System.out.println("10");
    // write bytes read from the input stream into the output stream
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        outStream.write(buffer, 0, bytesRead);
    }
    inputStream.close();
    outStream.close();
    response.flushBuffer();
    boolean success = (new File("C:\\Users\\Bharath\\Desktop\\bharath1.pdf")).delete();
}

From source file:com.neu.cloud.Controller.FifthUseCaseController.java

public void generateReports(List<ArrayList<User>> user1ReportList)
        throws DocumentException, FileNotFoundException {
    Date date;//from  w  w w  .j a v a  2 s  . co m
    String dateForFolder = String.valueOf(new Date());
    for (ArrayList<User> users : user1ReportList) {
        date = new Date();
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //            String path = System.getProperty("user.dir") + "\\reports\\";
        String path = System.getProperty("user.dir") + "//";
        String fileName = "ITextTest" + date.getTime() + ".pdf";
        //            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path + "ITextTest" + date.getTime() + ".pdf"));
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path + fileName));
        document.open();
        Table table = new Table(4);
        table.addCell("userID");
        table.addCell("username");
        table.addCell("password");
        table.addCell("productName");
        boolean flag = false;
        for (User u : users) {
            System.out.print("1");
            System.out.print("1");
            System.out.print("1");
            System.out.print("1");
            if (flag)
                continue;
            flag = true;
            table.addCell(String.valueOf(u.getUserID()));
            table.addCell(u.getUsername());
            table.addCell(u.getPassword());
            table.addCell(u.getProductName());
        }
        document.add(table);
        document.close();

        uploadInS3(path, fileName, dateForFolder);

        File file = new File(path + fileName);
        if (file.delete()) {
            System.out.println(file.getName() + " is deleted!");
        } else {
            System.out.println("Delete operation is failed.");
        }
    }
}

From source file:com.neu.cloud.Controller.FirstUseCaseController.java

public void generateReports(List<ArrayList<User>> user1ReportList)
        throws DocumentException, FileNotFoundException {
    Date date;//from w  w w. ja  va 2s  .  co  m
    String dateForFolder = String.valueOf(new Date());
    for (ArrayList<User> users : user1ReportList) {
        date = new Date();
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        //            String path = System.getProperty("user.dir") + "\\reports\\";
        String path = System.getProperty("user.dir") + "//";
        String fileName = "ITextTest" + date.getTime() + ".pdf";
        //            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path + "ITextTest" + date.getTime() + ".pdf"));
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(path + fileName));
        document.open();
        Table table = new Table(4);
        table.addCell("userID");
        table.addCell("username");
        table.addCell("password");
        table.addCell("productName");
        for (User u : users) {
            table.addCell(String.valueOf(u.getUserID()));
            table.addCell(u.getUsername());
            table.addCell(u.getPassword());
            table.addCell(u.getProductName());
        }
        document.add(table);
        document.close();

        uploadInS3(path, fileName, dateForFolder);

        File file = new File(path + fileName);
        if (file.delete()) {
            System.out.println(file.getName() + " is deleted!");
        } else {
            System.out.println("Delete operation is failed.");
        }
    }
}