/** * @return the first item or null if the table is empty. */ public I first() { if (!isEmpty()) { return oldToNew.values().iterator().next(); } return null; }
/** * @return the first item or null if the table is empty. */ public I first() { if (!isEmpty()) { return oldToNew.values().iterator().next(); } return null; }
/** * Appends to the given outline, all the outline items whose page destination is relevant * * @param to * @param pagesLookup */ public void appendRelevantOutlineTo(PDOutlineNode to, LookupTable<PDPage> pagesLookup) { requireNonNull(to, "Unable to merge relevant outline items to a null outline."); if (!pagesLookup.isEmpty()) { ofNullable(document.getDocumentCatalog().getDocumentOutline()).ifPresent(outline -> { for (PDOutlineItem child : outline.children()) { cloneNode(child, pagesLookup).ifPresent(c -> to.addLast(c)); } LOG.debug("Appended relevant outline items"); }); } }
/** * Appends to the given outline, all the outline items whose page destination is relevant * * @param to * @param pagesLookup */ public void appendRelevantOutlineTo(PDOutlineNode to, LookupTable<PDPage> pagesLookup) { requireNonNull(to, "Unable to merge relevant outline items to a null outline."); if (!pagesLookup.isEmpty()) { ofNullable(document.getDocumentCatalog().getDocumentOutline()).ifPresent(outline -> { for (PDOutlineItem child : outline.children()) { cloneNode(child, pagesLookup).ifPresent(c -> to.addLast(c)); } LOG.debug("Appended relevant outline items"); }); } }
public void updateOutline(PDDocument document, String sourceName, LookupTable<PDPage> pagesLookup) { if (!pagesLookup.isEmpty()) { LOG.debug("Updating outline with policy {}", policy); switch (policy) { case ONE_ENTRY_EACH_DOC: updateOneEntryPerDoc(sourceName, pagesLookup); break; case RETAIN: new OutlineDistiller(document).appendRelevantOutlineTo(outline, pagesLookup); break; case RETAIN_AS_ONE_ENTRY: ofNullable(updateOneEntryPerDoc(sourceName, pagesLookup)) .ifPresent(item -> new OutlineDistiller(document).appendRelevantOutlineTo(item, pagesLookup)); break; default: LOG.debug("Discarding outline for {}", sourceName); } } else { // shouldn't happen LOG.info("Skipped outline merge, no relevant page"); } }
public void updateOutline(PDDocument document, String sourceName, LookupTable<PDPage> pagesLookup) { if (!pagesLookup.isEmpty()) { LOG.debug("Updating outline with policy {}", policy); switch (policy) { case ONE_ENTRY_EACH_DOC: updateOneEntryPerDoc(sourceName, pagesLookup); break; case RETAIN: new OutlineDistiller(document).appendRelevantOutlineTo(outline, pagesLookup); break; case RETAIN_AS_ONE_ENTRY: ofNullable(updateOneEntryPerDoc(sourceName, pagesLookup)) .ifPresent(item -> new OutlineDistiller(document).appendRelevantOutlineTo(item, pagesLookup)); break; default: LOG.debug("Discarding outline for {}", sourceName); } } else { // shouldn't happen LOG.info("Skipped outline merge, no relevant page"); } }