Сначала
Я сомневаюсь, что ваш вклад действительно является файлом RTF. RTF-файл выглядит так
{\rtf1\ansi{\fonttbl\f0\fswiss Helvetica;}\f0\pard
This is some {\b bold} text.\par
}
(из Википедия о расширенном текстовом формате )
Если вы добавите этот файл в свой код, вы получите что-то вроде
что, по-видимому, не то, что вы хотите.
Итак, давайте предположим, что вы вводите простой текст, который вы читаете построчно.
Как предотвратить выпадение пустых строк
Обратите внимание, что Paragraph
, построенный из пустой строки, практически не требует вертикального пробела, например,
doc.add(new Paragraph("1 Between this line and line 3 there is an empty paragraph."));
doc.add(new Paragraph(""));
doc.add(new Paragraph("3 This is line 3."));
doc.add(new Paragraph("4 Between this line and line 6 there is a paragraph with only a space."));
doc.add(new Paragraph(" "));
doc.add(new Paragraph("6 This is line 6."));
( ПустыеПараграфы Тест testEmptyParagraphsForFazriBadri
)
Результаты в
Обратите внимание, что строка 2 фактически отброшена.
Причина в том, что Paragraph(String string)
конструктор - это удобное сокращение,
p = new Paragraph(string);
по существу эквивалентно
p = new Paragraph();
if (string != null && string.length() != 0) {
p.add(new Chunk(string));
}
Таким образом, для new Paragraph("")
блок не добавляется в абзац, он пуст, для его фрагментов не требуется вертикальное пространство.
В таком случае вы можете начать играть с Leading
, SpacingBefore
или SpacingAfter
самого абзаца или окружающих абзацев, но самый простой способ, безусловно, состоит в замене пустой строки ""
на строка, содержащая пробел " "
.
В вашем случае это можно сделать, заменив
while ((line = br.readLine()) != null) {
p = new Paragraph(line, title ? bold : normal);
document.add(p);
}
от
while ((line = br.readLine()) != null) {
p = new Paragraph(line.length() == 0 ? " " : line, title ? bold : normal);
document.add(p);
}