Example usage for com.lowagie.text.pdf XfaForm getDomDocument

List of usage examples for com.lowagie.text.pdf XfaForm getDomDocument

Introduction

In this page you can find the example usage for com.lowagie.text.pdf XfaForm getDomDocument.

Prototype

public org.w3c.dom.Document getDomDocument() 

Source Link

Document

Gets the top level DOM document.

Usage

From source file:org.kuali.coeus.propdev.impl.budget.subaward.PropDevPropDevBudgetSubAwardServiceImpl.java

License:Open Source License

/**
 * extracts XML from PDF/*from  www . j  a v  a  2  s .c o  m*/
 */
protected byte[] getXMLFromPDF(PdfReader reader) throws Exception {
    XfaForm xfaForm = reader.getAcroFields().getXfa();
    Node domDocument = xfaForm.getDomDocument();
    if (domDocument == null)
        return null;
    Element documentElement = ((Document) domDocument).getDocumentElement();

    Element datasetsElement = (Element) documentElement.getElementsByTagNameNS(XFA_NS, "datasets").item(0);
    Element dataElement = (Element) datasetsElement.getElementsByTagNameNS(XFA_NS, "data").item(0);

    Element xmlElement = (Element) dataElement.getChildNodes().item(0);

    Node budgetElement = getBudgetElement(xmlElement);

    byte[] serializedXML = XfaForm.serializeDoc(budgetElement);

    return serializedXML;
}

From source file:org.kuali.coeus.propdev.impl.s2s.S2sUserAttachedFormServiceImpl.java

License:Open Source License

private List<S2sUserAttachedForm> extractAndPopulateXml(ProposalDevelopmentDocument developmentProposal,
        PdfReader reader, S2sUserAttachedForm userAttachedForm, Map attachments) throws Exception {
    List<S2sUserAttachedForm> formBeans = new ArrayList<S2sUserAttachedForm>();
    XfaForm xfaForm = reader.getAcroFields().getXfa();
    Node domDocument = xfaForm.getDomDocument();
    if (domDocument == null) {
        S2SException s2sException = new S2SException(KeyConstants.S2S_USER_ATTACHED_FORM_WRONG_FILE_TYPE,
                "Uploaded file is not Grants.Gov fillable form");
        s2sException.setTabErrorKey("userAttachedFormsErrors");
        throw s2sException;
    }// w w  w  .  j ava 2  s .  c  om
    Element documentElement = ((Document) domDocument).getDocumentElement();

    Element datasetsElement = (Element) documentElement.getElementsByTagNameNS(XFA_NS, "datasets").item(0);
    Element dataElement = (Element) datasetsElement.getElementsByTagNameNS(XFA_NS, "data").item(0);
    Element grantApplicationElement = (Element) dataElement.getChildNodes().item(0);

    byte[] serializedXML = XfaForm.serializeDoc(grantApplicationElement);
    DocumentBuilderFactory domParserFactory = DocumentBuilderFactory.newInstance();
    domParserFactory.setNamespaceAware(true);
    javax.xml.parsers.DocumentBuilder domParser = domParserFactory.newDocumentBuilder();
    domParserFactory.setIgnoringElementContentWhitespace(true);
    ByteArrayInputStream byteArrayInputStream = null;
    org.w3c.dom.Document document = null;
    try {
        byteArrayInputStream = new ByteArrayInputStream(serializedXML);
        document = domParser.parse(byteArrayInputStream);
    } finally {
        if (byteArrayInputStream != null)
            byteArrayInputStream.close();
    }
    if (document != null) {
        Element form = null;
        NodeList elements = document
                .getElementsByTagNameNS("http://apply.grants.gov/system/MetaGrantApplication", "Forms");
        Element element = (Element) elements.item(0);
        if (element != null) {
            NodeList formChildren = element.getChildNodes();
            int formsCount = formChildren.getLength();
            if (formsCount > 1) {
                NodeList selectedOptionalFormElements = document.getElementsByTagNameNS(
                        "http://apply.grants.gov/system/MetaGrantApplicationWrapper", "SelectedOptionalForms");
                int selectedOptionalFormsCount = selectedOptionalFormElements == null ? 0
                        : selectedOptionalFormElements.getLength();
                if (selectedOptionalFormsCount > 0) {
                    Element selectedFormNode = (Element) selectedOptionalFormElements.item(0);
                    NodeList selectedForms = selectedFormNode.getElementsByTagNameNS(
                            "http://apply.grants.gov/system/MetaGrantApplicationWrapper", "FormTagName");
                    int selectedFormsCount = selectedForms == null ? 0 : selectedForms.getLength();
                    if (selectedFormsCount > 0) {
                        List seletctedForms = new ArrayList();
                        for (int j = 0; j < selectedFormsCount; j++) {
                            Element selectedForm = (Element) selectedForms.item(j);
                            String formName = selectedForm.getTextContent();
                            seletctedForms.add(formName);

                        }
                        List exceptions = new ArrayList();
                        for (int i = 0; i < formsCount; i++) {
                            form = (Element) formChildren.item(i);
                            String formNodeName = form.getLocalName();
                            if (seletctedForms.contains(formNodeName)) {
                                try {
                                    addForm(developmentProposal, formBeans, form, userAttachedForm,
                                            attachments);
                                } catch (UnmarshalException ume) {
                                    exceptions.add("Not able to create xml for the form " + formNodeName
                                            + " Root Cause:" + ume.getMessage() + "<br>");
                                }

                            }
                        }
                        if (!exceptions.isEmpty())
                            throw new S2SException(exceptions.toString());
                    }
                }
            } else {
                form = (Element) formChildren.item(0);
                addForm(developmentProposal, formBeans, form, userAttachedForm, attachments);
            }
        } else {
            form = document.getDocumentElement();
            addForm(developmentProposal, formBeans, form, userAttachedForm, attachments);
        }
    }
    return formBeans;
}

