Example usage for com.lowagie.text.pdf PdfReader PdfReader

List of usage examples for com.lowagie.text.pdf PdfReader PdfReader

Introduction

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

Prototype

public PdfReader(PdfReader reader) 

Source Link

Document

Creates an independent duplicate.

Usage

From source file:com.iana.boesc.utility.BOESCUtil.java

License:Open Source License

/**
 * /* www.j a  va2 s. co  m*/
 * @param list
 * @param outputStream
 * @throws DocumentException
 * @throws IOException
 */
public static void doMerge(List<InputStream> list, OutputStream outputStream)
        throws DocumentException, IOException {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, outputStream);
    document.open();
    PdfContentByte cb = writer.getDirectContent();

    for (InputStream in : list) {
        PdfReader reader = new PdfReader(in);
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            document.newPage();
            // import the page from source pdf
            PdfImportedPage page = writer.getImportedPage(reader, i);
            // add the page to the destination pdf
            cb.addTemplate(page, 0, 0);
        }
    }

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

From source file:com.iana.dver.controller.DverUserController.java

License:Open Source License

private void sendChangePwdEmail(DverUserVO dverUser, DverConfigVO dverConfig, String newPwd)
        throws IOException, DocumentException, AddressException {

    try {//from  w w  w . j  a v a2s  .  co  m
        PdfReader reader = new PdfReader(
                servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_CHANGE_PWD_FORM.pdf"));

        File tempFile = File.createTempFile("DVER_CHANGE_PWD_" + securityObj.getUserName(), ".pdf");

        PdfStamper filledOutForm = new PdfStamper(reader, new FileOutputStream(tempFile));
        AcroFields form = filledOutForm.getAcroFields();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date = new Date();

        form.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
        form.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                dverUser.getFirstName() + " " + dverUser.getLastName());
        form.setField("topmostSubform[0].Page1[0].company[0]", dverUser.getCompanyName());
        form.setField("topmostSubform[0].Page1[0].address[0]",
                dverUser.getAddress1() + " " + dverUser.getAddress2());
        form.setField("topmostSubform[0].Page1[0].city[0]",
                dverUser.getCity() + ", " + dverUser.getState() + " " + dverUser.getZipCode());

        form.setField("topmostSubform[0].Page1[0].scac[0]", dverUser.getScac());
        form.setField("topmostSubform[0].Page1[0].pwd[0]", newPwd);

        filledOutForm.setFormFlattening(Boolean.TRUE);
        filledOutForm.close();

        DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org", "DVER - Password Change Confirmation",
                new InternetAddress[] { new InternetAddress(dverUser.getEmail()) },
                "Please see attached to know about your changed password.", tempFile);

        if (!dverConfig.getEmail().equals(dverUser.getEmail())) {

            PdfReader reader1 = new PdfReader(
                    servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_CHANGE_PWD_FORM.pdf"));
            File tempFile1 = File.createTempFile("DVER_CHANGE_PWD_NOTIF_" + securityObj.getUserName(), ".pdf");

            PdfStamper filledOutForm1 = new PdfStamper(reader1, new FileOutputStream(tempFile1));
            AcroFields form1 = filledOutForm1.getAcroFields();

            form1.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
            form1.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                    dverConfig.getFirstName() + " " + dverConfig.getLastName());
            form1.setField("topmostSubform[0].Page1[0].company[0]", dverUser.getCompanyName());
            form1.setField("topmostSubform[0].Page1[0].address[0]",
                    dverUser.getAddress1() + " " + dverUser.getAddress2());
            form1.setField("topmostSubform[0].Page1[0].city[0]",
                    dverUser.getCity() + ", " + dverUser.getState() + " " + dverUser.getZipCode());

            form1.setField("topmostSubform[0].Page1[0].scac[0]", dverUser.getScac());
            form1.setField("topmostSubform[0].Page1[0].pwd[0]", newPwd);

            filledOutForm1.setFormFlattening(Boolean.TRUE);
            filledOutForm1.close();

            DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org",
                    "DVER - Password Change Confirmation",
                    new InternetAddress[] { new InternetAddress(dverConfig.getEmail()) },
                    "Please see attached to know about your changed password.", tempFile1);
        }

        tempFile.deleteOnExit();

    } catch (Exception ex) {

        logger.error("Error in sendForgotPwdEmail....." + ex);

        DVERUtil.sendExceptionEmails("sendChangePwdEmail method of DverUserController \n " + ex);

    }
}

