Skip to content

Commit 690d344

Browse files
committed
Create a test for checkbox appearance regeneration
DEVSIX-3128
1 parent ffaf64c commit 690d344

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,17 @@ This file is part of the iText (R) project.
2424

2525
import com.itextpdf.commons.utils.MessageFormatUtil;
2626
import com.itextpdf.forms.fields.CheckBoxFormFieldBuilder;
27+
import com.itextpdf.forms.fields.PdfButtonFormField;
2728
import com.itextpdf.forms.fields.PdfFormField;
2829
import com.itextpdf.forms.fields.properties.CheckBoxType;
2930
import com.itextpdf.kernel.colors.ColorConstants;
3031
import com.itextpdf.kernel.font.PdfFontFactory;
3132
import com.itextpdf.kernel.geom.Rectangle;
3233
import com.itextpdf.kernel.pdf.PdfDocument;
34+
import com.itextpdf.kernel.pdf.PdfName;
3335
import com.itextpdf.kernel.pdf.PdfPage;
3436
import com.itextpdf.kernel.pdf.PdfReader;
37+
import com.itextpdf.kernel.pdf.PdfStream;
3538
import com.itextpdf.kernel.pdf.PdfWriter;
3639
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
3740
import com.itextpdf.kernel.utils.CompareTool;
@@ -210,6 +213,38 @@ public void checkBoxToggleTest02() throws IOException, InterruptedException {
210213
}
211214
}
212215

216+
@Test
217+
public void appearanceRegenerationTest() throws IOException, InterruptedException {
218+
String outPdf = destinationFolder + "appearanceRegenerationTest.pdf";
219+
String cmpPdf = sourceFolder + "cmp_appearanceRegenerationTest.pdf";
220+
221+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outPdf))) {
222+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
223+
224+
PdfButtonFormField checkBox1 = new CheckBoxFormFieldBuilder(pdfDoc, "checkbox1")
225+
.setWidgetRectangle(new Rectangle(10, 650, 40, 20)).createCheckBox();
226+
checkBox1.setValue("My_Value");
227+
228+
String offStream = "1 0 0 1 0.86 0.5 cm 0 0 m\n" +
229+
"0 0.204 -0.166 0.371 -0.371 0.371 c\n" +
230+
"-0.575 0.371 -0.741 0.204 -0.741 0 c\n" +
231+
"-0.741 -0.204 -0.575 -0.371 -0.371 -0.371 c\n" +
232+
"-0.166 -0.371 0 -0.204 0 0 c\n" +
233+
"f\n";
234+
checkBox1.getFirstFormAnnotation().setAppearance(PdfName.N, "Off",
235+
new PdfStream(offStream.getBytes()));
236+
String onStream = "1 0 0 1 0.835 0.835 cm 0 0 -0.669 -0.67 re\n" +
237+
"f\n";
238+
checkBox1.getFirstFormAnnotation().setAppearance(PdfName.N, "My_Value",
239+
new PdfStream(onStream.getBytes()));
240+
241+
checkBox1.regenerateField();
242+
form.addField(checkBox1);
243+
}
244+
245+
Assert.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"));
246+
}
247+
213248
private void addCheckBox(PdfDocument pdfDoc, float fontSize, float yPos, float checkBoxW, float checkBoxH)
214249
throws IOException {
215250
Rectangle rect = new Rectangle(50, yPos, checkBoxW, checkBoxH);

0 commit comments

Comments
 (0)