Package com.itextpdf.forms
Class PdfAcroForm
- java.lang.Object
-
- com.itextpdf.kernel.pdf.PdfObjectWrapper<PdfDictionary>
-
- com.itextpdf.forms.PdfAcroForm
-
public class PdfAcroForm extends PdfObjectWrapper<PdfDictionary>
This class represents the static form technology AcroForm on a PDF file.
-
-
Field Summary
Fields Modifier and Type Field Description static int
APPEND_ONLY
To be used withsetSignatureFlags(int)
.private PdfDictionary
defaultResources
protected PdfDocument
document
The PdfDocument to which the PdfAcroForm belongs.protected java.util.Map<java.lang.String,PdfFormField>
fields
A map of field names and their associatedform field
objects.private java.util.Set<PdfFormField>
fieldsForFlattening
protected boolean
generateAppearance
Keeps track of whether or not appearances must be generated by the form fields themselves, or by the PDF viewer application.private static org.slf4j.Logger
LOGGER
static int
SIGNATURE_EXIST
To be used withsetSignatureFlags(int)
.private XfaForm
xfaForm
-
Constructor Summary
Constructors Modifier Constructor Description private
PdfAcroForm(PdfArray fields)
Creates a PdfAcroForm from aPdfArray
of fields.private
PdfAcroForm(PdfDictionary pdfObject, PdfDocument pdfDocument)
Creates a PdfAcroForm as a wrapper of a dictionary.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addField(PdfFormField field)
This method adds the field to the last page in the document.void
addField(PdfFormField field, PdfPage page)
This method adds the field to a specific page.void
addField(PdfFormField field, PdfPage page, boolean throwExceptionOnError)
This method adds the field to a specific page.void
addFieldAppearanceToPage(PdfFormField field, PdfPage page)
This method merges field with its annotation and places it on the given page.private AffineTransform
calcFieldAppTransformToAnnotRect(PdfFormXObject xObject, Rectangle annotBBox)
PdfFormField
copyField(java.lang.String name)
Creates an in-memory copy of aPdfFormField
.private static PdfDictionary
createAcroFormDictionaryByFields(PdfArray fields)
private void
defineWidgetPageAndAddToIt(PdfPage currentPage, PdfDictionary mergedFieldAndWidget, boolean warnIfPageFlushed)
void
disableRegenerationForAllFields()
Disables appearance stream regeneration for all the root fields in the Acroform, so all of its children in the hierarchy will also not be regenerated.void
enableRegenerationForAllFields()
Enables appearance stream regeneration for all the fields in the Acroform and regenerates them.void
flattenFields()
Flattens interactiveform field
s in the document.static PdfAcroForm
getAcroForm(PdfDocument document, boolean createIfNotExist)
Retrieves AcroForm from the document.static PdfAcroForm
getAcroForm(PdfDocument document, boolean createIfNotExist, OnDuplicateFormFieldNameStrategy onDuplicateFieldNameStrategy)
Retrieves AcroForm from the document.java.util.Map<java.lang.String,PdfFormField>
getAllFormFields()
Gets allform field
s as aMap
including fields kids.java.util.Set<AbstractPdfFormField>
getAllFormFieldsAndAnnotations()
Gets allform field
s as aSet
including fields kids and nameless fields.private java.util.Set<PdfFormField>
getAllFormFieldsWithoutNames()
PdfArray
getCalculationOrder()
Gets theCO
array property on the AcroForm.PdfString
getDefaultAppearance()
Gets theDA
String property on the AcroForm.PdfNumber
getDefaultJustification()
Gets theQ
integer property on the AcroForm.PdfDictionary
getDefaultResources()
Gets theDR
dictionary property on the AcroForm.PdfFormField
getField(java.lang.String fieldName)
Gets aform field
by its name.private PdfPage
getFieldPage(PdfDictionary annotDict)
protected PdfArray
getFields()
Gets all AcroForm fields in the document.java.util.Collection<PdfFormField>
getFieldsForFlattening()
Gets a collection ofform field
s, prepared for flattening usingpartialFormFlattening(java.lang.String)
method.PdfBoolean
getNeedAppearances()
Gets theNeedAppearances
boolean property on the AcroForm.PdfDocument
getPdfDocument()
Gets thePdfDocument
thisPdfAcroForm
belongs to.java.util.Map<java.lang.String,PdfFormField>
getRootFormFields()
Gets root fields (i.e.int
getSignatureFlags()
Gets theSigFlags
integer property on the AcroForm.XfaForm
getXfaForm()
Gets theXfaForm
atribute.PdfObject
getXFAResource()
Gets theXFA
property on the AcroForm.boolean
hasXfaForm()
Determines whether the AcroForm contains XFA data.boolean
isGenerateAppearance()
Gets the attribute generateAppearance, which tellsflattenFields()
to generate an appearance Stream for allform field
s that don't have one.protected boolean
isWrappedObjectMustBeIndirect()
Defines if the object behind this wrapper must be an indirect object in the resultant document.private boolean
needToAddToAcroform(PdfFormField field, boolean throwExceptionOnError)
void
partialFormFlattening(java.lang.String fieldName)
Adds aform field
, identified by name, to the list of fields to be flattened.private java.util.Map<java.lang.String,PdfFormField>
populateFormFieldsMap()
private java.util.Set<PdfFormField>
prepareFieldsForFlattening(PdfFormField field)
private void
processKids(PdfFormField field, PdfPage page)
PdfAcroForm
put(PdfName key, PdfObject value)
Put a key/value pair in the dictionary and overwrite previous value if it already exists.void
release()
Releases underlying pdf object and other pdf entities used by wrapper.boolean
removeField(java.lang.String fieldName)
Tries to remove theform field
with the specified name from the document.private void
removeFieldFromParentAndAcroForm(PdfArray formFields, PdfDictionary fieldObject)
void
removeXfaForm()
Removes the XFA stream from the document.void
renameField(java.lang.String oldName, java.lang.String newName)
Changes the identifier of aform field
.void
replaceField(java.lang.String name, PdfFormField field)
Replaces thePdfFormField
of a certain name with anotherPdfFormField
.PdfAcroForm
setCalculationOrder(PdfArray calculationOrder)
Sets theCO
array property on the AcroForm.PdfAcroForm
setDefaultAppearance(java.lang.String appearance)
Sets theDA
String property on the AcroForm.PdfAcroForm
setDefaultJustification(int justification)
Sets theQ
integer property on the AcroForm.PdfAcroForm
setDefaultResources(PdfDictionary defaultResources)
Sets theDR
dictionary property on the AcroForm.void
setGenerateAppearance(boolean generateAppearance)
Sets the attribute generateAppearance, which tellsflattenFields()
to generate an appearance Stream for allform field
s that don't have one.PdfObjectWrapper<PdfDictionary>
setModified()
PdfAcroForm
setNeedAppearances(boolean needAppearances)
Sets theNeedAppearances
boolean property on the AcroForm.PdfAcroForm
setSignatureFlag(int sigFlag)
Changes theSigFlags
integer property on the AcroForm.PdfAcroForm
setSignatureFlags(int sigFlags)
Sets theSigFlags
integer property on the AcroForm.PdfAcroForm
setXFAResource(PdfArray xfaResource)
Sets theXFA
property on the AcroForm.PdfAcroForm
setXFAResource(PdfStream xfaResource)
Sets theXFA
property on the AcroForm.-
Methods inherited from class com.itextpdf.kernel.pdf.PdfObjectWrapper
ensureObjectIsAddedToDocument, ensureUnderlyingObjectHasIndirectReference, flush, getPdfObject, isFlushed, makeIndirect, makeIndirect, markObjectAsIndirect, setForbidRelease, setPdfObject, unsetForbidRelease
-
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
SIGNATURE_EXIST
public static final int SIGNATURE_EXIST
To be used withsetSignatureFlags(int)
.
If set, the document contains at least one signature field. This flag allows a conforming reader to enable user interface items (such as menu items or pushbuttons) related to signature processing without having to scan the entire document for the presence of signature fields. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- See Also:
- Constant Field Values
-
APPEND_ONLY
public static final int APPEND_ONLY
To be used withsetSignatureFlags(int)
.
If set, the document contains signatures that may be invalidated if the file is saved (written) in a way that alters its previous contents, as opposed to an incremental update. Merely updating the file by appending new information to the end of the previous version is safe. Conforming readers may use this flag to inform a user requesting a full save that signatures will be invalidated and require explicit confirmation before continuing with the operation. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- See Also:
- Constant Field Values
-
generateAppearance
protected boolean generateAppearance
Keeps track of whether or not appearances must be generated by the form fields themselves, or by the PDF viewer application. Default istrue
.
-
fields
protected java.util.Map<java.lang.String,PdfFormField> fields
A map of field names and their associatedform field
objects.
-
document
protected PdfDocument document
The PdfDocument to which the PdfAcroForm belongs.
-
defaultResources
private PdfDictionary defaultResources
-
fieldsForFlattening
private java.util.Set<PdfFormField> fieldsForFlattening
-
xfaForm
private XfaForm xfaForm
-
-
Constructor Detail
-
PdfAcroForm
private PdfAcroForm(PdfDictionary pdfObject, PdfDocument pdfDocument)
Creates a PdfAcroForm as a wrapper of a dictionary. Also initializes an XFA form if an/XFA
entry is present in the dictionary.- Parameters:
pdfObject
- the PdfDictionary to be wrapped
-
PdfAcroForm
private PdfAcroForm(PdfArray fields)
Creates a PdfAcroForm from aPdfArray
of fields. Also initializes an empty XFA form.- Parameters:
fields
- aPdfArray
ofPdfDictionary
objects
-
-
Method Detail
-
getAcroForm
public static PdfAcroForm getAcroForm(PdfDocument document, boolean createIfNotExist)
Retrieves AcroForm from the document. If there is no AcroForm in the document Catalog and createIfNotExist flag is true then the AcroForm dictionary will be created and added to the document.- Parameters:
document
- the document to retrieve thePdfAcroForm
fromcreateIfNotExist
- whentrue
, this method will create aPdfAcroForm
if none exists for this document- Returns:
- the
document
's AcroForm, or a new one provided thatcreateIfNotExist
parameter istrue
, otherwisenull
.
-
getAcroForm
public static PdfAcroForm getAcroForm(PdfDocument document, boolean createIfNotExist, OnDuplicateFormFieldNameStrategy onDuplicateFieldNameStrategy)
Retrieves AcroForm from the document. If there is no AcroForm in the document Catalog and createIfNotExist flag is true then the AcroForm dictionary will be created and added to the document.- Parameters:
document
- the document to retrieve thePdfAcroForm
fromcreateIfNotExist
- whentrue
, this method will create aPdfAcroForm
if none exists for this documentonDuplicateFieldNameStrategy
- the strategy to be used when a field with the same name already exists- Returns:
- the
document
's AcroForm, or a new one provided thatcreateIfNotExist
parameter istrue
, otherwisenull
.
-
addField
public void addField(PdfFormField field)
This method adds the field to the last page in the document. If there's no pages, creates a new one.- Parameters:
field
- thePdfFormField
to be added to the form
-
addField
public void addField(PdfFormField field, PdfPage page)
This method adds the field to a specific page.- Parameters:
field
- thePdfFormField
to be added to the formpage
- thePdfPage
on which to add the field
-
addField
public void addField(PdfFormField field, PdfPage page, boolean throwExceptionOnError)
This method adds the field to a specific page.- Parameters:
field
- thePdfFormField
to be added to the formpage
- thePdfPage
on which to add the fieldthrowExceptionOnError
- true if the exception is expected to be thrown in case of error.
-
addFieldAppearanceToPage
public void addFieldAppearanceToPage(PdfFormField field, PdfPage page)
This method merges field with its annotation and places it on the given page. This method also work if the field has more than one widget annotation, but doesn't work with no annotations.- Parameters:
field
- thePdfFormField
to be added to the formpage
- thePdfPage
on which to add the field
-
getRootFormFields
public java.util.Map<java.lang.String,PdfFormField> getRootFormFields()
Gets root fields (i.e. direct children of Acroform dictionary).- Returns:
- a map of field names and their associated
form field
objects
-
getAllFormFields
public java.util.Map<java.lang.String,PdfFormField> getAllFormFields()
Gets allform field
s as aMap
including fields kids.- Returns:
- a map of field names and their associated
form field
objects
-
getAllFormFieldsAndAnnotations
public java.util.Set<AbstractPdfFormField> getAllFormFieldsAndAnnotations()
Gets allform field
s as aSet
including fields kids and nameless fields.- Returns:
- a set of
form field
objects.
-
getFieldsForFlattening
public java.util.Collection<PdfFormField> getFieldsForFlattening()
Gets a collection ofform field
s, prepared for flattening usingpartialFormFlattening(java.lang.String)
method. If returned collection is empty, all form fields will be flattened onflattenFields
call.- Returns:
- a collection of
form field
s for flattening
-
getPdfDocument
public PdfDocument getPdfDocument()
Gets thePdfDocument
thisPdfAcroForm
belongs to.- Returns:
- the document of this form
-
setNeedAppearances
public PdfAcroForm setNeedAppearances(boolean needAppearances)
Sets theNeedAppearances
boolean property on the AcroForm. NeedAppearances has been deprecated in PDF 2.0.
NeedAppearances is a flag specifying whether to construct appearance streams and appearance dictionaries for all widget annotations in the document. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- Parameters:
needAppearances
- a boolean. Default value isfalse
- Returns:
- current AcroForm.
-
getNeedAppearances
public PdfBoolean getNeedAppearances()
Gets theNeedAppearances
boolean property on the AcroForm. NeedAppearances has been deprecated in PDF 2.0.
NeedAppearances is a flag specifying whether to construct appearance streams and appearance dictionaries for all widget annotations in the document. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- Returns:
- the
NeedAppearances
property as aPdfBoolean
. Default value isfalse
-
setSignatureFlags
public PdfAcroForm setSignatureFlags(int sigFlags)
Sets theSigFlags
integer property on the AcroForm.
SigFlags is a set of flags specifying various document-level characteristics related to signature fields. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- Parameters:
sigFlags
- an integer. UseSIGNATURE_EXIST
and/orAPPEND_ONLY
. Use bitwise OR operator to combine these values. Default value is0
- Returns:
- current AcroForm.
-
setSignatureFlag
public PdfAcroForm setSignatureFlag(int sigFlag)
Changes theSigFlags
integer property on the AcroForm. This method allows only to add flags, not to remove them.
SigFlags is a set of flags specifying various document-level characteristics related to signature fields. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- Parameters:
sigFlag
- an integer. UseSIGNATURE_EXIST
and/orAPPEND_ONLY
. Use bitwise OR operator to combine these values. Default is0
- Returns:
- current AcroForm.
-
getSignatureFlags
public int getSignatureFlags()
Gets theSigFlags
integer property on the AcroForm.
SigFlags is a set of flags specifying various document-level characteristics related to signature fields (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")
- Returns:
- current value for
SigFlags
.
-
setCalculationOrder
public PdfAcroForm setCalculationOrder(PdfArray calculationOrder)
Sets theCO
array property on the AcroForm.
CO
, Calculation Order, is an array of indirect references to field dictionaries with calculation actions, defining the calculation order in which their values will be recalculated when the value of any field changes (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")- Parameters:
calculationOrder
- an array of indirect references- Returns:
- current AcroForm
-
getCalculationOrder
public PdfArray getCalculationOrder()
Gets theCO
array property on the AcroForm.
CO
, Calculation Order, is an array of indirect references to field dictionaries with calculation actions, defining the calculation order in which their values will be recalculated when the value of any field changes (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")- Returns:
- an array of indirect references
-
setDefaultResources
public PdfAcroForm setDefaultResources(PdfDictionary defaultResources)
Sets theDR
dictionary property on the AcroForm.
DR
is a resource dictionary containing default resources (such as fonts, patterns, or colour spaces) that shall be used by form field appearance streams. At a minimum, this dictionary shall contain a Font entry specifying the resource name and font dictionary of the default font for displaying text. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")- Parameters:
defaultResources
- a resource dictionary- Returns:
- current AcroForm
-
getDefaultResources
public PdfDictionary getDefaultResources()
Gets theDR
dictionary property on the AcroForm.
DR
is a resource dictionary containing default resources (such as fonts, patterns, or colour spaces) that shall be used by form field appearance streams. At a minimum, this dictionary shall contain a Font entry specifying the resource name and font dictionary of the default font for displaying text. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")- Returns:
- a resource dictionary
-
setDefaultAppearance
public PdfAcroForm setDefaultAppearance(java.lang.String appearance)
Sets theDA
String property on the AcroForm.
This method sets a default (fallback value) for theDA
attribute of variable textform field
s.- Parameters:
appearance
- a String containing a sequence of valid PDF syntax- Returns:
- current AcroForm
-
getDefaultAppearance
public PdfString getDefaultAppearance()
Gets theDA
String property on the AcroForm.
This method returns the default (fallback value) for theDA
attribute of variable textform field
s.- Returns:
- the form-wide default appearance, as a
String
-
setDefaultJustification
public PdfAcroForm setDefaultJustification(int justification)
Sets theQ
integer property on the AcroForm.
This method sets a default (fallback value) for theQ
attribute of variable textform field
s.- Parameters:
justification
- an integer representing a justification value- Returns:
- current AcroForm
- See Also:
PdfFormField.setJustification(com.itextpdf.layout.properties.TextAlignment)
-
getDefaultJustification
public PdfNumber getDefaultJustification()
Gets theQ
integer property on the AcroForm.
This method gets the default (fallback value) for theQ
attribute of variable textform field
s.- Returns:
- an integer representing a justification value
- See Also:
PdfFormField.getJustification()
-
setXFAResource
public PdfAcroForm setXFAResource(PdfStream xfaResource)
Sets theXFA
property on the AcroForm.
XFA
can either be aPdfStream
or aPdfArray
. Its contents must be valid XFA.- Parameters:
xfaResource
- a stream containing the XDP- Returns:
- current AcroForm
-
setXFAResource
public PdfAcroForm setXFAResource(PdfArray xfaResource)
Sets theXFA
property on the AcroForm.
XFA
can either be aPdfStream
or aPdfArray
. Its contents must be valid XFA.- Parameters:
xfaResource
- an array of text string and stream pairs representing the individual packets comprising the XML Data Package. (ISO 32000-1, section 12.7.2 "Interactive Form Dictionary")- Returns:
- current AcroForm
-
getXFAResource
public PdfObject getXFAResource()
Gets theXFA
property on the AcroForm.
-
getField
public PdfFormField getField(java.lang.String fieldName)
Gets aform field
by its name.- Parameters:
fieldName
- the name of theform field
to retrieve- Returns:
- the
form field
, ornull
if it isn't present
-
isGenerateAppearance
public boolean isGenerateAppearance()
Gets the attribute generateAppearance, which tellsflattenFields()
to generate an appearance Stream for allform field
s that don't have one.- Returns:
- bolean value indicating if the appearances need to be generated
-
setGenerateAppearance
public void setGenerateAppearance(boolean generateAppearance)
Sets the attribute generateAppearance, which tellsflattenFields()
to generate an appearance Stream for allform field
s that don't have one.Not generating appearances will speed up form flattening but the results can be unexpected in Acrobat. Don't use it unless your environment is well controlled. The default is
true
.If generateAppearance is set to
true
, thenNeedAppearances
is set tofalse
. This does not apply vice versa.Note, this method does not change default behaviour of
PdfFormField.setValue(String)
method.- Parameters:
generateAppearance
- a boolean
-
flattenFields
public void flattenFields()
Flattens interactiveform field
s in the document. If no fields have been explicitly included viapartialFormFlattening(java.lang.String)
, then all fields are flattened. Otherwise only the included fields are flattened.
-
removeField
public boolean removeField(java.lang.String fieldName)
Tries to remove theform field
with the specified name from the document.- Parameters:
fieldName
- the name of theform field
to remove- Returns:
- a boolean representing whether or not the removal succeeded.
-
partialFormFlattening
public void partialFormFlattening(java.lang.String fieldName)
Adds aform field
, identified by name, to the list of fields to be flattened. Does not perform a flattening operation in itself.- Parameters:
fieldName
- the name of theform field
to be flattened
-
renameField
public void renameField(java.lang.String oldName, java.lang.String newName)
Changes the identifier of aform field
.- Parameters:
oldName
- the current name of the fieldnewName
- the new name of the field. Must not be used currently.
-
copyField
public PdfFormField copyField(java.lang.String name)
Creates an in-memory copy of aPdfFormField
. This new field is not added to the document.- Parameters:
name
- the name of theform field
to be copied- Returns:
- a clone of the original
PdfFormField
-
replaceField
public void replaceField(java.lang.String name, PdfFormField field)
Replaces thePdfFormField
of a certain name with anotherPdfFormField
.- Parameters:
name
- the name of theform field
to be replacedfield
- the newPdfFormField
-
disableRegenerationForAllFields
public void disableRegenerationForAllFields()
Disables appearance stream regeneration for all the root fields in the Acroform, so all of its children in the hierarchy will also not be regenerated.
-
enableRegenerationForAllFields
public void enableRegenerationForAllFields()
Enables appearance stream regeneration for all the fields in the Acroform and regenerates them.
-
getFields
protected PdfArray getFields()
Gets all AcroForm fields in the document.- Returns:
- a
PdfArray
of field dictionaries
-
isWrappedObjectMustBeIndirect
protected boolean isWrappedObjectMustBeIndirect()
Description copied from class:PdfObjectWrapper
Defines if the object behind this wrapper must be an indirect object in the resultant document.
If this method returns true it doesn't necessarily mean that object must be in the indirect state at any moment, but rather defines that when the object will be written to the document it will be transformed into indirect object if it's not indirect yet.
Return value of this method shouldn't depend on any logic, it should return always true or false.- Specified by:
isWrappedObjectMustBeIndirect
in classPdfObjectWrapper<PdfDictionary>
- Returns:
- true if in the resultant document the object behind the wrapper must be indirect, otherwise false.
-
populateFormFieldsMap
private java.util.Map<java.lang.String,PdfFormField> populateFormFieldsMap()
-
removeFieldFromParentAndAcroForm
private void removeFieldFromParentAndAcroForm(PdfArray formFields, PdfDictionary fieldObject)
-
processKids
private void processKids(PdfFormField field, PdfPage page)
-
defineWidgetPageAndAddToIt
private void defineWidgetPageAndAddToIt(PdfPage currentPage, PdfDictionary mergedFieldAndWidget, boolean warnIfPageFlushed)
-
hasXfaForm
public boolean hasXfaForm()
Determines whether the AcroForm contains XFA data.- Returns:
- a boolean
-
removeXfaForm
public void removeXfaForm()
Removes the XFA stream from the document.
-
put
public PdfAcroForm put(PdfName key, PdfObject value)
Put a key/value pair in the dictionary and overwrite previous value if it already exists.- Parameters:
key
- the key as pdf namevalue
- the value as pdf object- Returns:
- this
PdfAcroForm
instance
-
release
public void release()
Releases underlying pdf object and other pdf entities used by wrapper. This method should be called instead of direct call toPdfObject.release()
if the wrapper is used.
-
setModified
public PdfObjectWrapper<PdfDictionary> setModified()
- Overrides:
setModified
in classPdfObjectWrapper<PdfDictionary>
-
createAcroFormDictionaryByFields
private static PdfDictionary createAcroFormDictionaryByFields(PdfArray fields)
-
getFieldPage
private PdfPage getFieldPage(PdfDictionary annotDict)
-
prepareFieldsForFlattening
private java.util.Set<PdfFormField> prepareFieldsForFlattening(PdfFormField field)
-
calcFieldAppTransformToAnnotRect
private AffineTransform calcFieldAppTransformToAnnotRect(PdfFormXObject xObject, Rectangle annotBBox)
-
getAllFormFieldsWithoutNames
private java.util.Set<PdfFormField> getAllFormFieldsWithoutNames()
-
needToAddToAcroform
private boolean needToAddToAcroform(PdfFormField field, boolean throwExceptionOnError)
-
-