package xxx; import java.util.List; import javax.xml.bind.JAXBException; import org.docx4j.XmlUtils; import org.docx4j.model.structure.SectionWrapper; import org.docx4j.openpackaging.exceptions.Docx4JException; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.parts.WordprocessingML.HeaderPart; import org.docx4j.wml.P; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class WatermarkUtils { private static Logger logger = LoggerFactory.getLogger(WatermarkUtils.class); /*********************************************************************** * Adds the water mark on document. * * @param wmlPackage the wml package * @param backgroundTxt the background txt * @throws JAXBException the JAXB exception * @throws Docx4JException **********************************************************************/ public static void addWaterMarkOnDocument(final WordprocessingMLPackage wmlPackage, final String backgroundTxt) throws JAXBException, Docx4JException { List sections = wmlPackage.getDocumentModel().getSections(); int i = 1; for (SectionWrapper sec : sections) { logger.info(String.format("check sections for headerparts: - idx %s", i)); if (!sec.getSectPr().getEGHdrFtrReferences().isEmpty()) { HeaderPart part = sec.getHeaderFooterPolicy().getFirstHeader(); if (part == null) { part = sec.getHeaderFooterPolicy().getDefaultHeader(); if (part != null) { logger.info(String.format("default headerPart found - idx %s", i)); part.getContent().add(getPForHdr(backgroundTxt)); } } else { logger.info(String.format("first headerPart found - idx %s", i)); part.getContent().add(getPForHdr(backgroundTxt)); } } i++; } } /** * Gets the p for hdr. * * @param backgroundTxt the background txt * @return the p for hdr * @throws JAXBException the JAXB exception */ private static P getPForHdr(final String backgroundTxt) throws JAXBException { String joinToken = " "; int quantifier = 5; String txtToken = ""; for (int i = 0; i < quantifier; i++) { txtToken += backgroundTxt + joinToken; } txtToken = txtToken.substring(0, txtToken.length() - joinToken.length()); String bounds = "margin-left:-3pt;margin-top:-20pt;width:518pt;height:750pt"; String txtColor = "#ddd8c2"; StringBuffer xmlBuf = new StringBuffer(); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append( ""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append( ""); xmlBuf.append(""); xmlBuf.append(""); xmlBuf.append(""); return (P) XmlUtils.unmarshalString(xmlBuf.toString()); } }