From source file:com.iana.dver.controller.LoginController.java

License:Open Source License

private void sendForgotPwdEmail(DverUsers dverUser, DverConfig dverConfig, UserLogin dverUserLogin)
        throws IOException, DocumentException, AddressException {

    try {//from  w w w .j  a  va2 s . c  om
        PdfReader reader = new PdfReader(
                servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_FORGOT_PWD_FORM.pdf"));

        File tempFile = File.createTempFile("DVER_FORGOT_PWD_" + dverUserLogin.getUserName(), ".pdf");

        PdfStamper filledOutForm = new PdfStamper(reader, new FileOutputStream(tempFile));
        AcroFields form = filledOutForm.getAcroFields();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date = new Date();

        form.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
        form.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                dverUser.getFname() + " " + dverUser.getLname());
        form.setField("topmostSubform[0].Page1[0].company[0]", dverUser.getCompanyName());
        form.setField("topmostSubform[0].Page1[0].address[0]", dverUser.getAddr1() + " " + dverUser.getAddr2());
        form.setField("topmostSubform[0].Page1[0].city[0]",
                dverUser.getCity() + ", " + dverUser.getState() + " " + dverUser.getZip());

        form.setField("topmostSubform[0].Page1[0].scac[0]", dverUser.getScac());
        form.setField("topmostSubform[0].Page1[0].pwd[0]", dverUserLogin.getPassword());

        filledOutForm.setFormFlattening(Boolean.TRUE);
        filledOutForm.close();

        DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org", "DVER - Password Recovery",
                new InternetAddress[] { new InternetAddress(dverUser.getEmail()) },
                "Please see attached to know your forgotten password.", tempFile);

        if (!dverUser.getEmail().equals(dverConfig.getEmail())) {

            PdfReader reader1 = new PdfReader(
                    servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_FORGOT_PWD_FORM.pdf"));
            File tempFile1 = File.createTempFile("DVER_FORGOT_PWD_NOTIF_" + dverUserLogin.getUserName(),
                    ".pdf");

            PdfStamper filledOutForm1 = new PdfStamper(reader1, new FileOutputStream(tempFile1));
            AcroFields form1 = filledOutForm1.getAcroFields();

            form1.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
            form1.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                    dverConfig.getFname() + " " + dverConfig.getLname());
            form1.setField("topmostSubform[0].Page1[0].company[0]", dverUser.getCompanyName());
            form1.setField("topmostSubform[0].Page1[0].address[0]",
                    dverUser.getAddr1() + " " + dverUser.getAddr2());
            form1.setField("topmostSubform[0].Page1[0].city[0]",
                    dverUser.getCity() + ", " + dverUser.getState() + " " + dverUser.getZip());

            form1.setField("topmostSubform[0].Page1[0].scac[0]", dverUser.getScac());
            form1.setField("topmostSubform[0].Page1[0].pwd[0]", dverUserLogin.getPassword());

            filledOutForm1.setFormFlattening(Boolean.TRUE);
            filledOutForm1.close();

            DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org", "DVER - Password Recovery",
                    new InternetAddress[] { new InternetAddress(dverConfig.getEmail()) },
                    "Please see attached to know your forgotten password.", tempFile1);
        }

        tempFile.deleteOnExit();

    } catch (Exception ex) {

        logger.error("Error in sendForgotPwdEmail....." + ex);

        DVERUtil.sendExceptionEmails("sendForgotPwdEmail method of LoginController \n " + ex);

    }
}

From source file:com.iana.dver.controller.RegistrationController.java

License:Open Source License

