您使用的是哪个版本的iText?我已经尝试过你的代码,它按预期工作 . 请看一下IndentationInCell示例:
PdfPTable table = new PdfPTable(1);
PdfPCell cell;
cell = new PdfPCell(new Phrase("TO:\n\n name"));
table.addCell(cell);
cell = new PdfPCell(new Phrase("TO:\n\n\u00a0\u00a0\u00a0name"));
table.addCell(cell);
cell = new PdfPCell();
cell.addElement(new Paragraph("TO:"));
Paragraph p = new Paragraph("name");
p.setIndentationLeft(10);
cell.addElement(p);
table.addCell(cell);
cell = new PdfPCell();
cell.addElement(new Paragraph("TO:"));
p = new Paragraph("name");
p.setAlignment(Element.ALIGN_RIGHT);
cell.addElement(p);
table.addCell(cell);
在这个例子中,我创建了一个包含4个单元格的表格,两个处于文本模式(前两个),两个处于复合模式(最后两个) . 这导致文件:indentation_in_cell.pdf:
如您所见,结果与预期一致 .
在第一个单元格中,我们按照您的方式使用 "TO:\n\n name" . 虽然在以前的版本中可能存在导致空间丢失的错误,但这些空间仍然保留 .
在第二个单元格中,我们使用 "TO:\n\n\u00a0\u00a0\u00a0name" 在评论中引入了@RC建议的ALT 0160字符 .
在第三个单元格中,我们切换到复合模式,我们引入了10pt的缩进而不是使用空格 . 复合模式意味着iText不再查看单元格的属性,而是查看构成单元格的元素的属性 .
在第四个单元格中,我们更改包含文本的 Paragraph 的缩进 . 如您所见,现在已在右侧概述 .