package com.unirisx.poc; import org.docx4j.customXmlProperties.DatastoreItem; import org.docx4j.customXmlProperties.SchemaRefs; import org.docx4j.jaxb.Context; import org.docx4j.model.datastorage.CustomXmlDataStorage; import org.docx4j.model.datastorage.CustomXmlDataStorageImpl; import org.docx4j.openpackaging.exceptions.InvalidFormatException; import org.docx4j.openpackaging.parts.CustomXmlDataStoragePart; import org.docx4j.openpackaging.parts.CustomXmlDataStoragePropertiesPart; import org.docx4j.openpackaging.parts.Part; import org.docx4j.openpackaging.parts.relationships.RelationshipsPart; import org.docx4j.wml.*; import org.w3c.dom.Document; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.util.UUID; /** * Created by manishc on 15-05-2017. */ public class Helper { // Helper methods public static CustomXmlDataStoragePart injectCustomXmlDataStoragePart(Part parent, File inputXmlFile) throws Exception { CustomXmlDataStoragePart customXmlDataStoragePart = new CustomXmlDataStoragePart(); // Defaults to /customXml/item1.xml CustomXmlDataStorage data = new CustomXmlDataStorageImpl(); data.setDocument(createCustomXmlDocument(inputXmlFile)); customXmlDataStoragePart.setData(data); parent.addTargetPart(customXmlDataStoragePart, RelationshipsPart.AddPartBehaviour.RENAME_IF_NAME_EXISTS); return customXmlDataStoragePart; } public static Document createCustomXmlDocument(File xmlFile) throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document domDocument = documentBuilder.parse(xmlFile); return domDocument; } public static String addPropertiesPartForSimpleBind(CustomXmlDataStoragePart customXmlDataStoragePart, String namespace) throws InvalidFormatException { CustomXmlDataStoragePropertiesPart customDataStoragePart = new CustomXmlDataStoragePropertiesPart(); org.docx4j.customXmlProperties.ObjectFactory of = new org.docx4j.customXmlProperties.ObjectFactory(); DatastoreItem dsi = of.createDatastoreItem(); String newItemId = "{" + UUID.randomUUID().toString().toUpperCase() + "}"; dsi.setItemID(newItemId); SchemaRefs srefs = of.createSchemaRefs(); dsi.setSchemaRefs(srefs); SchemaRefs.SchemaRef sref = of.createSchemaRefsSchemaRef(); sref.setUri(namespace); srefs.getSchemaRef().add(sref); customDataStoragePart.setJaxbElement(dsi); customXmlDataStoragePart.addTargetPart(customDataStoragePart, RelationshipsPart.AddPartBehaviour.RENAME_IF_NAME_EXISTS); return newItemId; } public static SdtRun createSdtRun() { return getWmlObjectFactory().createSdtRun(); } public static ObjectFactory getWmlObjectFactory() { return Context.getWmlObjectFactory(); } public static SdtPr createSdtPr() { return getWmlObjectFactory().createSdtPr(); } public static Tr createTr() { return getWmlObjectFactory().createTr(); } public static TblGridCol createTblGridCol() { return getWmlObjectFactory().createTblGridCol(); } public static TblGrid createTblGrid() { return getWmlObjectFactory().createTblGrid(); } public static CTTblLook createTblLook() { return getWmlObjectFactory().createCTTblLook(); } public static TblWidth createTblWidth() { return getWmlObjectFactory().createTblWidth(); } public static CTTblPrBase.TblStyle createTblStyle() { return getWmlObjectFactory().createCTTblPrBaseTblStyle(); } public static TblPr createTblPr() { return getWmlObjectFactory().createTblPr(); } public static Tbl createTbl(){ return getWmlObjectFactory().createTbl(); } public static Text createText() { return getWmlObjectFactory().createText(); } public static R createR(){ return getWmlObjectFactory().createR(); } public static P createP() { return getWmlObjectFactory().createP(); } public static TblWidth createTcW() { return getWmlObjectFactory().createTblWidth(); } public static TcPr createTcPr() { return getWmlObjectFactory().createTcPr(); } public static Tc createTC(){ return getWmlObjectFactory().createTc(); } public static CTDataBinding createDataBinding(){ return getWmlObjectFactory().createCTDataBinding(); } public static Id createId(){ return getWmlObjectFactory().createId(); } public static CTSdtContentRun createCTSdtContentRun() { return getWmlObjectFactory().createCTSdtContentRun(); } public static Tag createTag() { return getWmlObjectFactory().createTag(); } public static SdtPr.Alias createSdtPrAlias() { return getWmlObjectFactory().createSdtPrAlias(); } }