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:org.kuali.coeus.common.impl.print.watermark.WatermarkServiceImpl.java

License:Open Source License

/**
 * This method for attach watermark with PDF with the help of PdfReader and PdfStamper
 * /* w ww  . j  a  va2 s  . c  o  m*/
 * @param pdfContent pdfContent
 * @throws DocumentException throws this exception if cannot decorate the pdf
 * @return byteArrayOutputStream
 */
private ByteArrayOutputStream attachWatermarking(WatermarkBean watermarkBean, byte pdfContent[]) {

    PdfReader pdfReader;
    PdfReader reader;
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    ByteArrayOutputStream copyByteArrayOutputStream = new ByteArrayOutputStream();
    PdfStamper pdfStamp;
    Document document = null;
    PdfWriter writer = null;
    int nop;
    try {
        reader = new PdfReader(pdfContent);
        pdfReader = new PdfReader(pdfContent);
        nop = reader.getNumberOfPages();
        document = nop > 0 ? new com.lowagie.text.Document(reader.getPageSizeWithRotation(1))
                : new com.lowagie.text.Document();
        writer = PdfWriter.getInstance(document, byteArrayOutputStream);
        watermarkPageDocument(document, writer, reader);
        byte[] bs = byteArrayOutputStream.toByteArray();
        pdfReader = new PdfReader(bs);
        pdfStamp = new PdfStamper(pdfReader, copyByteArrayOutputStream);
        decorateWatermark(pdfStamp, watermarkBean);
    } catch (IOException decorateWatermark) {
        LOG.error("Exception occured in WatermarkServiceImpl. Water mark Exception: "
                + decorateWatermark.getMessage());
    } catch (DocumentException documentException) {
        LOG.error("Exception occured in WatermarkServiceImpl. Water mark Exception: "
                + documentException.getMessage());
    }
    return copyByteArrayOutputStream;
}

From source file:org.kuali.coeus.propdev.impl.budget.subaward.PropDevPropDevBudgetSubAwardServiceImpl.java

License:Open Source License

public void populateBudgetSubAwardFiles(Budget budget, BudgetSubAwards subAward, String newFileName,
        byte[] newFileData) {
    subAward.setSubAwardStatusCode(1);/*from w ww  . jav a  2  s.co  m*/
    BudgetSubAwardFiles newSubAwardFile = new BudgetSubAwardFiles();
    newSubAwardFile.setSubAwardXfdFileData(newFileData);
    subAward.getBudgetSubAwardAttachments().clear();
    subAward.getBudgetSubAwardFiles().clear();
    subAward.getBudgetSubAwardFiles().add(newSubAwardFile);

    boolean subawardBudgetExtracted = false;

    try {
        byte[] pdfFileContents = newSubAwardFile.getSubAwardXfdFileData();
        subAward.setSubAwardXfdFileData(pdfFileContents);
        PdfReader reader = new PdfReader(pdfFileContents);
        byte[] xmlContents = getXMLFromPDF(reader);
        subawardBudgetExtracted = (xmlContents != null && xmlContents.length > 0);
        if (subawardBudgetExtracted) {
            Map fileMap = extractAttachments(reader);
            updateXML(xmlContents, fileMap, subAward, budget);
        }
    } catch (Exception e) {
        LOG.error("Not able to extract xml from pdf", e);
        subawardBudgetExtracted = false;
    }

    newSubAwardFile.setSubAwardXfdFileData(subAward.getSubAwardXfdFileData());
    if (subawardBudgetExtracted) {
        newSubAwardFile.setSubAwardXmlFileData(subAward.getSubAwardXmlFileData());
    }
    newSubAwardFile.setSubAwardXfdFileName(newFileName);
    newSubAwardFile.setBudgetSubAward(subAward);
    subAward.setSubAwardXfdFileName(newFileName);
    subAward.setXfdUpdateUser(getLoggedInUserNetworkId());
    subAward.setXfdUpdateTimestamp(dateTimeService.getCurrentTimestamp());
    subAward.setXmlUpdateUser(getLoggedInUserNetworkId());
    subAward.setXmlUpdateTimestamp(dateTimeService.getCurrentTimestamp());
}

From source file:org.kuali.coeus.propdev.impl.budget.subaward.PropDevPropDevBudgetSubAwardServiceImpl.java

License:Open Source License

