Skip to content

Commit 0f05a14

Browse files
Some bugs about acroforms were fixed.
1 parent 1ff40f2 commit 0f05a14

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

forms/src/main/java/com/itextpdf/forms/PdfAcroForm.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,14 @@ private Map<String, PdfFormField> iterateFields(PdfArray array) {
774774
PdfString fieldName = formField.getFieldName();
775775
String name;
776776
if (fieldName == null) {
777-
name = formField.getParent().getAsString(PdfName.T).toUnicodeString() + "." + index;
777+
PdfFormField parentField = PdfFormField.makeFormField(formField.getParent(), document);
778+
while (fieldName == null) {
779+
fieldName = parentField.getFieldName();
780+
if (fieldName == null) {
781+
parentField = PdfFormField.makeFormField(parentField.getParent(), document);
782+
}
783+
}
784+
name = fieldName.toUnicodeString() + "." + index;
778785
index++;
779786
} else {
780787
name = fieldName.toUnicodeString();

forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -870,10 +870,6 @@ public <T extends PdfFormField> T addKid(PdfFormField kid) {
870870
kids = new PdfArray();
871871
}
872872
kids.add(kid.getPdfObject());
873-
PdfString kidName = kid.getFieldName();
874-
if (kidName != null) {
875-
kid.setFieldName(getFieldName().toUnicodeString() + "." + kidName.toUnicodeString());
876-
}
877873

878874
return put(PdfName.Kids, kids);
879875
}
@@ -913,12 +909,20 @@ public <T extends PdfFormField> T setFieldName(String name) {
913909
* @return the current field name, as a {@link PdfString}
914910
*/
915911
public PdfString getFieldName() {
916-
PdfString fieldName = getPdfObject().getAsString(PdfName.T);
917-
// if (fieldName == null) {
918-
// PdfFormField parentField = PdfFormField.makeFormField(getParent(), getDocument());
919-
// fieldName = parentField.getFieldName();
920-
// }
921-
return fieldName;
912+
String parentName = "";
913+
PdfDictionary parent = getParent();
914+
if (parent != null) {
915+
PdfFormField parentField = PdfFormField.makeFormField(getParent(), getDocument());
916+
PdfString pName = parentField.getFieldName();
917+
if (pName != null) {
918+
parentName = pName.toUnicodeString() + ".";
919+
}
920+
}
921+
PdfString name = getPdfObject().getAsString(PdfName.T);
922+
if (name != null) {
923+
name = new PdfString(parentName + name.toUnicodeString());
924+
}
925+
return name;
922926
}
923927

924928
/**

0 commit comments

Comments
 (0)