Search in sources :

Example 21 with PDAnnotation

use of com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotation in project PdfBox-Android by TomRoush.

the class COSArrayListTest method removeFromFilteredListByObject.

@Test
public void removeFromFilteredListByObject() throws Exception {
    // retrieve all annotations from page but the link annotation
    // which is 2nd in list - see above setup
    AnnotationFilter annotsFilter = new AnnotationFilter() {

        @Override
        public boolean accept(PDAnnotation annotation) {
            return !(annotation instanceof PDAnnotationLink);
        }
    };
    COSArrayList<PDAnnotation> cosArrayList = (COSArrayList<PDAnnotation>) pdPage.getAnnotations(annotsFilter);
    COSArray underlyingCOSArray = pdPage.getCOSObject().getCOSArray(COSName.ANNOTS);
    assertTrue("Filtered COSArrayList size shall be 2", cosArrayList.size() == 2);
    assertTrue("Underlying COSArray shall have 3 entries", underlyingCOSArray.size() == 3);
    assertTrue("Backed COSArray shall have 3 entries", cosArrayList.toList().size() == 3);
    // remove aCircle annotation
    int positionToRemove = 1;
    PDAnnotation toBeRemoved = cosArrayList.get(positionToRemove);
    assertTrue("We should remove the circle annotation", toBeRemoved.getSubtype().equals(PDAnnotationSquareCircle.SUB_TYPE_CIRCLE));
    cosArrayList.remove(toBeRemoved);
    assertTrue("List size shall be 2", cosArrayList.size() == 1);
    assertTrue("COSArray size shall be 2", underlyingCOSArray.size() == 2);
    assertTrue("Backed COSArray size shall be 2", cosArrayList.toList().size() == 2);
    assertTrue("Removed annotation shall no longer appear in COSArrayList", cosArrayList.indexOf(toBeRemoved) == -1);
    assertTrue("Removed annotation shall no longer appear in underlying COSArray", underlyingCOSArray.indexOf(toBeRemoved.getCOSObject()) == -1);
    assertTrue("Removed annotation shall no longer appear in backed COSArray", cosArrayList.toList().indexOf(toBeRemoved.getCOSObject()) == -1);
}
Also used : COSArray(com.tom_roush.pdfbox.cos.COSArray) PDAnnotation(com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotation) PDAnnotationLink(com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink) AnnotationFilter(com.tom_roush.pdfbox.pdmodel.interactive.annotation.AnnotationFilter) Test(org.junit.Test)

Aggregations

PDAnnotation (com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotation)21 Test (org.junit.Test)9 COSArray (com.tom_roush.pdfbox.cos.COSArray)6 PDPage (com.tom_roush.pdfbox.pdmodel.PDPage)5 PDAnnotationLink (com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink)5 COSDictionary (com.tom_roush.pdfbox.cos.COSDictionary)4 AnnotationFilter (com.tom_roush.pdfbox.pdmodel.interactive.annotation.AnnotationFilter)4 COSBase (com.tom_roush.pdfbox.cos.COSBase)3 COSArrayList (com.tom_roush.pdfbox.pdmodel.common.COSArrayList)3 PDAnnotationSquareCircle (com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquareCircle)3 PDAnnotationWidget (com.tom_roush.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget)3 ArrayList (java.util.ArrayList)3 COSName (com.tom_roush.pdfbox.cos.COSName)2 COSStream (com.tom_roush.pdfbox.cos.COSStream)2 PDDocumentCatalog (com.tom_roush.pdfbox.pdmodel.PDDocumentCatalog)2 PDDocumentNameDestinationDictionary (com.tom_roush.pdfbox.pdmodel.PDDocumentNameDestinationDictionary)2 COSObjectable (com.tom_roush.pdfbox.pdmodel.common.COSObjectable)2 PDNumberTreeNode (com.tom_roush.pdfbox.pdmodel.common.PDNumberTreeNode)2 PDActionGoTo (com.tom_roush.pdfbox.pdmodel.interactive.action.PDActionGoTo)2 PDDestination (com.tom_roush.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination)2