Как исправить отображение последней строки выровненного абзаца Docx4j - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть параграф, оправданный объектом PPr. Весь абзац обоснован, но последняя строка нет.

Я знаю, что необходимо использовать LineBreak после последней строки, чтобы дать правильное обоснование. Я пытаюсь с PPr с установленным объектом JC, но не работает

   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, я вижу неправильное обоснование. Но если я нажму кнопку «Ввод» в конце строки, выравнивание будет работать хорошо.

1 Ответ

0 голосов
/ 15 апреля 2019

Оказывается, на самом деле есть неясные настройки компата, которые дадут желаемое поведение.От https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc844177%28v%3Doffice.14%29

[ИСО / МЭК 29500-1, 1-е издание]

17.15.3.5 doNotExpandShiftReturn (Не оправдывать окончание строк в разрыве мягкой линии)

Этот элемент указывает, должны ли приложения полностью оправдывать содержимое неполных строк, которые заканчиваются мягким разрывом строки, когда родительский абзац полностью выравнивается с использованием элемента jc (§17.3.1.13).

Как правило, приложения должны полностьюВыровнять все строки в абзаце, когда этот параметр указан с помощью элемента jc, за исключением последней строки в абзаце (строки, заканчивающейся знаком абзаца).Этот элемент, если он присутствует со значением атрибута val, равным true (или эквивалентным ему), указывает, что любая строка, заканчивающаяся разрывом мягкой строки, также не может быть полностью выровнена, если в абзаце указан этот параметр.

...