我正在使用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
);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top