如何使用iTextSharp版本7在实际渲染之前模拟文本元素的宽度

时间:2016-09-19 15:52:56

标签: itext7

在我的一个要求中,我希望在文本元素呈现在页面上之前获得文本元素的宽度。

在iText第5版中,应用的方式是 (new Chunk(“Test Text”,SomeFont))。GetWidthPoint()

但是在版本7中,我无法找到与此相匹配的任何内容。 我试过了:

(新段落(“Some Text”))。GetWidth(),但这会返回null

对此的任何帮助都会非常明显。

提前致谢!!

1 个答案:

答案 0 :(得分:0)

一个选项是查询有问题的字体:

String text = ...;
float fontSize = ...;
PdfFont font = ...;
GlyphLine glyphLine = font.createGlyphLine(text);

int width = 0;
for (int i = 0; i < glyphLine.size(); i++)
{
    Glyph glyph = glyphLine.get(i);
    width += glyph.getWidth();
}

float userSpaceWidth = width * fontSize / 1000.0f;

System.out.printf("The width of '%s' is %s text space units.\n", text, width);
System.out.printf("For a font size %s, therefore, this is %s unscaled user space units.\n", fontSize, userSpaceWidth);

DetermineTextWidth.java