@Override
public boolean updateSubAwardBudgetDetails(Budget budget, BudgetSubAwards budgetSubAward, List<String[]> errors)
        throws Exception {
    boolean result = true;

    //extarct xml from the pdf because the stored xml has been modified
    if (budgetSubAward.getSubAwardXfdFileData() == null
            || budgetSubAward.getSubAwardXfdFileData().length == 0) {
        errors.add(new String[] { Constants.SUBAWARD_FILE_NOT_EXTRACTED });
        return true;
    }/*from w  ww.j  a v  a2 s  .co m*/
    PdfReader reader = new PdfReader(budgetSubAward.getSubAwardXfdFileData());
    byte[] xmlContents = getXMLFromPDF(reader);
    if (xmlContents == null) {
        errors.add(new String[] { Constants.SUBAWARD_FILE_NOT_EXTRACTED });
        return true;
    }
    javax.xml.parsers.DocumentBuilderFactory domParserFactory = javax.xml.parsers.DocumentBuilderFactory
            .newInstance();
    javax.xml.parsers.DocumentBuilder domParser = domParserFactory.newDocumentBuilder();
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xmlContents);
    org.w3c.dom.Document document = domParser.parse(byteArrayInputStream);
    NodeList budgetYearList = XPathAPI.selectNodeList(document, "//*[local-name(.) = 'BudgetYear']");
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    boolean fnfForm = StringUtils.contains(budgetSubAward.getFormName(), "RR_FedNonFedBudget");

    //reset current line items if replacing with a new one.
    resetSubAwardPeriodDetails(budgetSubAward);

    for (int i = 0; i < budgetYearList.getLength(); i++) {
        Node budgetYear = budgetYearList.item(i);
        Node startDateNode = XPathAPI.selectSingleNode(budgetYear, "BudgetPeriodStartDate");
        if (startDateNode == null) {
            startDateNode = XPathAPI.selectSingleNode(budgetYear, "PeriodStartDate");
        }
        Node endDateNode = XPathAPI.selectSingleNode(budgetYear, "BudgetPeriodEndDate");
        if (endDateNode == null) {
            endDateNode = XPathAPI.selectSingleNode(budgetYear, "PeriodEndDate");
        }
        Date startDate = dateFormat.parse(startDateNode.getTextContent());
        Date endDate = dateFormat.parse(endDateNode.getTextContent());
        //attempt to find a matching budget period
        BudgetSubAwardPeriodDetail periodDetail = findBudgetSubAwardPeriodDetail(budget, budgetSubAward,
                startDate, endDate);
        if (periodDetail != null) {
            Node directCostNode, indirectCostNode, costShareNode = null;
            if (fnfForm) {
                directCostNode = XPathAPI.selectSingleNode(budgetYear, "DirectCosts/FederalSummary");
                indirectCostNode = XPathAPI.selectSingleNode(budgetYear,
                        "IndirectCosts/TotalIndirectCosts/FederalSummary");
                costShareNode = XPathAPI.selectSingleNode(budgetYear, "TotalCosts/NonFederalSummary");
            } else {
                directCostNode = XPathAPI.selectSingleNode(budgetYear, "DirectCosts");
                indirectCostNode = XPathAPI.selectSingleNode(budgetYear, "IndirectCosts/TotalIndirectCosts");
            }
            if (directCostNode != null) {
                periodDetail
                        .setDirectCost(new ScaleTwoDecimal(Float.parseFloat(directCostNode.getTextContent())));
            }
            if (indirectCostNode != null) {
                periodDetail.setIndirectCost(
                        new ScaleTwoDecimal(Float.parseFloat(indirectCostNode.getTextContent())));
            }
            if (costShareNode != null) {
                periodDetail
                        .setCostShare(new ScaleTwoDecimal(Float.parseFloat(costShareNode.getTextContent())));
            } else {
                periodDetail.setCostShare(ScaleTwoDecimal.ZERO);
            }
            periodDetail.computeTotal();
        } else {
            Node budgetPeriodNode = XPathAPI.selectSingleNode(budgetYear, "BudgetPeriod");
            String budgetPeriod = null;
            if (budgetPeriodNode != null) {
                budgetPeriod = budgetPeriodNode.getTextContent();
            }
            LOG.debug("Unable to find matching period for uploaded period '" + budgetPeriod + "' -- "
                    + startDateNode.getTextContent() + " - " + endDateNode.getTextContent());
            errors.add(new String[] { Constants.SUBAWARD_FILE_PERIOD_NOT_FOUND,
                    (budgetPeriod == null ? "" : budgetPeriod), startDateNode.getTextContent(),
                    endDateNode.getTextContent() });
        }
    }
    return result;
}

