使用docx4j在字符串生成器中显示docx的所有文本



我需要将docx的所有文本放入字符串生成器中,还需要使用制表符和连字符。我尝试过使用org.docx4j.TextUtils,但在生成的字符串中看不到tab.

String inputfilepath = System.getProperty("user.home") + "test.docx";   
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
org.docx4j.wml.Document wmlDocumentEl = (org.docx4j.wml.Document)documentPart.getJaxbElement();
Writer out = new OutputStreamWriter(System.out);
extractText(wmlDocumentEl, out);
out.close();

根据我在http://www.docx4java.org/forums/docx-java-f6/is-it-possible-to-extract-all-text-also-tab-and-hyphen-t1996.html#p6933?sid=b0d58fec2ba349d0f3f49cf66411397c

正如我所知,制表符和连字符的问题在于它们在docx中没有作为普通字符表示。

选项卡为w:Tab

连字符可能是一个连字符,也可能显示(实际上不在docx中),也可能是:

http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/noBreakHyphen.html

或http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/softHyphen.html

复制Word的连字符行为将是一个挑战。

但对于其他人,我想到了三种方法:

  1. 推广您的遍历方法(您是否使用TraversalUtil.getChildrenImpl?)

  2. 在XSLT中执行(可以在docx4j中执行,但XSLT可能较慢,而且是多种技术的混合)

  3. 将主文档部分封送为字符串,进行适当的字符串替换,然后取消封送,然后使用TextUtils

对于(3),假设MainDocumentPart mdp,将其作为字符串:

String stringContent = mdp.getXML();

然后注入修改后的内容:

mdp.setContents((Document)XmlUtils.unmarshalString(stringContent) );

相关内容

  • 没有找到相关文章

最新更新