List of usage examples for com.itextpdf.text.pdf PdfReader getNumberOfPages
public int getNumberOfPages()
From source file:app.App.java
private void clonePDF() throws DocumentException, FileNotFoundException, IOException, ClassNotFoundException { PdfReader reader = new PdfReader(INPUT); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(OUTPUT)); stamper.setRotateContents(false);/* w ww .j av a 2s . c om*/ int n = reader.getNumberOfPages(); for (int i = 0; i < n; i++) { setLink(i, stamper); } stamper.close(); reader.close(); }
From source file:at.laborg.briss.ClusterManager.java
License:Open Source License
public static void clusterPages(ClusterJob clusterJob) throws IOException { PdfReader reader = new PdfReader(clusterJob.getSource().getAbsolutePath()); ClusterCollection clusters = clusterJob.getClusterCollection(); for (int page = 1; page <= reader.getNumberOfPages(); page++) { Rectangle layoutBox = reader.getBoxSize(page, "crop"); if (layoutBox == null) { layoutBox = reader.getBoxSize(page, "media"); }//ww w. j a v a 2s . c om // create Cluster // if the pagenumber should be excluded then use it as a // discriminating parameter, else use default value int pageNumber = -1; if (clusterJob.getExcludedPageSet() != null && clusterJob.getExcludedPageSet().contains(page)) { pageNumber = page; } SingleCluster tmpCluster = new SingleCluster(page % 2 == 0, (int) layoutBox.getWidth(), (int) layoutBox.getHeight(), pageNumber); clusters.addPageToCluster(tmpCluster, page); } // for every cluster create a set of pages on which the preview will // be based for (SingleCluster cluster : clusters.getClusterToPagesMapping().keySet()) { cluster.choosePagesToMerge(clusters.getClusterToPagesMapping().get(cluster)); } reader.close(); }
From source file:at.laborg.briss.CropManager.java
License:Open Source License
public static CropJob createCropJob(ClusterJob curClusterJob) throws IOException { File source = curClusterJob.getSource(); if (source != null && source.exists()) { PdfReader reader = new PdfReader(source.getAbsolutePath()); CropJob result = new CropJob(source, reader.getNumberOfPages(), reader.getInfo(), SimpleBookmark.getBookmark(reader)); reader.close();/*from ww w. j a v a2s .c o m*/ result.setClusterCollection(curClusterJob.getClusterCollection()); return result; } return null; }
From source file:at.laborg.briss.CropManager.java
License:Open Source License
public static CropJob createCropJob(File source) throws IOException { CropJob result = null;// www .ja v a2 s . co m if (source != null && source.exists()) { PdfReader reader = new PdfReader(source.getAbsolutePath()); result = new CropJob(source, reader.getNumberOfPages(), reader.getInfo(), SimpleBookmark.getBookmark(reader)); reader.close(); return result; } return result; }
From source file:at.laborg.briss.utils.ClusterCreator.java
License:Open Source License
public static ClusterDefinition clusterPages(final File source, final PageExcludes pageExcludes) throws IOException { PdfReader reader = new PdfReader(source.getAbsolutePath()); ClusterDefinition clusters = new ClusterDefinition(); for (int page = 1; page <= reader.getNumberOfPages(); page++) { Rectangle layoutBox = getLayoutBox(reader, page); // create Cluster // if the pagenumber should be excluded then use it as a // discriminating parameter, else use default value boolean excluded = checkExclusionAndGetPageNumber(pageExcludes, page); PageCluster tmpCluster = new PageCluster(page % 2 == 0, (int) layoutBox.getWidth(), (int) layoutBox.getHeight(), excluded, page); clusters.addOrMergeCluster(tmpCluster); }//from www . j ava 2 s . co m reader.close(); clusters.selectAndSetPagesForMerging(); return clusters; }
From source file:be.redtree.beidsign.service.ScriptBeidSignService.java
License:Open Source License
/** * Gets the page count for a PDF document * //w ww . java2 s . c om * @param nodeRef * @return */ public int getPageCount(String nodeRef) { try { ContentReader reader = serviceRegistry.getContentService().getReader(new NodeRef(nodeRef), ContentModel.PROP_CONTENT); PdfReader pdfReader = new PdfReader(reader.getContentInputStream()); int count = pdfReader.getNumberOfPages(); pdfReader.close(); return count; } catch (IOException ioex) { return -1; } }
From source file:be.rheynaerde.pufmanager.gui.workers.ExportFullPdfWorker.java
License:Open Source License
private void addPdfToDocument(ByteArrayOutputStream baos, PdfCopy copy, String stampText) throws IOException, BadPdfFormatException { PdfReader reader = new PdfReader(new ByteArrayInputStream(baos.toByteArray())); int n = reader.getNumberOfPages(); for (int page = 1; page <= n; page++) { PdfImportedPage importedPage = copy.getImportedPage(reader, page); PdfCopy.PageStamp stamp = copy.createPageStamp(importedPage); Rectangle rectangle = importedPage.getBoundingBox(); ColumnText.showTextAligned(stamp.getUnderContent(), Element.ALIGN_RIGHT, new Phrase(stampText), rectangle.getRight() - 20f, rectangle.getTop() - 20f, 0); stamp.alterContents();/* ww w .j a v a 2 s.c o m*/ copy.addPage(importedPage); } }
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)); }/*from w w w .ja va2s .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.util.iTextUtil.java
License:Open Source License
public static byte[] merge(byte[]... pdfAsBytes) throws DocumentException, IOException { try (final ByteArrayOutputStream copyBaos = new ByteArrayOutputStream()) { final Document doc = new Document(); final PdfCopy copy = new PdfSmartCopy(doc, copyBaos); doc.open();/* w w w.j a v a 2 s . co m*/ int numberOfPages = 0; final java.util.List<HashMap<String, Object>> bookmarks = new ArrayList<>(); PdfReader pdf = null; for (byte[] pdfAsByte : pdfAsBytes) { if (pdfAsByte != null && pdfAsByte.length > 0) { pdf = new PdfReader(pdfAsByte); pdf.consolidateNamedDestinations(); final List<HashMap<String, Object>> pdfBookmarks = SimpleBookmark.getBookmark(pdf); if (!CollectionUtils.isEmpty(pdfBookmarks)) { SimpleBookmark.shiftPageNumbers(pdfBookmarks, numberOfPages, null); bookmarks.addAll(pdfBookmarks); } for (int i = 1; i <= pdf.getNumberOfPages(); i++) { copy.addPage(copy.getImportedPage(pdf, i)); } numberOfPages += pdf.getNumberOfPages(); } } if (pdf != null) { SimpleNamedDestination.getNamedDestination(pdf, false); } if (!CollectionUtils.isEmpty(bookmarks)) { copy.setOutlines(bookmarks); } copy.close(); return copyBaos.toByteArray(); } }
From source file:be.roots.taconic.pricingguide.util.iTextUtil.java
License:Open Source License
public static byte[] organize(byte[] pdf, Toc tableOfContents) throws IOException, DocumentException { try (final ByteArrayOutputStream copyBaos = new ByteArrayOutputStream()) { final Document doc = new Document(); final PdfCopy copy = new PdfSmartCopy(doc, copyBaos); final PdfReader reader = new PdfReader(pdf); reader.selectPages(tableOfContents.getPageSequence()); doc.open();//w w w . j ava 2 s. c o m for (int i = 1; i <= reader.getNumberOfPages(); i++) { copy.addPage(copy.getImportedPage(reader, i)); } reader.close(); copy.close(); return copyBaos.toByteArray(); } }