From source file:org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedFormServiceImpl.java

License:Open Source License

@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public List<S2sUserAttachedForm> extractNSaveUserAttachedForms(ProposalDevelopmentDocument developmentProposal,
        S2sUserAttachedForm s2sUserAttachedForm) throws Exception {
    PdfReader reader = null;//from www .  jav a  2  s.  c o  m
    List<S2sUserAttachedForm> formBeans = new ArrayList<S2sUserAttachedForm>();
    try {
        byte pdfFileContents[] = s2sUserAttachedForm.getNewFormFileBytes();
        if (pdfFileContents == null || pdfFileContents.length == 0) {
            S2SException s2sException = new S2SException(KeyConstants.S2S_USER_ATTACHED_FORM_EMPTY,
                    "Uploaded file is empty");
            s2sException.setTabErrorKey("userAttachedFormsErrors");
            throw s2sException;
        } else {
            try {
                reader = new PdfReader(pdfFileContents);
            } catch (IOException ioex) {
                S2SException s2sException = new S2SException(KeyConstants.S2S_USER_ATTACHED_FORM_NOT_PDF,
                        "Uploaded file is not Grants.Gov fillable form", ioex.getMessage());
                s2sException.setTabErrorKey("userAttachedFormsErrors");
                throw s2sException;
            }
            Map attachments = extractAttachments(reader);
            formBeans = extractAndPopulateXml(developmentProposal, reader, s2sUserAttachedForm, attachments);
        }
        resetFormsAvailability(developmentProposal, formBeans);
    } finally {
        if (reader != null)
            reader.close();
    }
    return formBeans;
}

From source file:org.kuali.coeus.s2sgen.impl.print.S2SPrintingServiceImpl.java

License:Educational Community License

/**
 * @param pdfBytesList List containing the PDF data bytes
 * @param bookmarksList List of bookmarks corresponding to the PDF bytes.
 *//*w ww .  j  av a2 s. c o m*/
protected byte[] mergePdfBytes(List<byte[]> pdfBytesList, List<String> bookmarksList,
        boolean headerFooterRequired) {
    Document document = null;
    PdfWriter writer = null;
    ByteArrayOutputStream mergedPdfReport = new ByteArrayOutputStream();
    int totalNumOfPages = 0;
    PdfReader[] pdfReaderArr = new PdfReader[pdfBytesList.size()];
    int pdfReaderCount = 0;
    for (byte[] fileBytes : pdfBytesList) {
        LOG.debug("File Size " + fileBytes.length + " For " + bookmarksList.get(pdfReaderCount));
        PdfReader reader = null;
        try {
            reader = new PdfReader(fileBytes);
            pdfReaderArr[pdfReaderCount] = reader;
            pdfReaderCount = pdfReaderCount + 1;
            totalNumOfPages += reader.getNumberOfPages();
        } catch (IOException e) {
            LOG.error(e.getMessage(), e);
        }
    }
    HeaderFooter footer = null;
    if (headerFooterRequired) {
        Calendar calendar = Calendar.getInstance();
        String dateString = formateCalendar(calendar);
        StringBuilder footerPhStr = new StringBuilder();
        footerPhStr.append(" of ");
        footerPhStr.append(totalNumOfPages);
        footerPhStr.append(getWhitespaceString(WHITESPACE_LENGTH_76));
        footerPhStr.append(getWhitespaceString(WHITESPACE_LENGTH_76));
        footerPhStr.append(getWhitespaceString(WHITESPACE_LENGTH_60));
        footerPhStr.append(dateString);
        Font font = FontFactory.getFont(FontFactory.TIMES, 8, Font.NORMAL, Color.BLACK);
        Phrase beforePhrase = new Phrase("Page ", font);
        Phrase afterPhrase = new Phrase(footerPhStr.toString(), font);
        footer = new HeaderFooter(beforePhrase, afterPhrase);
        footer.setAlignment(Element.ALIGN_BASELINE);
        footer.setBorderWidth(0f);
    }
    for (int count = 0; count < pdfReaderArr.length; count++) {
        PdfReader reader = pdfReaderArr[count];
        int nop;
        if (reader == null) {
            LOG.debug("Empty PDF byetes found for " + bookmarksList.get(count));
            continue;
        } else {
            nop = reader.getNumberOfPages();
        }

        if (count == 0) {
            document = nop > 0 ? new Document(reader.getPageSizeWithRotation(1)) : new Document();
            try {
                writer = PdfWriter.getInstance(document, mergedPdfReport);
            } catch (DocumentException e) {
                LOG.error(e.getMessage(), e);
                throw new S2SException(e.getMessage(), e);
            }
            if (footer != null) {
                document.setFooter(footer);
            }
            document.open();
        }

        PdfContentByte cb = writer.getDirectContent();
        int pageCount = 0;
        while (pageCount < nop) {
            document.setPageSize(reader.getPageSize(++pageCount));
            document.newPage();
            if (footer != null) {
                document.setFooter(footer);
            }
            PdfImportedPage page = writer.getImportedPage(reader, pageCount);

            cb.addTemplate(page, 1, 0, 0, 1, 0, 0);

            PdfOutline root = cb.getRootOutline();
            if (pageCount == 1) {
                String pageName = bookmarksList.get(count);
                cb.addOutline(new PdfOutline(root, new PdfDestination(PdfDestination.FITH), pageName),
                        pageName);
            }
        }
    }
    if (document != null) {
        try {
            document.close();
            return mergedPdfReport.toByteArray();
        } catch (Exception e) {
            LOG.error("Exception occured because the generated PDF document has no pages", e);
        }
    }
    return null;
}

