Обтекание моих Paragraph
объектов в другом Paragraph
объекте дает желаемый результат, но кажется странным
Хотя это действительно может показаться странным, оно работает и является вариантом использования, явно рассмотренным в коде. (Например, посмотрите на код Paragraph.breakUp()
и унаследованный Phrase.process(ElementListener).
)
и я боюсь, что заключительный абзац может привести к дополнительным полям в документе
Это происходит только в том случае, если вы попросите об этом (используя setIndentationLeft(float)
/ setIndentationRight(float)
/ setSpacingAfter(float)
/ setSpacingBefore(float)
). Таким образом, у вас есть опция для добавления дополнительного отступа, но вы не невольно подвергаете нежелательному дополнительному отступу.
С другой стороны, если вы хотите быть на 100% уверены, что не может быть никакого нежелательного влияния, вы можете просто вернуть заказанный Iterable<Element>
, например. ArrayList<Element>
и измените добавление к документу на forEach
вызов:
private Iterable<Element> createAspectA() {
ArrayList<Element> wrapper = new ArrayList<>();
wrapper.add(new Paragraph("Aspect A.1"));
wrapper.add(new Paragraph("Aspect A.2"));
wrapper.add(new Paragraph("Aspect A.3"));
return wrapper;
}
и заменить
doc.add(createAspectA());
от
for (Element e : createAspectA()) doc.add(e);
(К сожалению, doc.add
выдает помеченные исключения, в противном случае это могло бы быть createAspectA().forEach(doc::add)
.)