private void sendRegDetailEmail(DverUserVO dverUserVO, DverUserLoginVO dverUserLoginVO,
        DverConfigVO dverConfigVO) throws IOException, DocumentException, AddressException {

    logger.info("Send Registration Email.....");
    try {/* w  w  w  .  j a  v a 2  s  .  c o  m*/
        PdfReader reader = new PdfReader(
                servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_REGISTRATION_FORM.pdf"));

        File tempFile = File.createTempFile("DVER_REGISTRATION_" + dverUserVO.getUsDOT(), ".pdf");
        PdfStamper filledOutForm = new PdfStamper(reader, new FileOutputStream(tempFile));
        AcroFields form = filledOutForm.getAcroFields();
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        Date date = new Date();

        form.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
        form.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                dverUserVO.getFirstName() + " " + dverUserVO.getLastName());
        form.setField("topmostSubform[0].Page1[0].company[0]", dverUserVO.getCompanyName());
        form.setField("topmostSubform[0].Page1[0].address[0]",
                dverUserVO.getAddress1() + " " + dverUserVO.getAddress2());
        form.setField("topmostSubform[0].Page1[0].city[0]",
                dverUserVO.getCity() + ", " + dverUserVO.getState() + " " + dverUserVO.getZipCode());

        form.setField("topmostSubform[0].Page1[0].scac[0]", dverUserVO.getScac());
        form.setField("topmostSubform[0].Page1[0].pwd[0]", dverUserLoginVO.getPassword());

        filledOutForm.setFormFlattening(Boolean.TRUE);
        filledOutForm.close();

        DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org", "DVER Registration Confirmation",
                new InternetAddress[] { new InternetAddress(dverUserVO.getEmail()) },
                "Please see attached for your registration details.", tempFile);

        if (!dverUserVO.getEmail().equals(dverConfigVO.getEmail())) {

            PdfReader reader1 = new PdfReader(
                    servletContext.getResourceAsStream("/WEB-INF/email_templates/DVER_REGISTRATION_FORM.pdf"));
            File tempFile1 = File.createTempFile("DVER_REGISTRATION_NOTIF_" + dverUserVO.getUsDOT(), ".pdf");

            PdfStamper filledOutForm1 = new PdfStamper(reader1, new FileOutputStream(tempFile1));
            AcroFields form1 = filledOutForm1.getAcroFields();

            form1.setField("topmostSubform[0].Page1[0].notif_dt[0]", dateFormat.format(date));
            form1.setField("topmostSubform[0].Page1[0].contact_nm[0]",
                    dverConfigVO.getFirstName() + " " + dverConfigVO.getLastName());
            form1.setField("topmostSubform[0].Page1[0].company[0]", dverUserVO.getCompanyName());
            form1.setField("topmostSubform[0].Page1[0].address[0]",
                    dverUserVO.getAddress1() + " " + dverUserVO.getAddress2());
            form1.setField("topmostSubform[0].Page1[0].city[0]",
                    dverUserVO.getCity() + ", " + dverUserVO.getState() + " " + dverUserVO.getZipCode());

            form1.setField("topmostSubform[0].Page1[0].scac[0]", dverUserVO.getScac());
            form1.setField("topmostSubform[0].Page1[0].pwd[0]", dverUserLoginVO.getPassword());

            filledOutForm1.setFormFlattening(Boolean.TRUE);
            filledOutForm1.close();

            DVERUtil.sendEmailWithAttachments("admin@dver.intermodal.org", "DVER Registration Confirmation",
                    new InternetAddress[] { new InternetAddress(dverConfigVO.getEmail()) },
                    "Please see attached for your registration details.", tempFile1);
        }

        tempFile.deleteOnExit();
    } catch (Exception ex) {
        logger.error("Error in sendRegDetailEmail....." + ex);
        DVERUtil.sendExceptionEmails("sendRegDetailEmail method of RegistrationController \n " + ex);
    }
}

From source file:com.ikon.util.PDFUtils.java

License:Open Source License

/**
 * Fill PDF form/*w ww  .ja va 2 s  . c om*/
 */