From source file:org.kuali.kra.proposaldevelopment.budget.service.impl.BudgetSubAwardServiceImpl.java

License:Educational Community License

/**
 * extracts XML from PDF/*from w  ww  .  j  ava  2 s .c  o m*/
 */
protected byte[] getXMLFromPDF(PdfReader reader) throws Exception {
    XfaForm xfaForm = reader.getAcroFields().getXfa();
    Node domDocument = xfaForm.getDomDocument();
    if (domDocument == null)
        throw new Exception("Not a valid pdf form");
    Element documentElement = ((Document) domDocument).getDocumentElement();

    Element datasetsElement = (Element) documentElement.getElementsByTagNameNS(XFA_NS, "datasets").item(0);
    Element dataElement = (Element) datasetsElement.getElementsByTagNameNS(XFA_NS, "data").item(0);

    Element xmlElement = (Element) dataElement.getChildNodes().item(0);

    Node budgetElement = getBudgetElement(xmlElement);

    byte[] serializedXML = XfaForm.serializeDoc(budgetElement);

    return serializedXML;
}

From source file:org.kuali.kra.s2s.service.impl.S2SUserAttachedFormServiceImpl.java

License:Educational Community License

private List<S2sUserAttachedForm> extractAndPopulateXml(DevelopmentProposal developmentProposal,
        PdfReader reader, S2sUserAttachedForm userAttachedForm, Map attachments) throws Exception {
    List<S2sUserAttachedForm> formBeans = new ArrayList<S2sUserAttachedForm>();
    XfaForm xfaForm = reader.getAcroFields().getXfa();
    Node domDocument = xfaForm.getDomDocument();
    if (domDocument == null) {
        S2SException s2sException = new S2SException(KeyConstants.S2S_USER_ATTACHED_FORM_WRONG_FILE_TYPE,
                "Uploaded file is not Grants.Gov fillable form");
        s2sException.setTabErrorKey("userAttachedFormsErrors");
        throw s2sException;
    }// ww  w .j  a va 2 s.c o  m
    Element documentElement = ((Document) domDocument).getDocumentElement();

    Element datasetsElement = (Element) documentElement.getElementsByTagNameNS(XFA_NS, "datasets").item(0);
    Element dataElement = (Element) datasetsElement.getElementsByTagNameNS(XFA_NS, "data").item(0);
    Element grantApplicationElement = (Element) dataElement.getChildNodes().item(0);

    byte[] serializedXML = XfaForm.serializeDoc(grantApplicationElement);
    DocumentBuilderFactory domParserFactory = DocumentBuilderFactory.newInstance();
    domParserFactory.setNamespaceAware(true);
    javax.xml.parsers.DocumentBuilder domParser = domParserFactory.newDocumentBuilder();
    domParserFactory.setIgnoringElementContentWhitespace(true);
    ByteArrayInputStream byteArrayInputStream = null;
    org.w3c.dom.Document document = null;
    try {
        byteArrayInputStream = new ByteArrayInputStream(serializedXML);
        document = domParser.parse(byteArrayInputStream);
    } finally {
        if (byteArrayInputStream != null)
            byteArrayInputStream.close();
    }
    if (document != null) {
        Element form = null;
        NodeList elements = document
                .getElementsByTagNameNS("http://apply.grants.gov/system/MetaGrantApplication", "Forms");
        Element element = (Element) elements.item(0);
        if (element != null) {
            NodeList formChildren = element.getChildNodes();
            int formsCount = formChildren.getLength();
            if (formsCount > 1) {
                //String xpathSelectedForms = "//*[namespace-uri()='http://apply.grants.gov/system/MetaGrantApplicationWrapper' and *[local-name()='SelectedOptionalForms'] " +
                //                  "or @*[namespace-uri()='http://apply.grants.gov/system/MetaGrantApplicationWrapper'  and *[local-name()='SelectedOptionalForms']]]";
                //NodeList selectedFormElements =  XPathAPI.selectNodeList(document,xpathSelectedForms);
                NodeList selectedOptionalFormElements = document.getElementsByTagNameNS(
                        "http://apply.grants.gov/system/MetaGrantApplicationWrapper", "SelectedOptionalForms");
                int selectedOptionalFormsCount = selectedOptionalFormElements == null ? 0
                        : selectedOptionalFormElements.getLength();
                if (selectedOptionalFormsCount > 0) {
                    Element selectedFormNode = (Element) selectedOptionalFormElements.item(0);
                    NodeList selectedForms = selectedFormNode.getElementsByTagNameNS(
                            "http://apply.grants.gov/system/MetaGrantApplicationWrapper", "FormTagName");
                    int selectedFormsCount = selectedForms == null ? 0 : selectedForms.getLength();
                    if (selectedFormsCount > 0) {
                        List seletctedForms = new ArrayList();
                        for (int j = 0; j < selectedFormsCount; j++) {
                            Element selectedForm = (Element) selectedForms.item(j);
                            //NodeList selectedFormNames = selectedForm.getElementsByTagNameNS("http://apply.grants.gov/system/MetaGrantApplicationWrapper","Name-Version");
                            String formName = selectedForm.getTextContent();
                            seletctedForms.add(formName);

                        }
                        List exceptions = new ArrayList();
                        for (int i = 0; i < formsCount; i++) {
                            form = (Element) formChildren.item(i);
                            String formNodeName = form.getLocalName();
                            if (seletctedForms.contains(formNodeName)) {
                                try {
                                    addForm(developmentProposal, formBeans, form, userAttachedForm,
                                            attachments);
                                } catch (UnmarshalException ume) {
                                    exceptions.add("Not able to create xml for the form " + formNodeName
                                            + " Root Cause:" + ume.getMessage() + "<br>");
                                }

                            }
                        }
                        if (!exceptions.isEmpty())
                            throw new S2SException(exceptions.toString());
                    }
                }
            } else {
                form = (Element) formChildren.item(0);
                addForm(developmentProposal, formBeans, form, userAttachedForm, attachments);
            }
        } else {
            form = document.getDocumentElement();
            addForm(developmentProposal, formBeans, form, userAttachedForm, attachments);
        }
    }
    return formBeans;
}

