private void processNonLinkAnnotation(LookupTable<PDPage> relevantPages, Set<PDAnnotation> keptAnnotations, PDAnnotation annotation) { PDPage p = annotation.getPage(); if (isNull(p) || relevantPages.hasLookupFor(p)) { PDAnnotation duplicate = duplicate(annotation, relevantPages); if (duplicate instanceof PDAnnotationMarkup) { PDAnnotationPopup popup = ((PDAnnotationMarkup) duplicate).getPopup(); if (nonNull(popup)) { COSName subtype = popup.getCOSObject().getCOSName(COSName.SUBTYPE); if (COSName.POPUP.equals(subtype)) { PDAnnotationPopup popupDuplicate = ofNullable( (PDAnnotationPopup) annotationsLookup.lookup(popup)) .orElseGet(() -> (PDAnnotationPopup) duplicate(popup, relevantPages)); ((PDAnnotationMarkup) duplicate).setPopup(popupDuplicate); if (nonNull(popupDuplicate.getParent())) { popupDuplicate.setParent((PDAnnotationMarkup) duplicate); LOG.trace("Popup parent annotation updated"); } keptAnnotations.add(popupDuplicate); } else { ((PDAnnotationMarkup) duplicate).setPopup(null); LOG.warn("Removed Popup annotation of unexpected subtype {}", subtype); } } } keptAnnotations.add(duplicate); } }
private void processNonLinkAnnotation(LookupTable<PDPage> relevantPages, Set<PDAnnotation> keptAnnotations, PDAnnotation annotation) { PDPage p = annotation.getPage(); if (isNull(p) || relevantPages.hasLookupFor(p)) { PDAnnotation duplicate = duplicate(annotation, relevantPages); if (duplicate instanceof PDAnnotationMarkup) { PDAnnotationPopup popup = ((PDAnnotationMarkup) duplicate).getPopup(); if (nonNull(popup)) { COSName subtype = popup.getCOSObject().getCOSName(COSName.SUBTYPE); if (COSName.POPUP.equals(subtype)) { PDAnnotationPopup popupDuplicate = ofNullable( (PDAnnotationPopup) annotationsLookup.lookup(popup)) .orElseGet(() -> (PDAnnotationPopup) duplicate(popup, relevantPages)); ((PDAnnotationMarkup) duplicate).setPopup(popupDuplicate); if (nonNull(popupDuplicate.getParent())) { popupDuplicate.setParent((PDAnnotationMarkup) duplicate); LOG.trace("Popup parent annotation updated"); } keptAnnotations.add(popupDuplicate); } else { ((PDAnnotationMarkup) duplicate).setPopup(null); LOG.warn("Removed Popup annotation of unexpected subtype {}", subtype); } } } keptAnnotations.add(duplicate); } }