java - 如何使用 DOCX4J 在 docx 文件生成中应用新行

标签 java file newline documentation-generation docx4j

根据我看过的教程。我学习了如何在生成 docx 文件时添加文本。但后来每次我添加一行文字。我注意到第一行文本和第二行文本之间总是有一个空格。就像按回车键两次一样。我知道主要原因是每次添加一行文本时,我都会使用一个段落。一个段落在另一个段落之后以空格开头。

这是我添加文本的方式

ObjectFactory factory;
factory = Context.getWmlObjectFactory();
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
P spc = factory.createP();
R rspc = factory.createR();
rspc.getContent().add(wordMLPackage.getMainDocumentPart().createParagraphOfText("sample"));
spc.getContent().add(rspc);

java.io.InputStream is = new java.io.FileInputStream(file);
wordMLPackage.getMainDocumentPart().addObject(spc);

所以这段代码成功运行并产生了正确的输出。但是当我添加另一段时。或文字。我希望它位于文本的第一行下方。有什么方法可以在不使用段落的情况下添加一行简单的文本?提前致谢

编辑:我也试过像这样添加一个简单的 org.docx4j.wml.Text

Text newtext = factory.createText();
newtext.setValue("sample new text");
wordMLPackage.getMainDocumentPart().addObject(newtext);

程序会运行,但是当我打开生成的docx文件时,它只会提示一条消息说内容有问题。

最佳答案

下面的代码将逐行生成输出。

关键是在 Text(2) ->paragraph1 之后添加 Text(1) ->paragraph1 和 Br ->paragraph1

Br 是类似于TextP 的元素。通过使用它我们可以换行。

ObjectFactory factory = Context.getWmlObjectFactory();
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
        .createPackage();

P spc = factory.createP();
R rspc = factory.createR();

Text t1 = factory.createText();
t1.setValue("tset");
rspc.getContent().add(t1);
Br br = factory.createBr(); // this Br element is used break the current and go for next line
rspc.getContent().add(br);
Text t2 = factory.createText();
t2.setValue("\r\n tset2");
rspc.getContent().add(t2);

spc.getContent().add(rspc);

wordMLPackage.getMainDocumentPart().addObject(spc);

wordMLPackage.save(new java.io.File("helloworld.docx"));

输出:

tset2

关于java - 如何使用 DOCX4J 在 docx 文件生成中应用新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16029743/

相关文章:

java - 无法理解为什么这个 Java 程序会产生这样的输出

bash - 'echo' 换行抑制

php - 如何渲染从 mysql 表中获取并在 php 页面中使用的多个段落?

java - 无法在 docker 容器中的 Java 9 Tomcat 9 上进行远程调试

java - 在一个域中进行身份验证并在 Java 中查询另一个域中的用户

javax.xml.bind.MarshalException - 链接异常 : [javax. xml.bind.JAXBException: class ** 其父类(super class)在此上下文中不为人所知

c# - 动态读取文本文件的更改 C#

c++ - 如何从 .t​​xt 文件中读取带有符号 "/"和 ":"的生日?

python - 从 html selenium 中读取元素

python - pyparsing 和换行符