List of usage examples for com.lowagie.text.pdf SimpleBookmark shiftPageNumbers
public static void shiftPageNumbers(List list, int pageShift, int pageRange[])
pageShift
to the page number. From source file:org.pdfsam.console.business.pdf.bookmarks.BookmarksProcessor.java
License:Open Source License
/** * Process the bookmarks returning a view of the whole list that contains only pages comprehended among the two limits (included) with page number shifted if necessary. * /*from w w w .j a v a 2 s .c o m*/ * @param startPage * start page number * @param endPage * end page number * @param pageOffset * if not 0 pages are shifted of the given amount * @return */ public List processBookmarks(int startPage, int endPage, int pageOffset) { List books = null; if (bookmarks != null) { books = getCopyBookmarks(bookmarks); if (endPage < numberOfPages) { SimpleBookmark.eliminatePages(books, new int[] { endPage + 1, numberOfPages }); } if (startPage > 1) { SimpleBookmark.eliminatePages(books, new int[] { 1, startPage - 1 }); SimpleBookmark.shiftPageNumbers(books, -(startPage - 1), null); } if (pageOffset != 0) { SimpleBookmark.shiftPageNumbers(books, pageOffset, null); } } return books; }
From source file:org.sejda.impl.itext.component.ITextOutlineSubsetProvider.java
License:Apache License
public List<Map<String, Object>> getOutlineWithOffset(int offset) { List<Map<String, Object>> books = getDeepCopyBookmarks(bookmarks); if (offset != 0) { SimpleBookmark.shiftPageNumbers(books, offset, null); }/*from w w w. ja va2 s .c o m*/ return books; }
From source file:org.sejda.impl.itext.component.ITextOutlineSubsetProvider.java
License:Apache License
public List<Map<String, Object>> getOutlineUntillPageWithOffset(int endPage, int offset) throws TaskException { if (startPage < 0 || startPage > endPage) { throw new TaskException( "Unable to process document bookmarks: start page is negative or higher then end page."); }// w w w . ja v a2 s . c o m if (bookmarks.isEmpty()) { return Collections.emptyList(); } List<Map<String, Object>> books = getDeepCopyBookmarks(bookmarks); if (endPage < totalNumberOfPages) { SimpleBookmark.eliminatePages(books, new int[] { endPage + 1, totalNumberOfPages }); } if (startPage > 1) { SimpleBookmark.eliminatePages(books, new int[] { 1, startPage - 1 }); SimpleBookmark.shiftPageNumbers(books, -(startPage - 1), null); } if (offset != 0) { SimpleBookmark.shiftPageNumbers(books, offset, null); } return books; }
From source file:org.silverpeas.core.importexport.control.ImportExport.java
License:Open Source License
/** * @param userDetail/*from www .j a va 2s . c o m*/ * @param itemsToExport * @return * @throws ImportExportException */ public ExportPDFReport processExportPDF(UserDetail userDetail, List<WAAttributeValuePair> itemsToExport, NodePK rootPK) throws ImportExportException { ExportPDFReport report = new ExportPDFReport(); report.setDateDebut(new Date()); PublicationsTypeManager pubTypeManager = getPublicationsTypeManager(); String fileExportName = generateExportDirName(userDetail, "fusion"); String tempDir = FileRepositoryManager.getTemporaryPath(); File fileExportDir = new File(tempDir + fileExportName); if (!fileExportDir.exists()) { try { FileFolderManager.createFolder(fileExportDir); } catch (org.silverpeas.core.util.UtilException ex) { throw new ImportExportException("ImportExport", "importExport.EX_CANT_CREATE_FOLDER", ex); } } File pdfFileName = new File(tempDir + fileExportName + ".pdf"); try { // cration des rpertoires avec le nom des thmes et des publications List<AttachmentDetail> pdfList = pubTypeManager.processPDFExport(report, userDetail, itemsToExport, fileExportDir.getPath(), true, rootPK); try { int pageOffset = 0; List master = new ArrayList(); Document document = null; PdfCopy writer = null; if (!pdfList.isEmpty()) { boolean firstPage = true; for (AttachmentDetail attDetail : pdfList) { PdfReader reader = null; try { reader = new PdfReader( fileExportDir.getPath() + File.separatorChar + attDetail.getLogicalName()); } catch (IOException ioe) { // Attached file is not physically present on disk, ignore it and log event SilverLogger.getLogger(this).error("Cannot find PDF {0}", new String[] { attDetail.getLogicalName() }, ioe); } if (reader != null) { reader.consolidateNamedDestinations(); int nbPages = reader.getNumberOfPages(); List bookmarks = SimpleBookmark.getBookmark(reader); if (bookmarks != null) { if (pageOffset != 0) { SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); } master.addAll(bookmarks); } pageOffset += nbPages; if (firstPage) { document = new Document(reader.getPageSizeWithRotation(1)); writer = new PdfCopy(document, new FileOutputStream(pdfFileName)); document.open(); firstPage = false; } for (int i = 1; i <= nbPages; i++) { try { PdfImportedPage page = writer.getImportedPage(reader, i); writer.addPage(page); } catch (Exception e) { // Can't import PDF file, ignore it and log event SilverLogger.getLogger(this).error("Cannot merge PDF {0}", new String[] { attDetail.getLogicalName() }, e); } } PRAcroForm form = reader.getAcroForm(); if (form != null) { writer.copyAcroForm(reader); } } } if (!master.isEmpty()) { writer.setOutlines(master); } writer.flush(); document.close(); } else { return null; } } catch (DocumentException e) { // Impossible de copier le document throw new ImportExportException("ImportExport", "root.EX_CANT_WRITE_FILE", e); } } catch (IOException e) { // Pb avec le rpertoire de destination throw new ImportExportException("ImportExport", "root.EX_CANT_WRITE_FILE", e); } report.setPdfFileName(pdfFileName.getName()); report.setPdfFileSize(pdfFileName.length()); report.setPdfFilePath(FileServerUtils.getUrlToTempDir(pdfFileName.getName())); report.setDateFin(new Date()); return report; }
From source file:org.squale.welcom.outils.pdf.advanced.WPdfMerge.java
License:Open Source License
/** * merge/* w w w . j a va 2 s. com*/ * * @return byte array rempli */ private byte[] merge() { final ByteArrayOutputStream tmpout = new ByteArrayOutputStream(); int pageOffset = 0; int f = 0; Document document = null; final ArrayList master = new ArrayList(); PdfCopy writer = null; final Iterator it = readers.iterator(); while (it.hasNext()) { PdfReader reader = (PdfReader) it.next(); try { // Renome tout les champs; reader = new PdfReader(renameFieldUnique(reader)); reader.consolidateNamedDestinations(); // we retrieve the total number of pages final int n = reader.getNumberOfPages(); final 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 Document(reader.getPageSizeWithRotation(1)); // step 2: we create a writer that listens to the document writer = new PdfCopy(document, tmpout); // 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); } final PRAcroForm form = reader.getAcroForm(); if (form != null) { writer.copyAcroForm(reader); } f++; if (master.size() > 0) { writer.setOutlines(master); } // step 5: we close the document // document.close(); } catch (final Exception e) { e.printStackTrace(); } } if (document != null) { document.close(); } return tmpout.toByteArray(); }
From source file:oscar.util.ConcatPDF.java
License:Open Source License
/** * This class can be used to concatenate existing PDF files. * (This was an example known as PdfCopy.java) * @param args the command line arguments *///from w ww . j a v a2 s . c o m public static void concat(List<Object> alist, OutputStream out) { try { int pageOffset = 0; ArrayList master = new ArrayList(); int f = 0; Document document = null; PdfCopy writer = null; boolean fileAsStream = false; PdfReader reader = null; String name = ""; MiscUtils.getLogger().debug("Size of list = " + alist.size()); while (f < alist.size()) { // we create a reader for a certain document Object o = alist.get(f); if (o instanceof InputStream) { name = ""; fileAsStream = true; } else { name = (String) alist.get(f); fileAsStream = false; } if (fileAsStream) { reader = new PdfReader((InputStream) alist.get(f)); } else { reader = new PdfReader(name); } 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; MiscUtils.getLogger().debug("There are " + n + " pages in " + name); if (f == 0) { // step 1: creation of a document-object document = new Document(reader.getPageSizeWithRotation(1)); // step 2: we create a writer that listens to the document writer = new PdfCopy(document, out); // 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); MiscUtils.getLogger().debug("Processed page " + i); } PRAcroForm form = reader.getAcroForm(); if (form != null) writer.copyAcroForm(reader); f++; } if (master.size() > 0) writer.setOutlines(master); // step 5: we close the document document.close(); } catch (Exception e) { MiscUtils.getLogger().error("Error", e); } }