From source file:org.kuali.continuity.service.JasperReportServiceImpl.java

License:Educational Community License

public void mergePdf(String outfile, List<String> pdfs) throws DocumentException, IOException {
    //      File test = new File("/");
    //      String[] flist = test.list();
    //      for (String f : flist) {
    // System.out.println(f);
    //      }//from  www  .  jav  a  2  s .  c o m
    FileOutputStream baos = new FileOutputStream(new File(outfile));
    PdfCopyFields copy = new PdfCopyFields(baos);

    //      int i = 0;
    for (String pdf : pdfs) {
        copy.addDocument(new PdfReader(pdf));
    }
    copy.close();
}

From source file:org.kuali.continuity.service.JasperReportServiceImpl.java

License:Educational Community License

void mergeNextPdf(ByteArrayOutputStream baos, PdfCopyFields pdfCopyOut, int npages)
        throws DocumentException, IOException {

    // FileOutputStream baos = new FileOutputStream(new File(outfile));
    // PdfCopyFields copy = new PdfCopyFields(baos);

    //      int i = 0;
    // Jasper produces blank reports if there is no detail section.
    //      if (npages > 0) {
    //         pdfCopyOut.addDocument(new PdfReader(new ByteArrayInputStream(baos
    //               .toByteArray())));
    //      }/* w  w  w . j a  va  2 s .  c o m*/
    //      
    pdfCopyOut.addDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));

}

From source file:org.kuali.ext.mm.document.web.struts.CountWorksheetPrintAction.java

License:Educational Community License

private void combineAndFlushReportPDFFiles(List<File> fileList, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    long startTime = System.currentTimeMillis();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ArrayList master = new ArrayList();
    int pageOffset = 0;
    int f = 0;//from  ww w .  j  a va 2s.co  m
    PdfCopy writer = null;
    com.lowagie.text.Document document = null;
    for (File file : fileList) {
        // we create a reader for a certain document
        String reportName = file.getAbsolutePath();
        PdfReader reader = new PdfReader(reportName);
        reader.consolidateNamedDestinations();
        // we retrieve the total number of pages
        int n = reader.getNumberOfPages();
        List bookmarks = SimpleBookmark.getBookmark(reader);
        if (bookmarks != null) {
            if (pageOffset != 0) {
                SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
            }
            master.addAll(bookmarks);
        }
        pageOffset += n;

        if (f == 0) {
            // step 1: creation of a document-object
            document = new com.lowagie.text.Document(reader.getPageSizeWithRotation(1));
            // step 2: we create a writer that listens to the document
            writer = new PdfCopy(document, baos);
            // step 3: we open the document
            document.open();
        }
        // step 4: we add content
        PdfImportedPage page;
        for (int i = 0; i < n;) {
            ++i;
            page = writer.getImportedPage(reader, i);
            writer.addPage(page);
        }
        writer.freeReader(reader);
        f++;
    }

    if (!master.isEmpty())
        writer.setOutlines(master);
    // step 5: we close the document
    document.close();

    StringBuffer sbContentDispValue = new StringBuffer();
    String useJavascript = request.getParameter("useJavascript");
    if (useJavascript == null || useJavascript.equalsIgnoreCase("false")) {
        sbContentDispValue.append("attachment");
    } else {
        sbContentDispValue.append("inline");
    }
    sbContentDispValue.append("; filename=");
    sbContentDispValue.append(MMUtil.getFileName());

    String contentDisposition = sbContentDispValue.toString();

    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", contentDisposition);
    response.setHeader("Expires", "0");
    response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
    response.setHeader("Pragma", "public");
    response.setContentLength(baos.size());

    // write to output
    ServletOutputStream sos = response.getOutputStream();
    baos.writeTo(sos);
    sos.flush();
    baos.close();
    sos.close();
    long endTime = System.currentTimeMillis();
    loggerAc.debug("Time taken for report Parameter settings in action " + (endTime - startTime));
}

