如何计算iText中的字符串宽度?

Mem*_*eak 22 pdf pdf-generation itext text-width

我正在使用iText写一个PDF.在某些情况下,我需要使用该SetVisibleSignature功能对PDF进行签名.使用此功能,我们需要指定要将内容写入的矩形.

但是我很难计算出字符串的宽度,这样我就可以在设置PDF上的签名之前设置矩形.

如何计算iText中的字符串宽度?

Jan*_*tis 27

您可以使用BaseFont.getWidthPoint(String text, float fontSize)获取pt中字符串的宽度.

或者将字符串放入Chunk并执行 chunk.getWidthPoint()

  • @PavelVlasov我删除了关于此方法是静态的评论.显然,它不是静态的,没有任何意义是静态的.你是对的. (2认同)

rve*_*ach 16

接受的答案BaseFont.getWidthPoint在itext 5.5.4中不起作用,因为该方法不再是静态的.即使它仍然存在,它也没有考虑所使用的真实字体(它的系列或其粗体/斜体),因为它是静态的并且正在接收有限的参数.

chunk.getWidthPoint() 确实可以使用真正的字体,如下所述,但对于某些用途而言,为宽度不断创建一个块是一种浪费,特别是如果以后没有计划使用块.

chunk.getWidthPoint()假设您没有进行任何水平扩展,这是用作独立替代的基础代码:

font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());
Run Code Online (Sandbox Code Playgroud)