如何在ITEXT中计算字符串宽度?
-
20-09-2019 - |
题
我正在使用itext编写PDF。在某些情况下,我需要与 SetVisibleSignature
功能。使用此功能,我们需要指定将内容写入内容的矩形。
但是我很难计算字符串的宽度,以便在PDF上设置签名之前,我可以设置矩形。
如何在ITEXT中计算字符串宽度?
解决方案
您可以使用 BaseFont.getWidthPoint(String text, float fontSize)
要在PT中获取字符串的宽度。
或将绳子放在一块中并做 chunk.getWidthPoint()
其他提示
接受的答案 BaseFont.getWidthPoint
, ,由于该方法不再静态,因此无法使用ITEXT 5.5.4工作。即使它仍然存在,它也没有考虑到使用的真实字体(其家庭或大胆/迭代),因为它是静态的,并且收到有限的参数。
chunk.getWidthPoint()
如后来所述,确实可以使用True字体,但是对于某些用途而言,不断为宽度创建一个块是一种浪费,尤其是在以后不计划使用块的情况下。
这是针对的基础代码 chunk.getWidthPoint()
假设您没有进行任何水平缩放:
font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());
我最终这样做了 ColumnText.getWidth( Phrase phrase )
尺寸尺寸 Phrase
在展示之前会 ColumnText.showTextAligned
.
在这个片段中,我使用了 ColumnText.getWidth
尺寸尺寸的字符串长度以将其放置在页面的右上。它在肖像A4中起作用,没有进一步测试。
Phrase phrase = new Phrase( "Bla bla bla!", new Font( FontFamily.HELVETICA, 9 ) );
float width = ColumnText.getWidth( phrase );
ColumnText.showTextAligned (
canvas,
Element.ALIGN_LEFT,
phrase,
canvas.getPdfDocument( ).right( ) - width,
canvas.getPdfDocument( ).top( ) + 9,
0
);
不隶属于 StackOverflow