You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iTextPDF7中getWidthPoint()的等效方法?如何获取文本宽度?

iTextPDF7 获取文本宽度的正确方法

你用getStrokeWidth()找文本宽度完全找错了方法——这个方法是用来设置/获取文本描边(比如文字外轮廓)的线条宽度的,你没设置过描边宽度,自然返回null。

iText7里获取文本宽度常用两种方式:

1. 直接通过PdfFont计算(最简单)

这是最直接的方式,文本宽度由字体、字号、内容决定,直接调用字体的getWidth()方法即可,单位和旧版getWidthPoint()一致,都是点(point):

// testFont是你的PdfFont实例,FONT是字号
float textWidth = testFont.getWidth(" TEST ", FONT);

2. 通过Text对象结合TextMeasurer计算

如果已经构建了Text对象,也可以用TextMeasurer来计算,适合需要结合文本样式场景(比如加粗字体的宽度计算,不过PdfFont的getWidth()已经会自动处理字体样式):

Text text = new Text(" TEST ").setFont(testFont).setFontSize(FONT).setBold();
TextMeasurer measurer = new TextMeasurer(new PdfFontSet());
float width = measurer.getSingleLineWidth(text.getText(), text.getFont(), text.getFontSize());

旧版Chunk.getWidthPoint()的底层逻辑其实和第一种方式一致,iText7把这个功能迁移到了PdfFont类中,更符合职责划分。

内容的提问来源于stack exchange,提问作者komplRX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:02:27