如何在 PdfPCell 中缩进文本

How to indent text inside a PdfPCell

我想在 PdfPCell 中引入文本,并且我希望缩进部分文本。 这是我试过的:

PdfPCell cell21 = new PdfPCell(new Phrase("TO:\n\n   name"));
cell21.setColspan(3);
cell21.setFixedHeight(45f);
table.completeRow();

结果如下所示:

TO:

name:

但我希望它看起来像这样:

TO:

   name:

换句话说:我在 "name" 前面添加的空格丢失了。我该如何解决这个问题?

您使用的是哪个版本的 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 个单元格的 table,其中两个处于文本模式(前两个),两个处于复合模式(后两个)。这导致文件:indentation_in_cell.pdf:

如您所见,结果符合预期。

在第一个单元格中,我们按照您的方式使用了 "TO:\n\n name"。保留了空格,尽管之前的版本可能存在导致空格丢失的错误。

在第二个单元格中,我们使用 "TO:\n\n\u00a0\u00a0\u00a0name" 引入 ALT+0160 字符,正如@RC 在评论中所建议的那样。

在第三个单元格中,我们切换到复合模式,并引入了 10pt 的缩进,而不是使用空格。复合模式意味着 iText 不再查看单元格的属性,而是查看组成单元格的元素的属性。

在第四个单元格中,我们更改包含文本的 Paragraph 的缩进。如您所见,它现在在右侧显示轮廓。