【发布时间】:2019-04-02 01:32:43
【问题描述】:
为什么 Java 会删除段落之间的空格?我正在使用 iText5 将 .rtf 文件转换为 PDF。该文件包含报告,每个报告都在其自己的页面上。转换后,段落之间的空格被删除,使得分页与转换前不同。
我尝试使用 Rectangle 设置页面大小,但由于报表的行数不同,一些报表仍与其他报表共享同一页面。
//Set PDF layout
//Rectangle rectangle = new Rectangle (0, 0, 1350, 16615);
Document document = new Document(PageSize.A4.rotate());
document.setMargins(13, 0, 10, 10);
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
br = new BufferedReader(new FileReader(TEXT));
String line;
Paragraph p;
//PDF font configuration
Font normal = new Font(FontFamily.COURIER, 5);
Font bold = new Font(FontFamily.COURIER, 5, Font.BOLD);
//add page to PDF
boolean title = true;
while ((line = br.readLine()) != null) {
p = new Paragraph(line, title ? bold : normal);
document.add(p);
}
document.close();
我不希望程序删除段落之间的空格。
【问题讨论】:
-
你可以尝试用\u00a0替换你的空格。
-
Java 没有做任何事情;您用来完成此操作的库是原因,如果没有要禁用的设置,您需要分叉它(假设它是开源的)并自己修改代码。
-
我使用不同的库将.rtf转换为.pdf格式,但原理是一样的。 1. 将 .rtf 文档中的空白段落转换为换行符。 将正则表达式
^$替换为QQQ,然后将QQQ 替换为\n。将^$直接转换为\n会更快,但我的文字处理器不允许我一步完成。 2. 拥有完美格式的 .rtf 后,我将 .rtf 转换为 .pdf。 -
(@karel - 您是在说/暗示问题在于 OP 的“.rtf”文件的格式不正确?不是“符合”RTF?)
-
你确定源文件真的是 rtf 文件吗?在这种情况下,您的结果可能到处都有 rtf 指令。话虽如此,在读取空行的情况下,您至少应该在创建
Paragraph时使用带空格的字符串而不是空行,因为没有内容的段落没有高度......
标签: java itext pdf-generation