Jesse created PDFBOX-4751:
-----------------------------

             Summary: Removing field / annotation does not work
                 Key: PDFBOX-4751
                 URL: https://issues.apache.org/jira/browse/PDFBOX-4751
             Project: PDFBox
          Issue Type: Bug
          Components: AcroForm
    Affects Versions: 2.0.18
         Environment: macOS Mojave 10.14.6
            Reporter: Jesse


After upgrading to `2.0.18`, the following code doesn't work for me anymore:
{code:java}
private void removeField() throws IOException {
    PDAcroForm form = this.field.getAcroForm();
    List<PDField> allFields = form.getFields();

    PDAnnotationWidget widget = field.getWidgets().get(0);
    List<PDAnnotation> allAnnotations = widget.getPage().getAnnotations();

    System.out.println("BEFORE: Fields size: " + allFields.size() + "; Field to 
array: " + COSArrayList.converterToCOSArray(allFields));
    for(PDField field : allFields) {
        if 
(field.getFullyQualifiedName().equals(this.field.getFullyQualifiedName())) {
            allFields.remove(field);
            break;
        }
    }
    System.out.println("AFTER: Fields size: " + allFields.size() + "; Field to 
array: " + COSArrayList.converterToCOSArray(allFields));

    System.out.println("BEFORE: Annots size: " + allAnnotations.size() + "; 
Annots to array: " + COSArrayList.converterToCOSArray(allAnnotations));
    for(PDAnnotation annotation : allAnnotations) {
        if(annotation.getCOSObject().equals(widget.getCOSObject())) {
            allAnnotations.remove(annotation);
            break;
        }
    }
    System.out.println("AFTER: Annots size: " + allAnnotations.size() + "; 
Annots to array: " + COSArrayList.converterToCOSArray(allAnnotations));
}
{code}
For whatever reason, the array in `COSArrayList` is not updating. The internal 
`ArrayList` is updating, but not the internal `COSArray`. Here is some output 
from above that might helpful after trying to remove a field from a pdf with a 
single field.
{code:java}
// 2.0.17
BEFORE: Fields size: 1; Field to array: COSArray{[COSObject{10, 0}]}
AFTER: Fields size: 0; Field to array: COSArray{[]}
BEFORE: Annots size: 1; Annots to array: COSArray{[COSObject{10, 0}]}
AFTER: Annots size: 0; Annots to array: COSArray{[]}

// 2.0.18
BEFORE: Fields size: 1; Field to array: COSArray{[COSObject{10, 0}]}
AFTER: Fields size: 0; Field to array: COSArray{[COSObject{10, 0}]}
BEFORE: Annots size: 1; Annots to array: COSArray{[COSObject{10, 0}]}
AFTER: Annots size: 0; Annots to array: COSArray{[COSObject{10, 0}]}

{code}
I can definitely attach one of the PDFs I was working with if needed... But 
this was happening with every PDF I tried it on, so I don't think it's 
something special about the pdfs I was working with.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to