com.lowagie.text.pdf

## Class XfaForm

- java.lang.Object
- - com.lowagie.text.pdf.XfaForm

-     public class XfaForm
      extends java.lang.Object

  Processes XFA forms.
  Author:
    Paulo Soares (psoares@consiste.pt)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and 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.
    `static class` | `XfaForm.Stack2` 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 and 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`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XfaForm()` An empty constructor to build on.
    `XfaForm(PdfReader reader)` A constructor from a `PdfReader`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `extractNodes()` Extracts the nodes from the domDocument.
    `void` | `fillXfaForm(java.io.File file)`
    `void` | `fillXfaForm(org.xml.sax.InputSource is)`
    `void` | `fillXfaForm(java.io.InputStream is)`
    `void` | `fillXfaForm(org.w3c.dom.Node node)` Replaces the data under datasets/data.
    `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 the `Node` 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 the `Node` 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.
    `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 the `PdfReader` 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()` Returns `true` 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 the `PdfReader` to be used by this instance.
    `void` | `setTemplateSom(XfaForm.Xml2SomTemplate templateSom)` Sets the class that contains the template processing section of the XFA
    `void` | `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.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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 a `PdfReader`. It basically does everything from finding the XFA stream to the XML parsing.
      Parameters:
        `reader` - the reader
      Throws:
        `java.io.IOException` - on error
        `javax.xml.parsers.ParserConfigurationException` - on error
        `org.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

    - #### 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 data
        `reader` - the reader
        `writer` - 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()

      Returns `true` 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 name
        `af` - 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 the `Node` contained in the datasets section from a possibly partial name.
      Parameters:
        `name` - the complete or partial name
      Returns:
        the `Node` or `null` 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` - the `Node`
      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` - the `Node` to add the text to
        `text` - 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 the `PdfReader` used by this instance.
      Returns:
        the `PdfReader` used by this instance

    - #### setReader

          public void setReader(PdfReader reader)

      Sets the `PdfReader` to be used by this instance.
      Parameters:
        `reader` - the `PdfReader` 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 the `Node` that corresponds to the datasets part.
      Returns:
        the `Node` that corresponds to the datasets part

    - #### fillXfaForm

          public void fillXfaForm(java.io.File file)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException

      Throws:
        `javax.xml.parsers.ParserConfigurationException`
        `org.xml.sax.SAXException`
        `java.io.IOException`

    - #### fillXfaForm

          public void fillXfaForm(java.io.InputStream is)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException

      Throws:
        `javax.xml.parsers.ParserConfigurationException`
        `org.xml.sax.SAXException`
        `java.io.IOException`

    - #### fillXfaForm

          public void fillXfaForm(org.xml.sax.InputSource is)
                           throws javax.xml.parsers.ParserConfigurationException,
                                  org.xml.sax.SAXException,
                                  java.io.IOException

      Throws:
        `javax.xml.parsers.ParserConfigurationException`
        `org.xml.sax.SAXException`
        `java.io.IOException`

    - #### fillXfaForm

          public void fillXfaForm(org.w3c.dom.Node node)

      Replaces the data under datasets/data.
      Since:
        iText 5.0.0