我正在使用iText编写PDF。在某些情况下,我需要使用SetVisibleSignature
函数对PDF进行签名。有了这个函数,我们需要指定我们将写入内容的矩形。如何计算iText中的字符串宽度?
但是我很难计算字符串的宽度,所以我可以在设置PDF上的签名之前设置矩形。
如何计算iText中的字符串宽度?
我正在使用iText编写PDF。在某些情况下,我需要使用SetVisibleSignature
函数对PDF进行签名。有了这个函数,我们需要指定我们将写入内容的矩形。如何计算iText中的字符串宽度?
但是我很难计算字符串的宽度,所以我可以在设置PDF上的签名之前设置矩形。
如何计算iText中的字符串宽度?
您可以使用BaseFont.getWidthPoint(String text, float fontSize)
来获取pt中字符串的宽度。
或将字符串一大块,做chunk.getWidthPoint()
接受的答案BaseFont.getWidthPoint
,不会在iText的5.5.4工作,因为方法是不是静态的了。即使它仍然存在,它不会考虑正在使用的真实字体(它的族或其粗体/斜体),因为它是静态的并且正在接收有限的参数。
chunk.getWidthPoint()
确实可以像后面提到的那样处理真正的字体,但是对于某些用途来说,为了宽度而不断地创建一个块是很浪费的,特别是如果该块不在以后使用。
这是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
);
您如何检索basefont实例? – 2013-10-24 09:05:51
我想知道表中段落的宽度。看来使用块的方法返回错误的值。 – 2013-10-24 09:27:03
getWidthPoint如何静态地知道假定哪种字体? x_X – 2016-03-22 09:07:00