@SuppressWarnings("rawtypes")
public static void fillForm(InputStream input, Map<String, Object> values, OutputStream output)
        throws FileNotFoundException, DocumentException, TemplateException, IOException {
    log.debug("fillForm({}, {}, {})", new Object[] { input, values, output });
    PdfReader reader = new PdfReader(input);
    PdfStamper stamper = new PdfStamper(reader, output);
    AcroFields fields = stamper.getAcroFields();
    PRAcroForm form = reader.getAcroForm();
    boolean formFlattening = false;

    if (form != null) {
        for (Iterator it = form.getFields().iterator(); it.hasNext();) {
            PRAcroForm.FieldInformation field = (PRAcroForm.FieldInformation) it.next();
            String fieldValue = fields.getField(field.getName());
            log.debug("Field: {}, Value: '{}'", field.getName(), fieldValue);

            if (fieldValue != null && !fieldValue.isEmpty()) {
                // if (values.containsKey(field.getName())) {
                String result = TemplateUtils.replace("PDF_FILL_FORM", fieldValue, values);
                log.debug("Field '{}' set to '{}' (by expression)", field.getName(), result);
                fields.setField(field.getName(), result);
                stamper.partialFormFlattening(field.getName());
                formFlattening = true;
                //} else {
                //log.warn("Field '{}' (expression ignored because not included in map)", field.getName());
                //}
            } else {
                Object value = values.get(field.getName());

                if (value != null) {
                    log.debug("Field '{}' set to '{}' (by field name)", field.getName(), value);
                    fields.setField(field.getName(), value.toString());
                    stamper.partialFormFlattening(field.getName());
                    formFlattening = true;
                } else {
                    log.warn("Field '{}' (value ignored because not included in map)", field.getName());
                }
            }
        }
    }

    stamper.setFormFlattening(formFlattening);
    stamper.close();
    reader.close();
}

From source file:com.ikon.util.PDFUtils.java

License:Open Source License

/**
 * List form fields/*from ww  w.  j a  v  a2 s  . c  o  m*/
 */
@SuppressWarnings("rawtypes")
public static List<String> listFormFields(String input)
        throws FileNotFoundException, DocumentException, IOException {
    log.debug("listFormFields({})", input);
    List<String> formFields = new ArrayList<String>();
    PdfReader reader = new PdfReader(input);
    PRAcroForm form = reader.getAcroForm();

    if (form != null) {
        for (Iterator it = form.getFields().iterator(); it.hasNext();) {
            PRAcroForm.FieldInformation field = (PRAcroForm.FieldInformation) it.next();
            formFields.add(field.getName());
        }
    }

    reader.close();
    log.debug("listFormFields: {}", formFields);
    return formFields;
}

From source file:com.ikon.util.PDFUtils.java

License:Open Source License

public static void stampImage(InputStream input, byte[] image, int layer, float opacity, String exprX,
        String exprY, OutputStream output)
        throws FileNotFoundException, DocumentException, EvalError, IOException {
    log.debug("stampImage({}, {}, {}, {}, {}, {}, {})", new Object[] { input, image, Integer.valueOf(layer),
            Float.valueOf(opacity), exprX, exprY, output });
    Image img = Image.getInstance(image);
    PdfReader reader = new PdfReader(input);
    PdfStamper stamper = new PdfStamper(reader, output);
    PdfGState gs = new PdfGState();
    gs.setFillOpacity(opacity);//from w w w  .  j a v  a  2  s . c  o  m
    gs.setStrokeOpacity(opacity);
    int numPages = reader.getNumberOfPages();
    int count = 0;

    while (count++ < numPages) {
        int pageCenter = (int) reader.getPageSizeWithRotation(count).getWidth() / 2;
        int pageMiddle = (int) reader.getPageSizeWithRotation(count).getHeight() / 2;

        Interpreter i = new Interpreter();
        i.set("IMAGE_WIDTH", (int) img.getWidth());
        i.set("IMAGE_HEIGHT", (int) img.getHeight());
        i.set("PAGE_WIDTH", (int) reader.getPageSizeWithRotation(count).getWidth());
        i.set("PAGE_HEIGHT", (int) reader.getPageSizeWithRotation(count).getHeight());
        i.set("PAGE_CENTER", pageCenter);
        i.set("PAGE_MIDDLE", pageMiddle);
        Integer evalX = (Integer) i.eval(exprX);
        Integer evalY = (Integer) i.eval(exprY);

        if (evalX == null)
            evalX = Integer.valueOf(pageCenter);
        if (evalY == null) {
            evalY = Integer.valueOf(pageMiddle);
        }
        log.debug("evalX: {}", evalX);
        log.debug("evalY: {}", evalY);

        img.setAbsolutePosition(evalX.intValue(), evalY.intValue());
        PdfContentByte cb = null;

        if (layer == LAYER_UNDER_CONTENT)
            cb = stamper.getUnderContent(count);
        else if (layer == LAYER_OVER_CONTENT)
            cb = stamper.getOverContent(count);
        else {
            throw new IllegalArgumentException();
        }

        cb.saveState();
        cb.setGState(gs);
        cb.addImage(img);
        cb.restoreState();
    }

    stamper.close();
}

