List of usage examples for com.itextpdf.text.pdf ColumnText go
public int go() throws DocumentException
From source file:adams.flow.transformer.pdfproclet.PlainText.java
License:Open Source License
/** * The actual processing of the document. * * @param generator the context//from w w w . ja v a 2 s. c o m * @param paragraphs the paragraphs to add * @return true if successfully added * @throws Exception if something goes wrong */ protected boolean doProcess(PDFGenerator generator, List<String> paragraphs) throws Exception { boolean result; ColumnText ct; result = true; if (m_UseAbsolutePosition) { ct = addColumnTextAt(generator, m_X, m_Y); ct.addElement(new Paragraph(Utils.flatten(paragraphs, "\n"), m_FontContent.toFont(m_ColorContent))); ct.go(); generator.getState().contentAdded(); } else { result = addElement(generator, new Paragraph(Utils.flatten(paragraphs, "\n"), m_FontContent.toFont(m_ColorContent))); } return result; }
From source file:adams.flow.transformer.pdfproclet.SpreadSheet.java
License:Open Source License
/** * The actual processing of the document. * * @param generator the context//from w ww . j av a 2s. c om * @param sheet the spreadsheet to add * @return true if successfully added * @throws Exception if something goes wrong */ protected boolean doProcess(PDFGenerator generator, adams.data.spreadsheet.SpreadSheet sheet) throws Exception { boolean result; Row row; Cell cell; int i; PdfPTable table; PdfPCell pdfCell; String pattern; DecimalFormat format; Paragraph para; Paragraph paraComments; ColumnText ct; pattern = "#0"; for (i = 0; i < m_NumDecimals; i++) { if (i == 0) pattern += "."; pattern += "0"; } format = new DecimalFormat(pattern); result = (sheet != null); if (!result) return false; // comments paraComments = null; if (m_AddComments) paraComments = new Paragraph(Utils.flatten(sheet.getComments(), "\n"), m_FontComments.toFont(m_ColorComments)); // table // 1. header table = new PdfPTable(sheet.getColumnCount()); row = sheet.getHeaderRow(); for (String key : sheet.getHeaderRow().cellKeys()) { cell = row.getCell(key); para = new Paragraph(cell.toString(), m_FontTableHeader.toFont(m_ColorTableHeader)); pdfCell = new PdfPCell(para); pdfCell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(pdfCell); } // 2. data for (i = 0; i < sheet.getRowCount(); i++) { row = sheet.getRow(i); for (String key : sheet.getHeaderRow().cellKeys()) { cell = row.getCell(key); if ((cell == null) || cell.isMissing()) { pdfCell = new PdfPCell(new Paragraph("")); } else if (cell.isNumeric()) { pdfCell = new PdfPCell(new Paragraph(format.format(cell.toDouble()), m_FontNumericContent.toFont(m_ColorNumericContent))); pdfCell.setHorizontalAlignment(Element.ALIGN_RIGHT); } else { pdfCell = new PdfPCell( new Paragraph(cell.toString(), m_FontGeneralContent.toFont(m_ColorGeneralContent))); pdfCell.setHorizontalAlignment(Element.ALIGN_LEFT); } table.addCell(pdfCell); } } if (m_UseAbsolutePosition) { ct = addColumnTextAt(generator, m_X, m_Y); if (paraComments != null) { ct.addElement(paraComments); ct.addElement(new Paragraph("\n")); } ct.addElement(new Paragraph("\n")); ct.addElement(table); ct.go(); generator.getState().contentAdded(); } else { if (paraComments != null) { result = addElement(generator, paraComments); if (result) result = addElement(generator, new Paragraph("\n")); } if (result) result = addElement(generator, new Paragraph("\n")); if (result) result = addElement(generator, table); } return result; }
From source file:be.roots.taconic.pricingguide.service.PDFServiceImpl.java
License:Open Source License
private byte[] personalize(byte[] pdf, Contact contact, Toc tableOfContents) throws IOException, DocumentException { try (final ByteArrayOutputStream bos = new ByteArrayOutputStream()) { final PdfReader reader = new PdfReader(pdf); final PdfStamper stamper = new PdfStamper(reader, bos); // stamp some text on first page PdfContentByte text = stamper.getOverContent(1); text.beginText();/*from w ww.ja va 2 s .com*/ text.setColorFill(iTextUtil.getFontCoverText().getColor()); text.setFontAndSize(iTextUtil.getFontCoverText().getBaseFont(), iTextUtil.getFontCoverText().getSize()); text.showTextAligned(Element.ALIGN_RIGHT, coverTitle1, text.getPdfDocument().getPageSize().getWidth() - 15, 195, 0); text.showTextAligned(Element.ALIGN_RIGHT, coverTitle2, text.getPdfDocument().getPageSize().getWidth() - 15, 175, 0); text.showTextAligned(Element.ALIGN_RIGHT, contact.getCurrency().getTitlePageDescription(), text.getPdfDocument().getPageSize().getWidth() - 15, 80, 0); text.setColorFill(iTextUtil.getFontCoverPricingguide().getColor()); text.setFontAndSize(iTextUtil.getFontCoverPricingguide().getBaseFont(), iTextUtil.getFontCoverPricingguide().getSize()); text.showTextAligned(Element.ALIGN_RIGHT, coverTitle3, text.getPdfDocument().getPageSize().getWidth() - 15, 145, 0); text.setColorFill(iTextUtil.getFontCoverYear().getColor()); text.setFontAndSize(iTextUtil.getFontCoverYear().getBaseFont(), iTextUtil.getFontCoverYear().getSize()); text.showTextAligned(Element.ALIGN_RIGHT, coverTitle4, text.getPdfDocument().getPageSize().getWidth() - 15, 105, 0); text.endText(); // stamp some text on first page of the table of contents page final Image logoImage = iTextUtil.getImageFromByteArray(HttpUtil.readByteArray( pdfTemplate.getLogo().getUrl(), defaultService.getUserName(), defaultService.getPassword())); final PdfContentByte tocContent = stamper.getOverContent(tableOfContents.getFirstPageOfToc()); final float resizeRatio = logoImage.getHeight() / 85; // define the desired height of the log tocContent.addImage(logoImage, logoImage.getWidth() / resizeRatio, 0, 0, logoImage.getHeight() / resizeRatio, 59, 615); text = stamper.getOverContent(tableOfContents.getFirstPageOfToc()); text.beginText(); text.setColorFill(iTextUtil.getFontPersonalization().getColor()); text.setFontAndSize(iTextUtil.getFontPersonalization().getBaseFont(), iTextUtil.getFontPersonalization().getSize()); text.showTextAligned(Element.ALIGN_LEFT, "Prepared for:", 355, 681, 0); text.showTextAligned(Element.ALIGN_LEFT, contact.getFullName(), 355, 662, 0); // set company name if (!StringUtils.isEmpty(contact.getCompany())) { text.showTextAligned(Element.ALIGN_LEFT, contact.getCompany(), 355, 643, 0); text.showTextAligned(Element.ALIGN_LEFT, new SimpleDateFormat("MM-dd-yyyy").format(new Date()), 355, 624, 0); } else { text.showTextAligned(Element.ALIGN_LEFT, new SimpleDateFormat("MM-dd-yyyy").format(new Date()), 355, 643, 0); } text.endText(); final ColumnText ct = new ColumnText(tocContent); ct.setSimpleColumn(new Rectangle(55, 517, iTextUtil.PAGE_SIZE.getWidth() - 45, 575)); final List<Element> elements = HTMLWorker.parseToList(new StringReader(disclaimer), null); final Paragraph p = new Paragraph(); p.setAlignment(Element.ALIGN_JUSTIFIED); for (Element element : elements) { for (Chunk chunk : element.getChunks()) { chunk.setFont(iTextUtil.getFontDisclaimer()); } p.add(element); } ct.addElement(p); ct.go(); stamper.close(); reader.close(); return bos.toByteArray(); } }
From source file:be.roots.taconic.pricingguide.service.PDFServiceImpl.java
License:Open Source License
private byte[] stampTableOfContents(byte[] pdf, Toc tableOfContents) throws IOException, DocumentException { try (final ByteArrayOutputStream bos = new ByteArrayOutputStream()) { final PdfReader reader = new PdfReader(pdf); final PdfStamper stamper = new PdfStamper(reader, bos); // stamp the named destinations for (int pageNumber = 1; pageNumber <= reader.getNumberOfPages(); pageNumber++) { stamper.addNamedDestination("page" + pageNumber, pageNumber, new PdfDestination(PdfDestination.XYZ, 80f, 800f, 0)); }// w w w . j a v a 2 s . c o m // create the table of contents final Chunk tocTitle = new Chunk("TABLE OF CONTENTS", iTextUtil.getFontTocTitle()); int currentTocPage = tableOfContents.getFirstPageOfToc(); int firstTocPage = currentTocPage; PdfContentByte canvas = stamper.getOverContent(currentTocPage); ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(tocTitle), 55, 470, 0); final List<TocEntry> entriesSorted = tableOfContents.getEntriesSorted(); int tocEntryNumber = 0; for (TocEntry tocEntry : entriesSorted) { if (tocEntry.isIncludedInToc()) { tocEntryNumber++; // take the right TOC page to stamp the TOC entry on (needed for TOC's with multiple pages) if (tocEntryNumber == getNumberOfItemsPerTocPage(0) || (tocEntryNumber > getNumberOfItemsPerTocPage(0) && (tocEntryNumber - getNumberOfItemsPerTocPage(0)) % getNumberOfItemsPerTocPage(currentTocPage - firstTocPage) == 0)) { currentTocPage++; canvas = stamper.getOverContent(currentTocPage); } Font font = iTextUtil.getFontToc(); if (tocEntry.getLevel() == 1) { font = iTextUtil.getFontTocBold(); } final Phrase p = processHtmlCodes(tocEntry.getLevelString() + tocEntry.getName(), font, iTextUtil.getFontTocSymbol()); p.add(new Chunk("", iTextUtil.getFontToc())); if (tocEntry.isShowingPageNumber()) { p.add(new Chunk(new DottedLineSeparator())); p.add(new Chunk(" " + String.valueOf(tocEntry.getFinalPageNumber()), iTextUtil.getFontToc())); } for (Chunk chunk : p.getChunks()) { chunk.setAction(PdfAction.gotoLocalPage("page" + tocEntry.getFinalPageNumber(), false)); } int y; if (tocEntryNumber < getNumberOfItemsPerTocPage(0)) { y = 460 - (16 * (tocEntryNumber % getNumberOfItemsPerTocPage(0))); } else { y = 680 - (16 * ((tocEntryNumber - getNumberOfItemsPerTocPage(0)) % getNumberOfItemsPerTocPage(currentTocPage - firstTocPage))); } final ColumnText ct = new ColumnText(canvas); ct.setSimpleColumn(p, 52, y, 555, 70, 0, Element.ALIGN_JUSTIFIED); ct.go(); } } stamper.close(); reader.close(); return bos.toByteArray(); } }
From source file:be.roots.taconic.pricingguide.service.PDFServiceImpl.java
License:Open Source License
private byte[] enableLinkToWebsite(byte[] pdf, Toc tableOfContents) throws IOException, DocumentException { try (final ByteArrayOutputStream bos = new ByteArrayOutputStream()) { final PdfReader reader = new PdfReader(pdf); final PdfStamper stamper = new PdfStamper(reader, bos); for (int i = tableOfContents.getFirstPageOfToc(); i <= tableOfContents .getLastPageNumberOfModelPages(); i++) { final Chunk websiteChunk = new Chunk(".................."); websiteChunk.setAction(new PdfAction(websiteLink)); ColumnText ct = new ColumnText(stamper.getUnderContent(i)); ct.setSimpleColumn(335, 10, 400, 35); ct.addText(new Phrase(websiteChunk)); ct.go(); final Chunk emailChunk = new Chunk("........................................."); emailChunk.setAction(new PdfAction(emailLink)); ct = new ColumnText(stamper.getUnderContent(i)); ct.setSimpleColumn(240, 10, 330, 35); ct.addText(new Phrase(emailChunk)); ct.go();//from w ww. java 2s .c o m } stamper.close(); reader.close(); return bos.toByteArray(); } }
From source file:be.roots.taconic.pricingguide.util.iTextUtil.java
License:Open Source License
public static byte[] setPageNumbers(byte[] pdfDocument) throws IOException, DocumentException { final int numberOfPages = numberOfPages(pdfDocument); if (numberOfPages > 1) { try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) { final PdfReader reader = new PdfReader(pdfDocument); final PdfStamper stamper = new PdfStamper(reader, baos); for (int pageNumber = 2; pageNumber <= numberOfPages; pageNumber++) { // get the first page final PdfContentByte canvas = stamper.getOverContent(pageNumber); // stamp the footer on the page final ColumnText ct = new ColumnText(canvas); ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, new Phrase(pageNumber + "", getFontPageNumber()), 550, 22, 0); ct.go(); }//from w w w . j ava2 s . c o m // close out stamper.close(); reader.close(); return baos.toByteArray(); } } return pdfDocument; }
From source file:book.pdftemplates.FillTemplateHelper.java
@Override public void onEndPage(PdfWriter writer, Document document) { PdfContentByte canvas = writer.getDirectContentUnder(); // background canvas.addTemplate(background, 0, 0); try {//from w w w .j a v a2s . co m // date ColumnText ct = new ColumnText(canvas); ct.setSimpleColumn(date); ct.addText(new Chunk(today, font)); ct.go(); // footer (page X of Y) ct.setSimpleColumn(footer); ct.addText(new Chunk("page " + writer.getPageNumber(), font)); ct.addText(new Chunk(Image.getInstance(total), 0, 0)); ct.go(); // from address ct.setSimpleColumn(from); ct.addElement(new Paragraph(sender, font)); ct.go(); // to address ct.setSimpleColumn(to); ct.addElement(new Paragraph(receiver, font)); ct.go(); } catch (DocumentException e) { // can never happen, but if it does, we want to know! throw new ExceptionConverter(e); } }
From source file:co.com.realtech.mariner.util.files.PDFUtils.java
public static File agregarTexto(byte[] bytes, String text) { File temp = null;//from w w w . j ava 2 s . co m try { temp = File.createTempFile("archivo", ".pdf"); OutputStream oos = new FileOutputStream(temp); Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, oos); document.open(); PdfContentByte cb = writer.getDirectContent(); ByteArrayInputStream bis = new ByteArrayInputStream(bytes); //InputStream targetStream = new FileInputStream(initialFile); // Load existing PDF PdfReader reader = new PdfReader(bis); PdfImportedPage page = writer.getImportedPage(reader, 1); // Copy first page of existing PDF into output PDF document.setPageSize(reader.getPageSize(1)); document.newPage(); cb.addTemplate(page, 0, 0); ColumnText ct = new ColumnText(cb); Phrase myText = new Phrase(text); Font fuente = new Font(); fuente.setSize(6); myText.setFont(fuente); ct.setSimpleColumn(myText, 0, -1, document.right(), document.top(), -10, Element.ALIGN_RIGHT); ct.go(); ColumnText ct2 = new ColumnText(cb); Phrase myText2 = new Phrase(text); Font fuente2 = new Font(); fuente2.setSize(6); myText2.setFont(fuente); ct2.setSimpleColumn(myText, 0, -1, document.right(), document.top(), 248, Element.ALIGN_RIGHT); ct2.go(); ColumnText ct3 = new ColumnText(cb); Phrase myText3 = new Phrase(text); Font fuente3 = new Font(); fuente3.setSize(6); myText3.setFont(fuente); ct3.setSimpleColumn(myText, 0, -1, document.right(), document.top(), 505, Element.ALIGN_RIGHT); ct3.go(); document.close(); } catch (Exception e) { System.out.println("e = " + e); } return temp; }
From source file:com.chaschev.itext.ColumnTextBuilder.java
License:Apache License
public ColumnTextBuilder addTruncatedLine(Chunk chunk, boolean addEllipsis) { final float pixelsForEllipsis = 6; try {//w w w .j a va 2 s . c om ColumnText dup = ColumnText.duplicate(columnText); final Rectangle oneLineRectangle = new Rectangle(simpleColumnRectangle); oneLineRectangle.setTop(dup.getYLine()); final float fontHeight = calcApproximateFontHeight(chunk.getFont()) * 1.6f; oneLineRectangle.setBottom(dup.getYLine() - fontHeight); if (addEllipsis) { oneLineRectangle.setRight(oneLineRectangle.getRight() - pixelsForEllipsis); } dup.setSimpleColumn(oneLineRectangle); dup.addText(chunk); final int status = dup.go(); float yLine; if (addEllipsis && ColumnText.hasMoreText(status)) { oneLineRectangle.setLeft(dup.getLastX() + 2); oneLineRectangle.setRight(oneLineRectangle.getRight() + pixelsForEllipsis * 2); dup = ColumnText.duplicate(dup); dup.setSimpleColumn(oneLineRectangle); final Chunk ellipses = new Chunk("...\n", chunk.getFont()); dup.setText(new Phrase(ellipses)); dup.go(); yLine = dup.getYLine(); } else { yLine = dup.getYLine(); } setYLine(yLine); return this; } catch (DocumentException e) { throw Exceptions.runtime(e); } }
From source file:com.innoq.iQpdfutil.Main.java
License:Open Source License
/** * This method adds a page number to all pages (except the first one) * from the given input pdf and writes the modified pdf to * the output-stream.//from w w w . ja v a2 s . c o m * * <p> * The page number is placed in the center at the bottom of the page. * </p> * * <pre> * +-----+ * | | * | | * | | * | -2- | * +-----+ * </pre> * */ private static void numberPages(PdfReader reader, OutputStream os) throws IOException, DocumentException { PdfStamper stamper = new PdfStamper(reader, os); try { int n = reader.getNumberOfPages(); ColumnText text; PdfContentByte contents; Paragraph paragraph; Font headerFont = new Font(Font.FontFamily.COURIER, 12, Font.NORMAL); for (int i = 2; i <= n; i++) { contents = stamper.getOverContent(i); text = new ColumnText(contents); text.setSimpleColumn(1, 10, PageSize.A4.getWidth() - 1, 30, 1, Element.ALIGN_CENTER); paragraph = new Paragraph(String.format("- %d -", i), headerFont); paragraph.setAlignment(Element.ALIGN_CENTER); text.addElement(paragraph); text.go(); } } finally { try { stamper.close(); } catch (Exception e) { e.printStackTrace(); } } }