如何对齐标签与其内容?

时间:2015-02-12 21:15:34

标签: itextsharp itext

我有一个标签(例如“东西列表”)和一些内容(例如实际列表)。当我将所有这些添加到PDF时,我得到:

A list of stuff: test A, test B, coconut, coconut, watermelons, apple, oranges, many more 
fruites, carshow, monstertrucks thing

我想更改此内容,以便内容对齐如下:

A list of stuff: test A, test B, coconut, coconut, watermelons, apple, oranges, many more 
                 fruites, carshow, monstertrucks thing, everything is startting on the
                 same point in the line now

换句话说:我希望对内容进行对齐,以便每行都从相同的X位置开始,无论列表中添加了多少项。

1 个答案:

答案 0 :(得分:0)

有许多不同的方法可以达到你想要的效果:看看下面的截图:

Indentation options

此PDF是使用IndentationOptions示例创建的。

在第一个选项中,我们使用带有标签(List)的"A list of stuff: "作为列表符号:

List list = new List();
list.setListSymbol(new Chunk(LABEL));
list.add(CONTENT);
document.add(list);
document.add(Chunk.NEWLINE);

在第二个选项中,我们使用一个段落,我们使用LABEL的宽度作为缩进,但我们更改第一行的缩进以补偿该缩进。

BaseFont bf = BaseFont.createFont();
Paragraph p = new Paragraph(LABEL + CONTENT, new Font(bf, 12));
float indentation = bf.getWidthPoint(LABEL, 12);
p.setIndentationLeft(indentation);
p.setFirstLineIndent(-indentation);
document.add(p);
document.add(Chunk.NEWLINE);

在第三个选项中,我们使用一个包含列的表,我们为其定义绝对宽度。我们使用先前计算的第一列宽度,但我们添加4,因为单元格的默认填充(左和右)等于2.(显然,您可以更改此填充。)

PdfPTable table = new PdfPTable(2);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.setTotalWidth(new float[]{indentation + 4, 519 - indentation});
table.setLockedWidth(true);
table.addCell(LABEL);
table.addCell(CONTENT);
document.add(table);

可能还有其他方法可以达到相同的效果,您可以随时调整上述选项。由您决定哪种选项最适合您的情况。