1 回答

TA贡献1802条经验 获得超5个赞
首先
我怀疑您的输入真的是一个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."));
结果
观察第 2 行是否被有效删除。
原因是构造函数是一个方便的快捷方式,Paragraph(String string)
p = new Paragraph(string);
本质上等效于
p = new Paragraph();
if (string != null && string.length() != 0) {
p.add(new Chunk(string));
}
因此,对于没有将块添加到段落中,它是空的,其块不需要垂直空间。new Paragraph("")
在这种情况下,您可以开始使用段落本身或周围段落的,或,但最简单的方法肯定是用包含空格的字符串替换空字符串。LeadingSpacingBeforeSpacingAfter""" "
在您的情况下,可以通过更换
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);
}
添加回答
举报