一尘不染

如何计算元素的高度?

java

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

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

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

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

你能给我个主意吗?


阅读 359

收藏
2020-12-03

共1个答案

一尘不染

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

请看一下FoobarFilmFestival示例。

如果bfBaseFont实例,则可以使用:

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

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

总高度为:

float height = ascent - descent;

或者,也许您想知道a占用的行数Paragraph并将其乘以leading。在这种情况下,存在不同的可能性。因为从您的问题中尚不清楚您想要什么(块的高度,块的宽度,基线的垂直位置,…),所以您将无法获得比已经给出的更好的答案。如果块中字形的高度不符合您的预期,请重新说明您的问题。

2020-12-03