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

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

Introduction

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

Prototype

public static byte[] serializeDoc(Node n) throws IOException 

Source Link

Document

Serializes a XML document to a byte array.

Usage

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

License:Open Source License

/**
 * extracts XML from PDF//  ww  w .  j a va2  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 av a2  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) {
                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 w  w .  ja va  2  s.  co  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;
    }/*from w w  w.  j a v  a 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) {
                //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;
}