如何在PdfPCell中缩进文本

时间:2015-01-10 06:34:21

标签: java itext

我想将文本引入PdfPCell,我希望文本的一部分缩进。 这就是我试过的:

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

结果如下:

TO:

name:

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

TO:

   name:

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

1 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的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

enter image description here

如您所见,结果与预期一致。

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

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

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

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