如何计算元素的高度?

时间:2014-07-03 08:57:21

标签: java pdf-generation itext

我正在按XML数据生成pdf文件。

我将段落元素的高度计算为:

float paraWidth = 0.0f;
for (Object o : el.getChunks()) {
    paraWidth += ((Chunk) o).getWidthPoint();
}
float paraHeight = paraWidth/PageSize.A4.getWidth();

但是这种方法无效。

你能给我一个想法吗?

2 个答案:

答案 0 :(得分:2)

你的问题很奇怪。根据你问题的标题,你想知道字符串的高度,但你的代码显示你要求字符串的宽度。

请查看FoobarFilmFestival示例。

如果bfBaseFont个实例,那么您可以使用:

float ascent = bf.getAscentPoint("Some String", 12);
float descent = bf.getDescentPoint("Some String", 12);

当我们使用12的字体大小时,这将返回高于基线的高度和高于基线的高度。您可能知道,字体大小表示平均高度。它不是实际的高度。它只是我们合作的一个数字。

总高度为:

float height = ascent - descent;

或者您可能想知道Paragraph占用的行数,并将其与leading相乘。在这种情况下,有不同的可能性。由于你的问题不清楚你想要什么(块的高度,块的宽度,基线的垂直位置,......),你不会得到比已经有的更好的答案给出。如果Chunk中字形的高度不符合您的预期,请重新解释您的问题。

答案 1 :(得分:1)

首先,为什么要迭代将Chunk集合转换为Object?如果此集合的所有元素都是Chunk,请使用:

for (Chunk c : el.getChunks()) {
    paraWidth += c.getWidthPoint();
}

你的意思是说方法不能正常工作?