From source file:com.ikon.util.PDFUtils.java

License:Open Source License

public static void stampText(InputStream input, String text, int layer, float opacity, int size, Color color,
        int rotation, int align, String exprX, String exprY, OutputStream output)
        throws FileNotFoundException, DocumentException, EvalError, IOException {
    log.debug("stampText({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})",
            new Object[] { input, text, Integer.valueOf(layer), Float.valueOf(opacity), Integer.valueOf(size),
                    color, Integer.valueOf(rotation), Integer.valueOf(align), exprX, exprY, output });

    BaseFont bf = getBaseFont();//from   ww w.  j a v  a  2s  .com
    PdfReader reader = new PdfReader(input);
    PdfStamper stamper = new PdfStamper(reader, output);
    PdfGState gs = new PdfGState();
    gs.setFillOpacity(opacity);
    gs.setStrokeOpacity(opacity);
    int numPages = reader.getNumberOfPages();
    int count = 0;

    while (count++ < numPages) {
        int pageCenter = (int) reader.getPageSizeWithRotation(count).getWidth() / 2;
        int pageMiddle = (int) reader.getPageSizeWithRotation(count).getHeight() / 2;

        Interpreter i = new Interpreter();
        i.set("PAGE_WIDTH", (int) reader.getPageSizeWithRotation(count).getWidth());
        i.set("PAGE_HEIGHT", (int) reader.getPageSizeWithRotation(count).getHeight());
        i.set("PAGE_CENTER", pageCenter);
        i.set("PAGE_MIDDLE", pageMiddle);
        Integer evalX = (Integer) i.eval(exprX);
        Integer evalY = (Integer) i.eval(exprY);

        if (evalX == null)
            evalX = Integer.valueOf(pageCenter);
        if (evalY == null) {
            evalY = Integer.valueOf(pageMiddle);
        }
        log.debug("evalX: {}", evalX);
        log.debug("evalY: {}", evalY);

        PdfContentByte cb = null;

        if (layer == LAYER_UNDER_CONTENT)
            cb = stamper.getUnderContent(count);
        else if (layer == LAYER_OVER_CONTENT)
            cb = stamper.getOverContent(count);
        else {
            throw new IllegalArgumentException();
        }

        cb.saveState();
        cb.setColorFill(color);
        cb.setGState(gs);
        cb.beginText();
        cb.setFontAndSize(bf, size);
        cb.showTextAligned(align, text, evalX.intValue(), evalY.intValue(), rotation);
        cb.endText();
        cb.restoreState();
    }

    stamper.close();
    reader.close();
}

From source file:com.jk.framework.pdf.PDFMergeUtil.java

License:Apache License

/**
 * Concat PD fs.//  w  w w  . j a v a2 s.c  o m
 *
 * @param pdfs
 *            the pdfs
 * @param outputStream
 *            the output stream
 * @param paginate
 *            the paginate
 * @throws PdfException
 *             the pdf exception
 */
