如何更正显示对齐段落Docx4j的最后一行

时间:2019-04-10 14:19:18

标签: java docx4j

我有一个用PPr对象对齐的段落。所有段落都是合理的,但最后一行没有。

我知道有必要在最后一行之后使用LineBreak来给出正确的理由。我尝试使用设置了JC对象的PPr,但是不起作用

   PPr bothPPr = factory.createPPr();
   Jc justified = factory.createJc();
   bothPPr.setJc(justified);
   P p = factory.createP();
   R r = factory.createR();
   Text t = factory.createText();
   t.setValue("Long text here...");
   r.getContent().add(t);
   r.getContent().add(factory.createBr());
   p.getContent().add(r);
   p.setPPr(bothPPr);

所有文字均正确对齐,但最后一行不是。

我最后一个实际的对齐行:

This       is         my         last         line

但是我想要

This is my last line

打开生成的docx文件后,我可以看到错误的理由。但是,如果我在行尾按Enter键,则说明行之有效。

1 个答案:

答案 0 :(得分:0)

事实证明,实际上存在一个模糊的compat设置,它将提供您想要的行为。来自https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc844177%28v%3Doffice.14%29

  

[ISO / IEC 29500-1第一版]

     

17.15.3.5 doNotExpandShiftReturn(不要证明以软换行符结尾的行是正确的)

     

此元素指定应用程序是否应充分证明   当   父段使用jc元素(第17.3.1.13节)完全合理。

     

通常,应用程序应充分说明段落中的所有行   当使用jc元素指定该设置时,除了   段落的最后一行(以段落标记结尾的行)。   当此元素的val属性值为true时(或   等价),指定以换行符结尾的任何行   当该段规定   设置。