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
相关产品推荐
相关产品推荐

