List of usage examples for org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline PDOutlineItem setDestination
public void setDestination(PDPage page)
From source file:com.github.joemcintyre.pdffinish.PDFFinish.java
License:Open Source License
/** * Update table of contents in destination document. * //from w ww.j av a2 s.co m * @param document PDF document to update. */ private void updateTOC(PDDocument document) { PDDocumentOutline outline = new PDDocumentOutline(); document.getDocumentCatalog().setDocumentOutline(outline); PDOutlineItem topItem = new PDOutlineItem(); topItem.setTitle(title); outline.appendChild(topItem); try { PDFTextFinder finder = new PDFTextFinder(fontList); List<PDFTextFinder.PDFText> headings = finder.getTextList(document); PDOutlineItem level[] = { topItem, null, null, null }; for (PDFTextFinder.PDFText heading : headings) { PDPageXYZDestination dest = new PDPageXYZDestination(); dest.setPage(heading.page); PDOutlineItem bookmark = new PDOutlineItem(); bookmark.setDestination(dest); bookmark.setTitle(heading.text); level[heading.tag - 1].appendChild(bookmark); level[heading.tag] = bookmark; } } catch (IOException e) { System.out.println("Error :" + e); } topItem.openNode(); outline.openNode(); }
From source file:com.jt.tool.pdf.CreateBookmarks.java
License:Apache License
public static void createBookmark(String srcFile, String targetFile, String reg) throws Exception { PDDocument document = null;// w ww . ja va 2s . co m try { document = PDDocument.load(new File(srcFile)); if (document.isEncrypted()) { System.err.println("Error: Cannot add bookmarks to encrypted document."); System.exit(1); } PDDocumentOutline outline = new PDDocumentOutline(); document.getDocumentCatalog().setDocumentOutline(outline); PDOutlineItem pagesOutline = new PDOutlineItem(); pagesOutline.setTitle("All Pages"); // outline.appendChild(pagesOutline); List pages = new ArrayList(); // document.getDocumentCatalog().getAllPages(); for (int i = 12; i < pages.size(); i++) { String pageText = getPageText(document, i + 1, 0); String[] strings = matchTitle(pageText, reg); if (makeBookmark(strings)) { PDPage page = (PDPage) pages.get(i); PDPageFitWidthDestination dest = new PDPageFitWidthDestination(); dest.setPage(page); PDOutlineItem bookmark = new PDOutlineItem(); bookmark.setDestination(dest); bookmark.setTitle(strings[0]); // pagesOutline.appendChild(bookmark); System.out.println("add " + strings[0]); } } pagesOutline.openNode(); outline.openNode(); document.save(targetFile); } finally { if (document != null) { document.close(); } } }
From source file:com.quanticate.opensource.pdftkbox.PDFBookmark.java
License:Apache License
public static PDOutlineItem createOutline(String title, int pageNumber, int yOffset, String zoom, ZoomType zoomType) {// www.j a va2s . c o m PDOutlineItem bookmark = new PDOutlineItem(); bookmark.setTitle(title); PDPageDestination dest = null; if (zoom != null) { if (zoomType == ZoomType.Inherit || zoomType == ZoomType.ZoomPercent) { PDPageXYZDestination xyz = new PDPageXYZDestination(); xyz.setTop(yOffset); dest = xyz; if (zoomType == ZoomType.Inherit) { xyz.setZoom(-1); } else { String zoomNoPcnt = zoom.substring(0, zoom.length() - 1).trim(); float zoomf = Integer.parseInt(zoomNoPcnt) / 100.0f; xyz.setZoom(zoomf); } } else if (zoomType == ZoomType.FitPage) { dest = new PDPageFitDestination(); } else if (zoomType == ZoomType.FitHeight) { dest = new PDPageFitHeightDestination(); } // Otherwise fall through to the default, FitWidth } if (dest == null) { PDPageFitWidthDestination wdest = new PDPageFitWidthDestination(); wdest.setTop(yOffset); dest = wdest; } dest.setPageNumber(pageNumber - 1); bookmark.setDestination(dest); return bookmark; }
From source file:de.berber.kindle.annotator.lib.Bookmark.java
License:Apache License
@Override protected PDAnnotation toPDAnnotation(final @Nonnull PDDocumentOutline documentOutline, final @Nonnull PDPage page) { LOG.info("Creating bookmark"); final String OUTLINE_ENTRY_NAME = "Bookmarks"; // search for an outline entry called Bookmarks PDOutlineItem bookmarks = documentOutline.getFirstChild(); while (bookmarks != null) { if (OUTLINE_ENTRY_NAME.equals(bookmarks.getTitle())) { break; }/* www . j av a 2 s. c o m*/ bookmarks = bookmarks.getNextSibling(); } // if we did not found an entry we have to add a new one if (bookmarks == null) { bookmarks = new PDOutlineItem(); bookmarks.setTitle(OUTLINE_ENTRY_NAME); documentOutline.appendChild(bookmarks); } // crate the bookmark entry final PDOutlineItem bookmark = new PDOutlineItem(); bookmark.setTitle("Bookmark on page " + getPage()); bookmark.setDestination(page); bookmarks.appendChild(bookmark); return null; }
From source file:org.pdfgal.pdfgal.pdfgal.impl.PDFGalImpl.java
License:Open Source License
@Override public void addBookmarks(final String inputUri, final String outputUri, final String title, final List<PDFGalBookmark> pdfGalBookmarksList) throws IOException, COSVisitorException { if (StringUtils.isNotBlank(inputUri) && StringUtils.isNotBlank(outputUri) && StringUtils.isNotEmpty(title) && CollectionUtils.isNotEmpty(pdfGalBookmarksList)) { final PDDocument doc = PDDocument.load(inputUri); final PDDocumentOutline outline = new PDDocumentOutline(); doc.getDocumentCatalog().setDocumentOutline(outline); final PDOutlineItem pagesOutline = new PDOutlineItem(); pagesOutline.setTitle(title);/*from w ww.j a va2 s . c om*/ @SuppressWarnings("unchecked") final List<PDPage> pages = doc.getDocumentCatalog().getAllPages(); outline.appendChild(pagesOutline); for (final PDFGalBookmark pdfGalBookmark : pdfGalBookmarksList) { if (pdfGalBookmark != null && pdfGalBookmark.isInitializated()) { final PDPage page = pages.get(pdfGalBookmark.getPage() - 1); final PDPageFitWidthDestination dest = new PDPageFitWidthDestination(); dest.setPage(page); final PDOutlineItem bookmark = new PDOutlineItem(); bookmark.setDestination(dest); bookmark.setTitle(pdfGalBookmark.getText()); pagesOutline.appendChild(bookmark); } } pagesOutline.openNode(); outline.openNode(); doc.save(outputUri); doc.close(); } else { throw new IllegalArgumentException(Constants.ILLEGAL_ARGUMENT_EXCEPTION_MESSAGE); } }
From source file:org.pdfmetamodifier.OutlineHelper.java
License:Apache License
private static PDOutlineItem createOutlineItem(final String title, final int pageNumber, final PDPageTree pages) { final PDOutlineItem outlineItem = createOutlineItem(title); final PDPageXYZDestination destination = new PDPageXYZDestination(); destination.setPage(pages.get(pageNumber - 1)); outlineItem.setDestination(destination); return outlineItem; }
From source file:org.pdfsam.pdfbox.component.OutlineMerger.java
License:Open Source License
private void copyDestination(Optional<PDPageDestination> destination, PDOutlineItem to) { destination.ifPresent(d -> {/* w w w. j a v a 2 s . com*/ to.setDestination(d); }); }
From source file:org.pdfsam.pdfbox.component.PDFBoxOutlineUtilsTest.java
License:Open Source License
@Test public void toPageDestinationDestination() { PDPageFitDestination destination = new PDPageFitDestination(); destination.setPageNumber(5);/* w w w . j a v a 2s.c o m*/ PDOutlineItem victim = new PDOutlineItem(); victim.setDestination(destination); assertEquals(5, PDFBoxOutlineUtils.toPageDestination(victim, new PDDestinationNameTreeNode()).get() .getPageNumber()); }
From source file:org.pdfsam.pdfbox.component.PDFBoxOutlineUtilsTest.java
License:Open Source License
@Test public void toPageDestinationNamedDestinationNullNames() { PDNamedDestination destination = new PDNamedDestination(); PDOutlineItem victim = new PDOutlineItem(); victim.setDestination(destination); assertFalse(PDFBoxOutlineUtils.toPageDestination(victim, null).isPresent()); }
From source file:org.pdfsam.pdfbox.component.PDFBoxOutlineUtilsTest.java
License:Open Source License
@Test public void toPageDestinationNamedDestination() throws IOException { PDPageFitDestination dest = new PDPageFitDestination(); dest.setPageNumber(5);/* w ww . ja v a2 s . c o m*/ PDNamedDestination destination = new PDNamedDestination(); destination.setNamedDestination("ChuckNorris"); PDOutlineItem victim = new PDOutlineItem(); victim.setDestination(destination); PDDestinationNameTreeNode names = mock(PDDestinationNameTreeNode.class); when(names.getValue("ChuckNorris")).thenReturn(dest); assertEquals(5, PDFBoxOutlineUtils.toPageDestination(victim, names).get().getPageNumber()); }