如何计算元素的高度?

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

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

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

但是这种方法不能正常工作。

你能给我一个想法吗?

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

请看一下FoobarFilmFestival示例。

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

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

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

总高度将是:

 float height = ascent - descent; 

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

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

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

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