List of usage examples for com.lowagie.text.pdf XfaForm serializeDoc
public static byte[] serializeDoc(Node n) throws IOException
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; }