Skip to content

Commit 900c9fd

Browse files
CheckBox field bugs were fixed
IEA-12
1 parent 9542f37 commit 900c9fd

File tree

11 files changed

+27
-17
lines changed

11 files changed

+27
-17
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,6 @@ public static PdfAcroForm getAcroForm(PdfDocument document, boolean createIfNotE
144144
acroForm.xfaForm = new XfaForm(document);
145145
}
146146

147-
148-
149147
return acroForm;
150148
}
151149

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.itextpdf.forms.fields;
22

33
import com.itextpdf.io.codec.Base64;
4-
import com.itextpdf.io.image.Image;
54
import com.itextpdf.io.source.ByteArrayOutputStream;
65
import com.itextpdf.kernel.pdf.PdfDictionary;
76
import com.itextpdf.kernel.pdf.PdfDocument;
@@ -10,7 +9,6 @@
109
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
1110

1211
import java.io.FileInputStream;
13-
import java.io.FileNotFoundException;
1412
import java.io.IOException;
1513
import java.io.InputStream;
1614

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

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ public static PdfButtonFormField createPushButton(PdfDocument doc, Rectangle rec
552552
* @return a new {@link PdfButtonFormField checkbox}
553553
*/
554554
public static PdfButtonFormField createCheckBox(PdfDocument doc, Rectangle rect, String name, String value) {
555-
return createCheckBox(doc, rect, name, value, PdfButtonFormField.TYPE_CROSS);
555+
return createCheckBox(doc, rect, name, value, TYPE_CROSS);
556556
}
557557

558558
/**
@@ -572,10 +572,7 @@ public static PdfButtonFormField createCheckBox(PdfDocument doc, Rectangle rect,
572572
check.setFieldName(name);
573573
check.setValue(value);
574574
annot.setAppearanceState(new PdfName(value));
575-
if (value.equals("Off")) {
576-
value = "Yes";
577-
}
578-
check.drawCheckAppearance(rect.getWidth(), rect.getHeight(), value);
575+
check.drawCheckAppearance(rect.getWidth(), rect.getHeight(), value.equals("Off") ? "Yes": value);
579576

580577
return (PdfButtonFormField) check;
581578
}
@@ -2175,12 +2172,19 @@ protected void drawCheckAppearance(float width, float height, String value) {
21752172

21762173
xObjectOn.getPdfObject().getOutputStream().writeBytes(streamOn.getBytes());
21772174
xObjectOn.getResources().addFont(getDocument(), getFont());
2178-
widget.setNormalAppearance(new PdfDictionary());
2179-
widget.getNormalAppearanceObject().put(new PdfName(value), xObjectOn.getPdfObject());
2175+
setDefaultAppearance(generateDefaultAppearanceString(font, fontSize == 0 ? DEFAULT_FONT_SIZE : fontSize, xObjectOn.getResources()));
21802176

21812177
xObjectOff.getPdfObject().getOutputStream().writeBytes(streamOff.getBytes());
21822178
xObjectOff.getResources().addFont(getDocument(), getFont());
2183-
widget.getNormalAppearanceObject().put(new PdfName("Off"), xObjectOff.getPdfObject());
2179+
2180+
PdfDictionary normalAppearance = new PdfDictionary();
2181+
normalAppearance.put(new PdfName(value), xObjectOn.getPdfObject());
2182+
normalAppearance.put(new PdfName("Off"), xObjectOff.getPdfObject());
2183+
2184+
PdfDictionary mk = new PdfDictionary();
2185+
mk.put(PdfName.CA, new PdfString(text));
2186+
widget.put(PdfName.MK, mk);
2187+
widget.setNormalAppearance(normalAppearance);
21842188
}
21852189

21862190
/**
@@ -2255,6 +2259,17 @@ protected void drawCheckBox(PdfCanvas canvas, float width, float height, int fon
22552259
if (!on) {
22562260
return;
22572261
}
2262+
2263+
if (checkType == TYPE_CROSS) {
2264+
float offset = borderWidth * 2;
2265+
canvas.
2266+
moveTo((width - height) / 2 + offset, height - offset).
2267+
lineTo((width + height) / 2 - offset, offset).
2268+
moveTo((width + height) / 2 - offset, height - offset).
2269+
lineTo((width - height) / 2 + offset, offset).
2270+
stroke();
2271+
return;
2272+
}
22582273
PdfFont ufont = getFont();
22592274
// PdfFont gets all width in 1000 normalized units
22602275
canvas.

forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.itextpdf.kernel.pdf.PdfDocument;
77
import com.itextpdf.kernel.pdf.PdfName;
88
import com.itextpdf.kernel.pdf.PdfObject;
9-
import com.itextpdf.kernel.pdf.PdfReader;
109
import com.itextpdf.kernel.pdf.PdfStream;
1110
import com.itextpdf.kernel.pdf.PdfString;
1211
import com.itextpdf.kernel.xmp.XmlDomWriter;

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.itextpdf.forms;
22

3+
import com.itextpdf.forms.fields.PdfButtonFormField;
4+
import com.itextpdf.forms.fields.PdfChoiceFormField;
5+
import com.itextpdf.forms.fields.PdfFormField;
6+
import com.itextpdf.forms.fields.PdfTextFormField;
37
import com.itextpdf.kernel.geom.Rectangle;
48
import com.itextpdf.kernel.pdf.PdfDocument;
59
import com.itextpdf.kernel.pdf.PdfPage;
610
import com.itextpdf.kernel.pdf.PdfReader;
711
import com.itextpdf.kernel.pdf.PdfWriter;
812
import com.itextpdf.kernel.utils.CompareTool;
913
import com.itextpdf.test.annotations.type.IntegrationTest;
10-
import com.itextpdf.forms.fields.PdfButtonFormField;
11-
import com.itextpdf.forms.fields.PdfChoiceFormField;
12-
import com.itextpdf.forms.fields.PdfFormField;
13-
import com.itextpdf.forms.fields.PdfTextFormField;
1414
import com.itextpdf.test.ExtendedITextTest;
1515

1616
import java.io.FileOutputStream;

0 commit comments

Comments
 (0)