Skip to content

Commit f866104

Browse files
author
Benoit Lagae
committed
Merge branch 'hotfix/unicodeforms' into develop
2 parents dbab537 + 8b8819c commit f866104

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -845,10 +845,10 @@ private Map<String, PdfFormField> iterateFields(PdfArray array, Map<String, PdfF
845845
parentField = PdfFormField.makeFormField(parentField.getParent(), document);
846846
}
847847
}
848-
name = fieldName.getValue() + "." + index;
848+
name = fieldName.toUnicodeString() + "." + index;
849849
index++;
850850
} else {
851-
name = fieldName.getValue();
851+
name = fieldName.toUnicodeString();
852852
}
853853
fields.put(name, formField);
854854
if (formField.getKids() != null) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,12 +1214,12 @@ public PdfString getFieldName() {
12141214
PdfFormField parentField = PdfFormField.makeFormField(getParent(), getDocument());
12151215
PdfString pName = parentField.getFieldName();
12161216
if (pName != null) {
1217-
parentName = pName.getValue() + ".";
1217+
parentName = pName.toUnicodeString() + ".";
12181218
}
12191219
}
12201220
PdfString name = getPdfObject().getAsString(PdfName.T);
12211221
if (name != null) {
1222-
name = new PdfString(parentName + name.getValue());
1222+
name = new PdfString(parentName + name.toUnicodeString(), PdfEncodings.UNICODE_BIG);
12231223
}
12241224
return name;
12251225
}

forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,17 @@ public void unicodeFormFieldTest() throws IOException {
136136
PdfDocument pdfDoc = new PdfDocument(new PdfReader(filename));
137137
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
138138
Map<String, PdfFormField> formFields = form.getFormFields();
139-
byte[] result = {(byte) 0xFE,(byte) 0xFF,(byte) 0x5E,(byte) 0x10,(byte) 0x53,(byte) 0xF7,(byte) 0x00,(byte) 0x31}; // 帐号1: account number 1
140-
Assert.assertArrayEquals(formFields.keySet().toArray(new String[1])[0].getBytes(), result);
139+
String fieldName = "\u5E10\u53F71"; // 帐号1: account number 1
140+
Assert.assertEquals(fieldName, formFields.keySet().toArray(new String[1])[0]);
141+
}
142+
143+
@Test
144+
public void unicodeFormFieldTest2() throws IOException {
145+
String filename = sourceFolder + "unicodeFormFieldFile.pdf";
146+
PdfDocument pdfDoc = new PdfDocument(new PdfReader(filename));
147+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
148+
String fieldName = "\u5E10\u53F71"; // 帐号1: account number 1
149+
Assert.assertNotNull(form.getField(fieldName));
141150
}
142151

143152
@Test

0 commit comments

Comments
 (0)