Class XfaForm


  • public class XfaForm
    extends java.lang.Object
    Processes XFA forms.
    Author:
    Paulo Soares
    • 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.
      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
      static java.lang.String XFA_DATA_SCHEMA  
    • Constructor Summary

      Constructors 
      Constructor Description
      XfaForm()
      An empty constructor to build on.
      XfaForm​(PdfReader reader)
      A constructor from a PdfReader.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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)  
      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.
      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

    • 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
      • extractXFANodes

        public static java.util.Map<java.lang.String,​org.w3c.dom.Node> extractXFANodes​(org.w3c.dom.Document domDocument)
      • 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
      • 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