From source file:org.kuali.ext.mm.service.impl.CountWorksheetReportServiceImpl.java

License:Educational Community License

public ByteArrayOutputStream combineAndFlushReportPDFFiles(List<File> fileList) throws Exception {

    long startTime = System.currentTimeMillis();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ArrayList master = new ArrayList();
    int pageOffset = 0;
    int f = 0;/*from  w  w w  . j  a v  a2  s. c o m*/
    PdfCopy writer = null;
    com.lowagie.text.Document document = null;
    for (File file : fileList) {
        // we create a reader for a certain document
        String reportName = file.getAbsolutePath();
        PdfReader reader = new PdfReader(reportName);
        reader.consolidateNamedDestinations();
        // we retrieve the total number of pages
        int n = reader.getNumberOfPages();
        List bookmarks = SimpleBookmark.getBookmark(reader);
        if (bookmarks != null) {
            if (pageOffset != 0) {
                SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
            }
            master.addAll(bookmarks);
        }
        pageOffset += n;

        if (f == 0) {
            // step 1: creation of a document-object
            document = new com.lowagie.text.Document(reader.getPageSizeWithRotation(1));
            // step 2: we create a writer that listens to the document
            writer = new PdfCopy(document, baos);
            // step 3: we open the document
            document.open();
        }
        // step 4: we add content
        PdfImportedPage page;
        for (int i = 0; i < n;) {
            ++i;
            page = writer.getImportedPage(reader, i);
            writer.addPage(page);
        }
        writer.freeReader(reader);
        f++;
    }

    if (!master.isEmpty())
        writer.setOutlines(master);
    // step 5: we close the document
    document.close();
    return baos;
}

From source file:org.kuali.ext.mm.service.impl.CountWorksheetReportServiceImpl.java

License:Educational Community License

public ByteArrayOutputStream combineAndFlushReportPDFStreams(List<ByteArrayOutputStream> fileList)
        throws Exception {

    long startTime = System.currentTimeMillis();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ArrayList master = new ArrayList();
    int pageOffset = 0;
    int f = 0;/* w ww  .j  av  a 2 s.c  o m*/
    PdfCopy writer = null;
    com.lowagie.text.Document document = null;
    for (ByteArrayOutputStream file : fileList) {
        // we create a reader for a certain document
        // String reportName = file.getAbsolutePath();
        PdfReader reader = new PdfReader(file.toByteArray());
        reader.consolidateNamedDestinations();
        // we retrieve the total number of pages
        int n = reader.getNumberOfPages();
        List bookmarks = SimpleBookmark.getBookmark(reader);
        if (bookmarks != null) {
            if (pageOffset != 0) {
                SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
            }
            master.addAll(bookmarks);
        }
        pageOffset += n;

        if (f == 0) {
            // step 1: creation of a document-object
            document = new com.lowagie.text.Document(reader.getPageSizeWithRotation(1));
            // step 2: we create a writer that listens to the document
            writer = new PdfCopy(document, baos);
            // step 3: we open the document
            document.open();
        }
        // step 4: we add content
        PdfImportedPage page;
        for (int i = 0; i < n;) {
            ++i;
            page = writer.getImportedPage(reader, i);
            writer.addPage(page);
        }
        writer.freeReader(reader);
        f++;
    }

    if (!master.isEmpty())
        writer.setOutlines(master);
    // step 5: we close the document
    document.close();
    return baos;
}