List of usage examples for com.lowagie.text.pdf PdfWriter getDirectContent
public PdfContentByte getDirectContent()
From source file:org.kuali.coeus.common.committee.impl.web.struts.action.CommitteeActionsActionBase.java
License:Open Source License
/** * This method merged the pdf bytes without creating page numbers and dates. * /*from w w w . j a v a 2 s .c o m*/ * (This is a slimed down version of MergePdfBytes() in PrintingServiceImpl.java) * * @param pdfBytesList * List containing the PDF data bytes * @param bookmarksList * List of bookmarks corresponding to the PDF bytes. * @return * @throws PrintingException */ private byte[] mergePdfBytes(List<byte[]> pdfBytesList, List<String> bookmarksList) throws PrintingException { Document document = null; PdfWriter writer = null; ByteArrayOutputStream mergedPdfReport = new ByteArrayOutputStream(); for (int count = 0; count < pdfBytesList.size(); count++) { PdfReader reader; try { reader = new PdfReader(pdfBytesList.get(count)); } catch (IOException e) { LOG.error(e.getMessage(), e); break; // throw new PrintingException(e.getMessage(), e); } int nop; if (reader == null) { LOG.debug("Empty PDF bytes found for " + bookmarksList.get(count)); continue; } else { nop = reader.getNumberOfPages(); } if (count == 0) { document = nop > 0 ? new com.lowagie.text.Document(reader.getPageSizeWithRotation(1)) : new com.lowagie.text.Document(); try { writer = PdfWriter.getInstance(document, mergedPdfReport); } catch (DocumentException e) { LOG.error(e.getMessage(), e); throw new PrintingException(e.getMessage(), e); } document.open(); } PdfContentByte cb = writer.getDirectContent(); int pageCount = 0; while (pageCount < nop) { document.setPageSize(reader.getPageSize(++pageCount)); document.newPage(); 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) { document.close(); return mergedPdfReport.toByteArray(); } return null; }
From source file:org.kuali.coeus.common.impl.print.PrintingServiceImpl.java
License:Open Source License
/** * @param pdfBytesList List containing the PDF data bytes * @param bookmarksList List of bookmarks corresponding to the PDF bytes. * @return//from ww w . j a v a 2 s .co m * @throws PrintingException */ protected byte[] mergePdfBytes(List<byte[]> pdfBytesList, List<String> bookmarksList, boolean headerFooterRequired) throws PrintingException { 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 = dateTimeService.getCurrentCalendar(); 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 com.lowagie.text.Document(reader.getPageSizeWithRotation(1)) : new com.lowagie.text.Document(); try { writer = PdfWriter.getInstance(document, mergedPdfReport); } catch (DocumentException e) { LOG.error(e.getMessage(), e); throw new PrintingException(e.getMessage(), e); } if (footer != null) { document.setFooter(footer); } // writer.setPageEvent(new Watermark()); // add watermark object here 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.coeus.common.impl.print.watermark.WatermarkServiceImpl.java
License:Open Source License
/** * This method is for setting the page properties of the document. *///w w w. j a v a2s .c om private void watermarkPageDocument(Document document, PdfWriter writer, PdfReader reader) { document.open(); int totalPages; totalPages = reader.getNumberOfPages(); for (int pageCount = 1; pageCount <= totalPages; pageCount++) { PdfContentByte contents = writer.getDirectContent(); document.setPageSize(reader.getPageSize(pageCount)); document.newPage(); PdfImportedPage page = writer.getImportedPage(reader, pageCount); contents.addTemplate(page, 1, 0, 0, 1, 0, 0); } document.close(); }
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. *///from w ww .ja v a 2s . com 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.kfs.fp.document.service.impl.CashReceiptCoverSheetServiceImpl.java
License:Open Source License
/** * Responsible for creating a new PDF page and workspace through <code>{@link PdfContentByte}</code> for direct writing to the * PDF.//from ww w . j a v a 2s . c o m * * @param writer The PDF writer used to write to the new page with. * @param reader The PDF reader used to read information from the PDF file. * @param pageNumber The current number of pages in the PDF file, which will be incremented by one inside this method. * * @return The PDFContentByte used to access the new PDF page. * @exception DocumentException * @exception IOException */ protected PdfContentByte startNewPage(PdfWriter writer, PdfReader reader, ModifiableInteger pageNumber) throws DocumentException, IOException { PdfContentByte retval; PdfContentByte under; Rectangle pageSize; Document pdfDoc; PdfImportedPage newPage; pageNumber.increment(); pageSize = reader.getPageSize(FRONT_PAGE); retval = writer.getDirectContent(); // under = writer.getDirectContentUnder(); if (pageNumber.getInt() > FRONT_PAGE) { newPage = writer.getImportedPage(reader, CHECK_PAGE_NORMAL); setCurrentRenderingYPosition(pageSize.top(TOP_MARGIN + CHECK_DETAIL_HEADING_HEIGHT)); } else { newPage = writer.getImportedPage(reader, FRONT_PAGE); setCurrentRenderingYPosition(pageSize.top(TOP_FIRST_PAGE)); } pdfDoc = retval.getPdfDocument(); pdfDoc.newPage(); retval.addTemplate(newPage, 0, 0); retval.setFontAndSize(getTextFont(), 8); return retval; }
From source file:org.kuali.kfs.module.purap.pdf.BulkReceivingPdf.java
License:Open Source License
/** * Overrides the method in PdfPageEventHelper from itext to create and set the headerTable and set its logo image if * there is a logoImage to be used, creates and sets the nestedHeaderTable and its content. * //from ww w. j a v a2 s .co m * @param writer The PdfWriter for this document. * @param document The document. * @see com.lowagie.text.pdf.PdfPageEventHelper#onOpenDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onOpenDocument(PdfWriter writer, Document document) { try { loadHeaderTable(); // initialization of the template tpl = writer.getDirectContent().createTemplate(100, 100); // initialization of the font helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false); } catch (Exception e) { throw new ExceptionConverter(e); } }
From source file:org.kuali.kfs.module.purap.pdf.PurapPdf.java
License:Open Source License
/** * Overrides the method in PdfPageEventHelper from itext to write the headerTable, compose the footer and show the * footer.//from w w w.ja v a 2s .c om * * @param writer The PdfWriter for this document. * @param document The document. * @see com.lowagie.text.pdf.PdfPageEventHelper#onEndPage(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ @Override public void onEndPage(PdfWriter writer, Document document) { LOG.debug("onEndPage() started."); PdfContentByte cb = writer.getDirectContent(); cb.saveState(); // write the headerTable headerTable.setTotalWidth(document.right() - document.left()); headerTable.writeSelectedRows(0, -1, document.left(), document.getPageSize().height() - 10, cb); // compose the footer String text = "Page " + writer.getPageNumber() + " of "; float textSize = helv.getWidthPoint(text, 12); float textBase = document.bottom() - 20; cb.beginText(); cb.setFontAndSize(helv, 12); // show the footer float adjust = helv.getWidthPoint("0", 12); cb.setTextMatrix(document.right() - textSize - adjust, textBase); cb.showText(text); cb.endText(); cb.addTemplate(tpl, document.right() - adjust, textBase); cb.saveState(); }
From source file:org.kuali.kfs.module.purap.pdf.PurchaseOrderPdf.java
License:Open Source License
/** * Overrides the method in PdfPageEventHelper from itext to create and set the headerTable and set its logo image if * there is a logoImage to be used, creates and sets the nestedHeaderTable and its content. * * @param writer The PdfWriter for this document. * @param document The document./*from ww w. j a v a 2 s. c o m*/ * @see com.lowagie.text.pdf.PdfPageEventHelper#onOpenDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ @Override public void onOpenDocument(PdfWriter writer, Document document) { if (LOG.isDebugEnabled()) { LOG.debug("onOpenDocument() started. isRetransmit is " + isRetransmit); } try { float[] headerWidths = { 0.20f, 0.80f }; headerTable = new PdfPTable(headerWidths); headerTable.setWidthPercentage(100); headerTable.setHorizontalAlignment(Element.ALIGN_CENTER); headerTable.setSplitLate(false); headerTable.getDefaultCell().setBorderWidth(0); headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); headerTable.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER); Image logo = null; if (StringUtils.isNotBlank(logoImage)) { try { logo = Image.getInstance(logoImage); } catch (IOException e) { LOG.info("The logo image [" + logoImage + "] is not available. Defaulting to the default image."); } } if (logo == null) { // if we don't use images headerTable.addCell(new Phrase(new Chunk(""))); } else { logo.scalePercent(3, 3); headerTable.addCell(new Phrase(new Chunk(logo, 0, 0))); } // Nested table for titles, etc. float[] nestedHeaderWidths = { 0.70f, 0.30f }; nestedHeaderTable = new PdfPTable(nestedHeaderWidths); nestedHeaderTable.setSplitLate(false); PdfPCell cell; // New nestedHeaderTable row cell = new PdfPCell(new Paragraph(po.getBillingName(), ver_15_normal)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderWidth(0); nestedHeaderTable.addCell(cell); cell = new PdfPCell(new Paragraph(" ", ver_15_normal)); cell.setBorderWidth(0); nestedHeaderTable.addCell(cell); // New nestedHeaderTable row if (isRetransmit) { cell = new PdfPCell(new Paragraph(po.getRetransmitHeader(), ver_15_normal)); } else { cell = new PdfPCell(new Paragraph("PURCHASE ORDER", ver_15_normal)); } cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderWidth(0); nestedHeaderTable.addCell(cell); Paragraph p = new Paragraph(); p.add(new Chunk("PO Number: ", ver_11_normal)); p.add(new Chunk(po.getPurapDocumentIdentifier().toString(), cour_16_bold)); cell = new PdfPCell(p); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); cell.setBorderWidth(0); nestedHeaderTable.addCell(cell); if (!po.getPurchaseOrderAutomaticIndicator()) { // Contract manager name goes on non-APOs. // New nestedHeaderTable row, spans both columns p = new Paragraph(); p.add(new Chunk("Contract Manager: ", ver_11_normal)); p.add(new Chunk(po.getContractManager().getContractManagerName(), cour_7_normal)); cell = new PdfPCell(p); cell.setColspan(2); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); cell.setBorderWidth(0); nestedHeaderTable.addCell(cell); } // Add the nestedHeaderTable to the headerTable cell = new PdfPCell(nestedHeaderTable); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setBorderWidth(0); headerTable.addCell(cell); // initialization of the template tpl = writer.getDirectContent().createTemplate(100, 100); // initialization of the font helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false); } catch (Exception e) { throw new ExceptionConverter(e); } }
From source file:org.kuali.kfs.module.purap.pdf.PurchaseOrderQuotePdf.java
License:Open Source License
/** * Overrides the method in PdfPageEventHelper from itext to create and set the headerTable with relevant contents * and set its logo image if there is a logoImage to be used. * * @param writer The PdfWriter for this document. * @param document The document.//w w w. j a va 2s.c o m * @see com.lowagie.text.pdf.PdfPageEventHelper#onOpenDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ @Override public void onOpenDocument(PdfWriter writer, Document document) { LOG.debug("onOpenDocument() started."); try { float[] headerWidths = { 0.20f, 0.60f, 0.20f }; headerTable = new PdfPTable(headerWidths); headerTable.setWidthPercentage(100); headerTable.setHorizontalAlignment(Element.ALIGN_CENTER); headerTable.getDefaultCell().setBorderWidth(0); headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); headerTable.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER); if (StringUtils.isNotBlank(logoImage)) { logo = Image.getInstance(logoImage); logo.scalePercent(3, 3); headerTable.addCell(new Phrase(new Chunk(logo, 0, 0))); } else { // if we don't use images headerTable.addCell(new Phrase(new Chunk(""))); } PdfPCell cell; cell = new PdfPCell(new Paragraph("REQUEST FOR QUOTATION\nTHIS IS NOT AN ORDER", ver_17_normal)); cell.setBorderWidth(0); cell.setHorizontalAlignment(Element.ALIGN_CENTER); headerTable.addCell(cell); Paragraph p = new Paragraph(); p.add(new Chunk("\n R.Q. Number: ", ver_8_bold)); p.add(new Chunk(po.getPurapDocumentIdentifier() + "\n", cour_10_normal)); cell = new PdfPCell(p); cell.setBorderWidth(0); headerTable.addCell(cell); // initialization of the template tpl = writer.getDirectContent().createTemplate(100, 100); // initialization of the font helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false); } catch (Exception e) { throw new ExceptionConverter(e); } }
From source file:org.kuali.kfs.module.purap.pdf.PurchaseOrderQuoteRequestsPdf.java
License:Open Source License
/** * Overrides the method in PdfPageEventHelper from itext to initialize the template and font for purchase * order quote request pdf documents./*from ww w . j a v a 2s .c om*/ * * @param writer The PdfWriter for this document. * @param document The document. * @see com.lowagie.text.pdf.PdfPageEventHelper#onOpenDocument(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document) */ public void onOpenDocument(PdfWriter writer, Document document) { LOG.debug("onOpenDocument() started."); try { // initialization of the template tpl = writer.getDirectContent().createTemplate(100, 100); // initialization of the font helv = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false); } catch (Exception e) { throw new ExceptionConverter(e); } }