Class XfaForm


  • public class XfaForm
    extends java.lang.Object
    Processes XFA forms.
    • Field Detail

      • templateNode

        private org.w3c.dom.Node templateNode
      • datasetsNode

        private org.w3c.dom.Node datasetsNode
      • xfaPresent

        private boolean xfaPresent
      • domDocument

        private org.w3c.dom.Document domDocument
      • changed

        private boolean changed
    • 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
      • 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 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 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)