From source file:questions.forms.FillDynamicXfa2.java

public static void main(String[] args) {
    try {//  w ww.j av  a 2 s .c om
        // getting new data from a "datasets" XML snippet
        File file = new File(RESOURCE_DATA);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document newdoc = db.parse(file);
        Element element = newdoc.getDocumentElement();
        NodeList nodelist = element.getElementsByTagNameNS("http://www.xfa.org/schema/xfa-data/1.0/", "data");
        Node newdata = nodelist.item(0);

        // replacing the XFA in an existing document
        PdfReader reader = new PdfReader(RESOURCE_PDF);
        XfaForm xfa = new XfaForm(reader);
        Document doc = xfa.getDomDocument();
        NodeList list = doc.getElementsByTagNameNS("http://www.xfa.org/schema/xfa-data/1.0/", "datasets");
        list.item(0).replaceChild(doc.importNode(newdata, true), list.item(0).getFirstChild());
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
        xfa.setDomDocument(doc);
        xfa.setChanged(true);
        XfaForm.setXfa(xfa, stamper.getReader(), stamper.getWriter());
        stamper.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (DocumentException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    }
}

From source file:questions.forms.ReadXfa2.java

public static void main(String[] args) {
    try {/*from ww  w .  ja v  a  2  s.c o  m*/
        PdfReader reader = new PdfReader(RESOURCE);
        FileOutputStream os = new FileOutputStream(RESULT);
        XfaForm xfa = new XfaForm(reader);
        Document doc = xfa.getDomDocument();
        Transformer tf = TransformerFactory.newInstance().newTransformer();
        tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        tf.setOutputProperty(OutputKeys.INDENT, "yes");
        tf.transform(new DOMSource(doc), new StreamResult(os));
        reader.close();

    } catch (IOException e) {
        e.printStackTrace();
    } catch (TransformerException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    }
}