Package com.itextpdf.text.pdf
Class XfaForm
- java.lang.Object
-
- com.itextpdf.text.pdf.XfaForm
-
public class XfaForm extends java.lang.Object
Processes XFA forms.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
XfaForm.AcroFieldsSearch
A class to process "classic" fields.static class
XfaForm.InverseStore
A structure to store each part of a SOM name and link it to the next part beginning from the lower hierarchy.private static class
XfaForm.SafeEmptyEntityResolver
static class
XfaForm.Stack2<T>
Another stack implementation.static class
XfaForm.Xml2Som
A class for some basic SOM processing.static class
XfaForm.Xml2SomDatasets
Processes the datasets section in the XFA form.static class
XfaForm.Xml2SomTemplate
Processes the template section in the XFA form.
-
Field Summary
Fields Modifier and Type Field Description private XfaForm.AcroFieldsSearch
acroFieldsSom
private boolean
changed
private org.w3c.dom.Node
datasetsNode
private XfaForm.Xml2SomDatasets
datasetsSom
private org.w3c.dom.Document
domDocument
private PdfReader
reader
private org.w3c.dom.Node
templateNode
private XfaForm.Xml2SomTemplate
templateSom
static java.lang.String
XFA_DATA_SCHEMA
private boolean
xfaPresent
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
createDatasetsNode(org.w3c.dom.Node n)
Some XFA forms don't have a datasets node.private void
extractNodes()
Extracts the nodes from the domDocument.static java.util.Map<java.lang.String,org.w3c.dom.Node>
extractXFANodes(org.w3c.dom.Document domDocument)
void
fillXfaForm(java.io.File file)
void
fillXfaForm(java.io.File file, boolean readOnly)
void
fillXfaForm(java.io.InputStream is)
void
fillXfaForm(java.io.InputStream is, boolean readOnly)
void
fillXfaForm(org.w3c.dom.Node node)
void
fillXfaForm(org.w3c.dom.Node node, boolean readOnly)
Replaces the data under datasets/data.void
fillXfaForm(org.xml.sax.InputSource is)
void
fillXfaForm(org.xml.sax.InputSource is, boolean readOnly)
private org.w3c.dom.Node
findDataNode(org.w3c.dom.Node datasetsNode)
java.lang.String
findDatasetsName(java.lang.String name)
Finds the complete SOM name contained in the datasets section from a possibly partial name.org.w3c.dom.Node
findDatasetsNode(java.lang.String name)
Finds theNode
contained in the datasets section from a possibly partial name.java.lang.String
findFieldName(java.lang.String name, AcroFields af)
Finds the complete field name contained in the "classic" forms from a partial name.XfaForm.AcroFieldsSearch
getAcroFieldsSom()
Gets the class that contains the "classic" fields processing.org.w3c.dom.Node
getDatasetsNode()
Gets theNode
that corresponds to the datasets part.XfaForm.Xml2SomDatasets
getDatasetsSom()
Gets the class that contains the datasets processing section of the XFA.org.w3c.dom.Document
getDomDocument()
Gets the top level DOM document.private org.w3c.dom.Node
getFirstElementNode(org.w3c.dom.Node src)
static java.lang.String
getNodeText(org.w3c.dom.Node n)
Gets all the text contained in the child nodes of this node.private static java.lang.String
getNodeText(org.w3c.dom.Node n, java.lang.String name)
PdfReader
getReader()
Gets thePdfReader
used by this instance.XfaForm.Xml2SomTemplate
getTemplateSom()
Gets the class that contains the template processing section of the XFA.static PdfObject
getXfaObject(PdfReader reader)
Return the XFA Object, could be an array, could be a Stream.boolean
isChanged()
Checks if this XFA form was changed.boolean
isXfaPresent()
Returnstrue
if it is a XFA form.static byte[]
serializeDoc(org.w3c.dom.Node n)
Serializes a XML document to a byte array.void
setAcroFieldsSom(XfaForm.AcroFieldsSearch acroFieldsSom)
Sets the class that contains the "classic" fields processing.void
setChanged(boolean changed)
Sets the changed status of this XFA instance.void
setDatasetsSom(XfaForm.Xml2SomDatasets datasetsSom)
Sets the class that contains the datasets processing section of the XFA.void
setDomDocument(org.w3c.dom.Document domDocument)
Sets the top DOM document.void
setNodeText(org.w3c.dom.Node n, java.lang.String text)
Sets the text of this node.void
setReader(PdfReader reader)
Sets thePdfReader
to be used by this instance.void
setTemplateSom(XfaForm.Xml2SomTemplate templateSom)
Sets the class that contains the template processing section of the XFAvoid
setXfa(PdfWriter writer)
Sets the XFA key from the instance data.static void
setXfa(XfaForm form, PdfReader reader, PdfWriter writer)
Sets the XFA key from a byte array.void
setXfaPresent(boolean xfaPresent)
Sets the XFA form flag signaling that this is a valid XFA form.
-
-
-
Field Detail
-
templateSom
private XfaForm.Xml2SomTemplate templateSom
-
templateNode
private org.w3c.dom.Node templateNode
-
datasetsSom
private XfaForm.Xml2SomDatasets datasetsSom
-
datasetsNode
private org.w3c.dom.Node datasetsNode
-
acroFieldsSom
private XfaForm.AcroFieldsSearch acroFieldsSom
-
reader
private PdfReader reader
-
xfaPresent
private boolean xfaPresent
-
domDocument
private org.w3c.dom.Document domDocument
-
changed
private boolean changed
-
XFA_DATA_SCHEMA
public static final java.lang.String XFA_DATA_SCHEMA
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
XfaForm
public XfaForm()
An empty constructor to build on.
-
XfaForm
public XfaForm(PdfReader reader) throws java.io.IOException, javax.xml.parsers.ParserConfigurationException, org.xml.sax.SAXException
A constructor from aPdfReader
. It basically does everything from finding the XFA stream to the XML parsing.- Parameters:
reader
- the reader- Throws:
java.io.IOException
- on errorjavax.xml.parsers.ParserConfigurationException
- on errororg.xml.sax.SAXException
- on error
-
-
Method Detail
-
getXfaObject
public static PdfObject getXfaObject(PdfReader reader)
Return the XFA Object, could be an array, could be a Stream. Returns null f no XFA Object is present.- Parameters:
reader
- a PdfReader instance- Returns:
- the XFA object
- Since:
- 2.1.3
-
extractNodes
private void extractNodes()
Extracts the nodes from the domDocument.- Since:
- 2.1.5
-
findDataNode
private org.w3c.dom.Node findDataNode(org.w3c.dom.Node datasetsNode)
-
extractXFANodes
public static java.util.Map<java.lang.String,org.w3c.dom.Node> extractXFANodes(org.w3c.dom.Document domDocument)
-
createDatasetsNode
private void createDatasetsNode(org.w3c.dom.Node n)
Some XFA forms don't have a datasets node. If this is the case, we have to add one.
-
setXfa
public static void setXfa(XfaForm form, PdfReader reader, PdfWriter writer) throws java.io.IOException
Sets the XFA key from a byte array. The old XFA is erased.- Parameters:
form
- the datareader
- the readerwriter
- the writer- Throws:
java.io.IOException
- on error
-
setXfa
public void setXfa(PdfWriter writer) throws java.io.IOException
Sets the XFA key from the instance data. The old XFA is erased.- Parameters:
writer
- the writer- Throws:
java.io.IOException
- on error
-
serializeDoc
public static byte[] serializeDoc(org.w3c.dom.Node n) throws java.io.IOException
Serializes a XML document to a byte array.- Parameters:
n
- the XML document- Returns:
- the serialized XML document
- Throws:
java.io.IOException
- on error
-
isXfaPresent
public boolean isXfaPresent()
Returnstrue
if it is a XFA form.- Returns:
true
if it is a XFA form
-
getDomDocument
public org.w3c.dom.Document getDomDocument()
Gets the top level DOM document.- Returns:
- the top level DOM document
-
findFieldName
public java.lang.String findFieldName(java.lang.String name, AcroFields af)
Finds the complete field name contained in the "classic" forms from a partial name.- Parameters:
name
- the complete or partial nameaf
- the fields- Returns:
- the complete name or
null
if not found
-
findDatasetsName
public java.lang.String findDatasetsName(java.lang.String name)
Finds the complete SOM name contained in the datasets section from a possibly partial name.- Parameters:
name
- the complete or partial name- Returns:
- the complete name or
null
if not found
-
findDatasetsNode
public org.w3c.dom.Node findDatasetsNode(java.lang.String name)
Finds theNode
contained in the datasets section from a possibly partial name.- Parameters:
name
- the complete or partial name- Returns:
- the
Node
ornull
if not found
-
getNodeText
public static java.lang.String getNodeText(org.w3c.dom.Node n)
Gets all the text contained in the child nodes of this node.- Parameters:
n
- theNode
- Returns:
- the text found or "" if no text was found
-
getNodeText
private static java.lang.String getNodeText(org.w3c.dom.Node n, java.lang.String name)
-
setNodeText
public void setNodeText(org.w3c.dom.Node n, java.lang.String text)
Sets the text of this node. All the child's node are deleted and a new child text node is created.- Parameters:
n
- theNode
to add the text totext
- the text to add
-
setXfaPresent
public void setXfaPresent(boolean xfaPresent)
Sets the XFA form flag signaling that this is a valid XFA form.- Parameters:
xfaPresent
- the XFA form flag signaling that this is a valid XFA form
-
setDomDocument
public void setDomDocument(org.w3c.dom.Document domDocument)
Sets the top DOM document.- Parameters:
domDocument
- the top DOM document
-
getReader
public PdfReader getReader()
Gets thePdfReader
used by this instance.- Returns:
- the
PdfReader
used by this instance
-
setReader
public void setReader(PdfReader reader)
Sets thePdfReader
to be used by this instance.- Parameters:
reader
- thePdfReader
to be used by this instance
-
isChanged
public boolean isChanged()
Checks if this XFA form was changed.- Returns:
true
if this XFA form was changed
-
setChanged
public void setChanged(boolean changed)
Sets the changed status of this XFA instance.- Parameters:
changed
- the changed status of this XFA instance
-
getTemplateSom
public XfaForm.Xml2SomTemplate getTemplateSom()
Gets the class that contains the template processing section of the XFA.- Returns:
- the class that contains the template processing section of the XFA
-
setTemplateSom
public void setTemplateSom(XfaForm.Xml2SomTemplate templateSom)
Sets the class that contains the template processing section of the XFA- Parameters:
templateSom
- the class that contains the template processing section of the XFA
-
getDatasetsSom
public XfaForm.Xml2SomDatasets getDatasetsSom()
Gets the class that contains the datasets processing section of the XFA.- Returns:
- the class that contains the datasets processing section of the XFA
-
setDatasetsSom
public void setDatasetsSom(XfaForm.Xml2SomDatasets datasetsSom)
Sets the class that contains the datasets processing section of the XFA.- Parameters:
datasetsSom
- the class that contains the datasets processing section of the XFA
-
getAcroFieldsSom
public XfaForm.AcroFieldsSearch getAcroFieldsSom()
Gets the class that contains the "classic" fields processing.- Returns:
- the class that contains the "classic" fields processing
-
setAcroFieldsSom
public void setAcroFieldsSom(XfaForm.AcroFieldsSearch acroFieldsSom)
Sets the class that contains the "classic" fields processing.- Parameters:
acroFieldsSom
- the class that contains the "classic" fields processing
-
getDatasetsNode
public org.w3c.dom.Node getDatasetsNode()
Gets theNode
that corresponds to the datasets part.- Returns:
- the
Node
that corresponds to the datasets part
-
fillXfaForm
public void fillXfaForm(java.io.File file) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(java.io.File file, boolean readOnly) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(java.io.InputStream is) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(java.io.InputStream is, boolean readOnly) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(org.xml.sax.InputSource is) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(org.xml.sax.InputSource is, boolean readOnly) throws java.io.IOException
- Throws:
java.io.IOException
-
fillXfaForm
public void fillXfaForm(org.w3c.dom.Node node)
-
fillXfaForm
public void fillXfaForm(org.w3c.dom.Node node, boolean readOnly)
Replaces the data under datasets/data.- Since:
- iText 5.0.0
-
getFirstElementNode
private org.w3c.dom.Node getFirstElementNode(org.w3c.dom.Node src)
-
-