我正在按XML数据生成pdf文件。
我将段落元素的高度计算为:
float paraWidth = 0.0f;
for (Object o : el.getChunks()) {
paraWidth += ((Chunk) o).getWidthPoint();
}
float paraHeight = paraWidth/PageSize.A4.getWidth();
但是这种方法无效。
你能给我一个想法吗?
答案 0 :(得分:2)
你的问题很奇怪。根据你问题的标题,你想知道字符串的高度,但你的代码显示你要求字符串的宽度。
请查看FoobarFilmFestival示例。
如果bf
是BaseFont
个实例,那么您可以使用:
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();
}
你的意思是说方法不能正常工作?