如何使用DOCX4J中的docx文件生成应用新线(How to apply new line in

2019-08-31 07:46发布

由我所看到的教程。 我学会了如何生成的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文件,它只是提示消息,指出有问题的内容。

Answer 1:

下面将代码会产生出如把一行行。

关键是在这里添加文字(1) - > 1款和Br - > 1款后的文本(2) - > 1款

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"));

OUTPUT:

TSET

值Tset2



Answer 2:

您可以使用ObjectFactory.createBr()创建结尾的新行。

    ObjectFactory factory = Context.getWmlObjectFactory();

    R run = factory.createR();

    Text text1 = factory.createText();
    text1.setValue("asd");
    run.getContent().add(text1);

    Br nl = factory.createBr();
    run.getContent().add(nl);

    Text text2 = factory.createText();
    text2.setValue("efg");
    run.getContent().add(text2);

    P para = factory.createP();
    para.getParagraphContent().add(run);

    WordprocessingMLPackage wordMLPackage =
            WordprocessingMLPackage.createPackage();
    wordMLPackage.getMainDocumentPart().addObject(para);

    wordMLPackage.getMainDocumentPart().addParagraphOfText("p1");
    wordMLPackage.getMainDocumentPart().addParagraphOfText("p2");

    wordMLPackage.save(new File("test.docx"));


文章来源: How to apply new line in docx file generation using DOCX4J