/** * Check if the field already exists in the field list. * * @param fieldIterator iterator on all fields. * @param signatureField the signature field. * @return true if the field already existed in the field list, false if not. */ private boolean checkSignatureField(Iterator<PDField> fieldIterator, PDSignatureField signatureField) { while (fieldIterator.hasNext()) { PDField field = fieldIterator.next(); if (field instanceof PDSignatureField && field.getCOSObject().equals(signatureField.getCOSObject())) { return true; } } return false; }
private void removeFields(List<PDField> fields) { for (PDField field : fields) { if (field.getParent() == null) { COSArray cosFields = (COSArray) dictionary.getDictionaryObject(COSName.FIELDS); for (int i=0; i<cosFields.size(); i++) { COSDictionary element = (COSDictionary) cosFields.getObject(i); if (field.getCOSObject().equals(element)) { cosFields.remove(i); } } } else { COSArray kids = (COSArray) field.getParent().getCOSObject().getDictionaryObject(COSName.KIDS); for (int i=0; i<kids.size(); i++) { COSDictionary element = (COSDictionary) kids.getObject(i); if (field.getCOSObject().equals(element)) { kids.remove(i); } } } } } }
COSDictionary dstField = (COSDictionary) cloner.cloneForNewDocument(srcField.getCOSObject());
/** * Check if the field already exists in the field list. * * @param fieldIterator iterator on all fields. * @param signatureField the signature field. * @return true if the field already existed in the field list, false if not. */ private boolean checkSignatureField(Iterator<PDField> fieldIterator, PDSignatureField signatureField) { while (fieldIterator.hasNext()) { PDField field = fieldIterator.next(); if (field instanceof PDSignatureField && field.getCOSObject().equals(signatureField.getCOSObject())) { return true; } } return false; }
/** * Check if the field already exists in the field list. * * @param fieldIterator iterator on all fields. * @param signatureField the signature field. * @return true if the field already existed in the field list, false if not. */ private boolean checkSignatureField(Iterator<PDField> fieldIterator, PDSignatureField signatureField) { while (fieldIterator.hasNext()) { PDField field = fieldIterator.next(); if (field instanceof PDSignatureField && field.getCOSObject().equals(signatureField.getCOSObject())) { return true; } } return false; }
/** * This method will create the non terminal fields. * It is called recursively to create all non-terminal field descendants. * It should be called after all the PDField objects are created. */ private void createNonTerminalFields(Field f, PDAcroForm form) { if (!f.isTerminal) { COSArray kids = new COSArray(); for (Field f2 : allFieldMap.values()) { if (f2.qualifiedName.indexOf(f.qualifiedName) == 0 && // Its a descendant or identical. f2.qualifiedName.length() > f.qualifiedName.length() + 1 && // Its not identical. !f2.qualifiedName.substring(f.qualifiedName.length() + 1).contains(".")) { // Its a direct child. kids.add(f2.field.getCOSObject()); f2.field.getCOSObject().setItem(COSName.PARENT, f.field.getCOSObject()); createNonTerminalFields(f2, form); } } f.field.getCOSObject().setItem(COSName.KIDS, kids); } }
/** * This method will create the non terminal fields. * It is called recursively to create all non-terminal field descendants. * It should be called after all the PDField objects are created. */ private void createNonTerminalFields(Field f, PDAcroForm form) { if (!f.isTerminal) { COSArray kids = new COSArray(); for (Field f2 : allFieldMap.values()) { if (f2.qualifiedName.indexOf(f.qualifiedName) == 0 && // Its a descendant or identical. f2.qualifiedName.length() > f.qualifiedName.length() + 1 && // Its not identical. !f2.qualifiedName.substring(f.qualifiedName.length() + 1).contains(".")) { // Its a direct child. kids.add(f2.field.getCOSObject()); f2.field.getCOSObject().setItem(COSName.PARENT, f.field.getCOSObject()); createNonTerminalFields(f2, form); } } f.field.getCOSObject().setItem(COSName.KIDS, kids); } }
private void removeFields(List<PDField> fields) { for (PDField field : fields) { if (field.getParent() == null) { COSArray cosFields = (COSArray) dictionary.getDictionaryObject(COSName.FIELDS); for (int i=0; i<cosFields.size(); i++) { COSDictionary element = (COSDictionary) cosFields.getObject(i); if (field.getCOSObject().equals(element)) { cosFields.remove(i); } } } else { COSArray kids = (COSArray) field.getParent().getCOSObject().getDictionaryObject(COSName.KIDS); for (int i=0; i<kids.size(); i++) { COSDictionary element = (COSDictionary) kids.getObject(i); if (field.getCOSObject().equals(element)) { kids.remove(i); } } } } } }
for (PDField srcField : srcAcroForm.getFieldTree()) COSDictionary dstField = (COSDictionary) cloner.cloneForNewDocument(srcField.getCOSObject());
COSDictionary dstField = (COSDictionary) cloner.cloneForNewDocument(srcField.getCOSObject());