Now to the main question, I have a scenario where I have to find for a certain place holder and then replace it with bullet list. I have searched and found several threads in this forum that very useful. As a result, I have been able to replace text with text and create my own bullet list. Here is some of the codes I gather so far.
First, the bullet list:
- Code: Select all
- WordprocessingMLPackage template = WordprocessingMLPackage.load("Some File.docx");
 NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
 template.getMainDocumentPart().addTargetPart(ndp);
 ndp.setJaxbElement((Numbering) XmlUtils.unmarshalString(initialNumbering));
 P p = createNumberedParagraph(1, 0, "Entry #1");
 template.getMainDocumentPart().addObject(p);
With the createNumberedParagraph function being:
- Code: Select all
- P createNumberedParagraph(long numId, long ilvl, String paragraphText ) {
 ObjectFactory factory = new org.docx4j.wml.ObjectFactory();
 P p = factory.createP();
 
 org.docx4j.wml.Text t = factory.createText();
 t.setValue(paragraphText);
 
 org.docx4j.wml.R run = factory.createR();
 run.getContent().add(t);
 
 p.getContent().add(run);
 
 org.docx4j.wml.PPr ppr = factory.createPPr();
 p.setPPr( ppr );
 
 // Create and add <w:numPr>
 NumPr numPr = factory.createPPrBaseNumPr();
 ppr.setNumPr(numPr);
 
 // The <w:ilvl> element
 Ilvl ilvlElement = factory.createPPrBaseNumPrIlvl();
 numPr.setIlvl(ilvlElement);
 ilvlElement.setVal(BigInteger.valueOf(ilvl));
 
 // The <w:numId> element
 NumId numIdElement = factory.createPPrBaseNumPrNumId();
 numPr.setNumId(numIdElement);
 numIdElement.setVal(BigInteger.valueOf(numId));
 
 return p;
 }
While the replace text with text code looks like this:
- Code: Select all
- WordprocessingMLPackage template = WordprocessingMLPackage.load(new File("Some File.docx"));
 // Replacing place holders with text only values
 List<Object> texts = template.getMainDocumentPart().getJAXBNodesViaXPath(xpath, true);
 for (Object obj : texts) {
 Text text = (Text) ((JAXBElement) obj).getValue();
 text.setValue(replacePH(text, "\\$\\{PlaceHolder1\\}", "Value1"));
 text.setValue(replacePH(text, "\\$\\{PlaceHolder2\\}", "Value2"));
 }
 String replacePH(Text text, String placeHolder, String inputValue) {
 return text.getValue().replaceAll(placeHolder, inputValue);
 }
Is there any way I can modify these codes so it replaces the place holder text with numbered list I created? Any help is highly appreciated.
Thanks in advance.


 News
 News Site map
 Site map SitemapIndex
 SitemapIndex RSS Feed
 RSS Feed