Skip to content

Commit 12da629

Browse files
author
Ross Frank
committed
add test for DEVSIX-2156
1 parent b7a9016 commit 12da629

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,18 @@ This file is part of the iText (R) project.
4444

4545
import com.itextpdf.forms.fields.PdfFormField;
4646
import com.itextpdf.forms.fields.PdfTextFormField;
47+
import com.itextpdf.io.LogMessageConstant;
4748
import com.itextpdf.kernel.colors.DeviceRgb;
4849
import com.itextpdf.kernel.pdf.PdfDocument;
4950
import com.itextpdf.kernel.pdf.PdfReader;
5051
import com.itextpdf.kernel.pdf.PdfWriter;
5152
import com.itextpdf.kernel.utils.CompareTool;
5253
import com.itextpdf.test.ExtendedITextTest;
54+
import com.itextpdf.test.annotations.LogMessage;
55+
import com.itextpdf.test.annotations.LogMessages;
5356
import com.itextpdf.test.annotations.type.IntegrationTest;
57+
58+
import java.io.ByteArrayOutputStream;
5459
import java.io.IOException;
5560
import org.junit.Assert;
5661
import org.junit.BeforeClass;
@@ -201,4 +206,28 @@ private static void fillTextFieldsThenFlattenThenCompare(String testName) throws
201206

202207
Assert.assertNull(new CompareTool().compareByContent(dest, cmp, destinationFolder, "diff_"));
203208
}
209+
210+
@Test
211+
@LogMessages(messages = {@LogMessage(messageTemplate = LogMessageConstant.DOCUMENT_ALREADY_HAS_FIELD, count = 3)})
212+
//Logging is expected since there are duplicate field names
213+
//isReadOnly should be true after DEVSIX-2156
214+
public void flattenReadOnly() throws IOException{
215+
PdfWriter writer = new PdfWriter(new ByteArrayOutputStream());
216+
PdfDocument pdfDoc = new PdfDocument(writer);
217+
PdfReader reader = new PdfReader(sourceFolder + "readOnlyForm.pdf");
218+
PdfDocument pdfInnerDoc = new PdfDocument(reader);
219+
pdfInnerDoc.copyPagesTo(1, pdfInnerDoc.getNumberOfPages(), pdfDoc, new PdfPageFormCopier());
220+
pdfInnerDoc.close();
221+
reader = new PdfReader(sourceFolder + "readOnlyForm.pdf");
222+
pdfInnerDoc = new PdfDocument(reader);
223+
pdfInnerDoc.copyPagesTo(1, pdfInnerDoc.getNumberOfPages(), pdfDoc, new PdfPageFormCopier());
224+
pdfInnerDoc.close();
225+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, false);
226+
boolean isReadOnly = true;
227+
for (PdfFormField field : form.getFormFields().values()){
228+
isReadOnly = (isReadOnly && field.isReadOnly());
229+
}
230+
pdfDoc.close();
231+
Assert.assertFalse(isReadOnly);
232+
}
204233
}

0 commit comments

Comments
 (0)