Skip to content

Commit

Permalink
Extra method that makes it easier to replace the data in an XFA form.
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.code.sf.net/p/itext/code/trunk@4105 3a709846-db2a-4fbd-be0b-eb932eee6479
  • Loading branch information
Bruno Lowagie committed Nov 27, 2009
1 parent 8abec84 commit 9359693
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions itext/src/core/com/lowagie/text/pdf/XfaForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EmptyStackException;
Expand All @@ -62,7 +66,11 @@
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.lowagie.text.xml.XmlDomWriter;
Expand Down Expand Up @@ -1097,4 +1105,37 @@ public void setAcroFieldsSom(AcroFieldsSearch acroFieldsSom) {
public Node getDatasetsNode() {
return datasetsNode;
}

public void fillXfaForm(File file) throws ParserConfigurationException, SAXException, IOException {
fillXfaForm(new FileInputStream(file));
}

public void fillXfaForm(InputStream is) throws ParserConfigurationException, SAXException, IOException {
fillXfaForm(new InputSource(is));
}


public void fillXfaForm(InputSource is) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document newdoc = db.parse(is);
fillXfaForm(newdoc.getDocumentElement());
}

/**
* Replaces the data under datasets/data.
* @since iText 5.0.0
*/
public void fillXfaForm(Node node) {
Node data = datasetsNode.getFirstChild();
NodeList list = data.getChildNodes();
if (list.getLength() == 0) {
data.appendChild(domDocument.importNode(node, true));
}
else {
data.replaceChild(domDocument.importNode(node, true), data.getFirstChild());
}
extractNodes();
setChanged(true);
}
}

0 comments on commit 9359693

Please sign in to comment.