// ////////////////////////////////////////////////////////////////
public static void concatPDFs(final List<InputStream> pdfs, final OutputStream outputStream,
        final boolean paginate) throws PdfException {
    final Document document = new Document();
    try {
        final List<PdfReader> readers = new ArrayList<PdfReader>();
        int totalPages = 0;
        final Iterator<InputStream> iteratorPDFs = pdfs.iterator();

        // Create Readers for the pdfs.
        while (iteratorPDFs.hasNext()) {
            final InputStream pdf = iteratorPDFs.next();
            final PdfReader pdfReader = new PdfReader(pdf);
            readers.add(pdfReader);
            totalPages += pdfReader.getNumberOfPages();
        }

        // Create a writer for the outputstream
        final PdfWriter writer = PdfWriter.getInstance(document, outputStream);

        document.open();

        // BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
        // BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        final PdfContentByte cb = writer.getDirectContent(); // Holds the
        // PDF
        // data

        PdfImportedPage page;
        int currentPageNumber = 0;
        int pageOfCurrentReaderPDF = 0;
        final Iterator<PdfReader> iteratorPDFReader = readers.iterator();

        // Loop through the PDF files and add to the output.
        while (iteratorPDFReader.hasNext()) {
            final PdfReader pdfReader = iteratorPDFReader.next();

            // Create a new page in the target for each source page.
            while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                document.newPage();
                pageOfCurrentReaderPDF++;
                currentPageNumber++;
                page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                cb.addTemplate(page, 0, 0);

                // Code for pagination.
                if (paginate) {
                    cb.beginText();
                    // cb.setFontAndSize(bf, 9);
                    cb.showTextAligned(PdfContentByte.ALIGN_CENTER,
                            "" + currentPageNumber + " of " + totalPages, 520, 5, 0);
                    cb.endText();
                }
            }
            pageOfCurrentReaderPDF = 0;
        }

        outputStream.flush();
        document.close();
        outputStream.close();
    } catch (final Exception e) {
        throw new PdfException(e);
    } finally {
        if (document.isOpen()) {
            document.close();
        }
        try {
            if (outputStream != null) {
                outputStream.close();
            }
        } catch (final IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

From source file:com.krawler.spring.crm.common.sendemailnotification.java

License:Open Source License

public void exportPDF(String reportname, String userid, String username, String userEmailID,
        ByteArrayOutputStream byStage, ByteArrayOutputStream byRegion, ByteArrayOutputStream bySalesPerson,
        String partnerName, String sysEmailId) {
    try {//from   w w w  . j av a2  s.  co  m
        PdfReader reader = null;
        PdfReader reader2 = null;
        PdfReader reader3 = null;
        // new reader with the PDF just created
        if (byStage.size() > 0) {
            reader = new PdfReader(byStage.toByteArray());
        }
        // 2nd reader with pdf
        if (byRegion.size() > 0) {
            reader2 = new PdfReader(byRegion.toByteArray());
        }

        // 3rd reader with pdf
        if (bySalesPerson.size() > 0) {
            reader3 = new PdfReader(bySalesPerson.toByteArray());
        }

        PdfCopyFields copy = new PdfCopyFields(byStage);
        if (reader != null)
            copy.addDocument(reader);
        if (reader2 != null)
            copy.addDocument(reader2);
        if (reader3 != null)
            copy.addDocument(reader3);
        copy.close();

        //                response.setHeader("Content-Disposition", "attachment; filename=\"" + reportname + ".pdf\"");
        //                response.setContentType("application/octet-stream");
        //                response.setContentLength(byStage.size());
        //                response.getOutputStream().write(byStage.toByteArray());
        //                response.getOutputStream().flush();
        //                response.getOutputStream().close();

        if (byStage.size() > 0) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            String GenerateDate = df.format(new Date());
            String fileName = reportname + "_" + userid + "_" + GenerateDate + ".pdf";
            String destinationDirectory = storageHandlerImpl.GetDocStorePath() + "opportunityreport";
            java.io.File destDir = new java.io.File(destinationDirectory);
            if (!destDir.exists()) { //Create destination folder if not present
                destDir.mkdirs();
            }
            fileName = destinationDirectory + "/" + fileName;

            java.io.FileOutputStream fileOut = new java.io.FileOutputStream(fileName);
            fileOut.write(byStage.toByteArray());
            fileOut.flush();
            fileOut.close();

            String htmltxt = "Hi <b>" + username + "</b>,<br><br>";
            htmltxt += "<br/><br/>Attachment is the pdf file containing Opportunity sales report.";
            htmltxt += "<br/>For queries, email us at " + sysEmailId + "<br/>";
            htmltxt += "<br/>" + partnerName + " Admin";

            String plainMsg = "Hi " + username + " ,\n\n";
            plainMsg += "\n\nAttachment is the pdf file containing Opportunity sales report.";
            plainMsg += "\nFor queries, email us at " + sysEmailId + "\n";
            plainMsg += "\n" + partnerName + " Admin";
            if (!StringUtil.isNullOrEmpty(userEmailID)) {
                SendMailHandler.postMailAttachment(new String[] { userEmailID },
                        "[" + partnerName + " CRM] - Opportuniy sales reports.", htmltxt, plainMsg,
                        partnerName + " Admin<" + sysEmailId + ">", fileName, reportname + ".pdf");
            }
        }
    } catch (Exception e) {
        Logger.getLogger(sendemailnotification.class.getName()).log(Level.SEVERE, null, e);
    }
}