使用 docx4J 生成文档时用 HTML 值替换内容控件

问题描述 投票:0回答:1

我的要求是使用docx4j将文档中的特定内容控件替换为HTML文本。我希望看到替换的文本以保留最终文档的格式。

我编写了一些代码,我能够识别要替换的标签/内容控件,但我无法找到任何逻辑来替换那里的 HTML 文本。任何帮助将不胜感激。请参阅下面我的代码

另外,如果我做错了什么,请告诉我。我的最终目标是拥有一个在不同位置具有多个内容控件以及静态文本的模板。生成文档时,所有内容控件都应替换为相应的 html 文本(可以长达一个段落)。

htmlText: \<p\>This is \<strong\>sample\</strong\> HTML \<u\>text\</u\>.
// Find specific content control element 

try{
 org.docx4j.wml.Document wmlDocumentEl = mainDocumentPart.getJaxbElement();
  org.docx4j.wml.Body body =  wmlDocumentEl.getBody();
        List<Object> blockLevelElements = body.getEGBlockLevelElts();

        int indexToReplace = -1;
 
        for (int i = 0; i < blockLevelElements.size(); i++) {
            Object o = blockLevelElements.get(i);
            if (o instanceof SdtBlock) {
                SdtBlock sdtBlock = (SdtBlock) o;
                Tag tag = sdtBlock.getSdtPr().getTag();
                if (tag != null && tag.getVal().equals(tagName)) {
                    indexToReplace = i;
                  
                    break;
                }
            }
        }

// Replace identified element with HTML text

        if (indexToReplace != -1) {
           
           blockLevelElements.remove(indexToReplace);

          // Here we need logic to replace the identified tag with HTML text.        
        
    
       }   else {
            throw new RuntimeException("Content control with tag '" + tagName + "' not found.");
        }
      
    }
  
catch(Exception ex) {
  oLog.error("Failed to replace Content Controls"+ ex);
}
java docx4j
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.