Skip to content

Commit 1533541

Browse files
committed
Close PdfAcroForm constructors. Detect pdfA conformance level from reader when creating fields on stamping mode
DEVSIX-575
1 parent a060253 commit 1533541

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,9 @@ public class PdfAcroForm extends PdfObjectWrapper<PdfDictionary> {
136136
*
137137
* @param pdfObject the PdfDictionary to be wrapped
138138
*/
139-
protected PdfAcroForm(PdfDictionary pdfObject) {
139+
private PdfAcroForm(PdfDictionary pdfObject, PdfDocument pdfDocument) {
140140
super(pdfObject);
141+
document = pdfDocument;
141142
getFormFields();
142143
xfaForm = new XfaForm(pdfObject);
143144
}
@@ -148,8 +149,8 @@ protected PdfAcroForm(PdfDictionary pdfObject) {
148149
*
149150
* @param fields a {@link PdfArray} of {@link PdfDictionary} objects
150151
*/
151-
protected PdfAcroForm(PdfArray fields) {
152-
this(createAcroFormDictionaryByFields(fields));
152+
private PdfAcroForm(PdfArray fields) {
153+
this(createAcroFormDictionaryByFields(fields), null);
153154
setForbidRelease();
154155
}
155156

@@ -174,7 +175,7 @@ public static PdfAcroForm getAcroForm(PdfDocument document, boolean createIfNotE
174175
acroForm.setDefaultAppearance("/Helv 0 Tf 0 g ");
175176
}
176177
} else {
177-
acroForm = new PdfAcroForm(acroFormDictionary);
178+
acroForm = new PdfAcroForm(acroFormDictionary, document);
178179
}
179180

180181
if (acroForm != null) {

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,9 @@ public static PdfFormField makeFormField(PdfObject pdfObject, PdfDocument docume
854854
}
855855
if (field != null) {
856856
field.makeIndirect(document);
857+
if (document != null && document.getReader() != null && document.getReader().getPdfAConformanceLevel() != null) {
858+
field.pdfAConformanceLevel = document.getReader().getPdfAConformanceLevel();
859+
}
857860
}
858861
return field;
859862
}
@@ -1755,7 +1758,7 @@ public boolean regenerateField() {
17551758
break;
17561759
}
17571760
PdfWidgetAnnotation widget = getWidgets().get(0);
1758-
if (widget.getNormalAppearanceObject().containsKey(new PdfName(value))) {
1761+
if (widget.getNormalAppearanceObject() != null && widget.getNormalAppearanceObject().containsKey(new PdfName(value))) {
17591762
widget.setAppearanceState(new PdfName(value));
17601763
} else {
17611764
widget.setAppearanceState(new PdfName("Off"));

0 commit comments

Comments
 (0)