List of usage examples for com.lowagie.text.pdf PdfReader PdfReader
public PdfReader(PdfReader reader)
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; }