24

iText を使用して PDF を作成しています。場合によっては、SetVisibleSignature関数で PDF に署名する必要があります。この関数では、コンテンツを書き込む長方形を指定する必要があります。

しかし、文字列の幅を計算するのは難しいので、PDF に署名を設定する前に四角形を設定できます。

iTextで文字列の幅を計算するにはどうすればよいですか?

4

3 に答える 3

28

BaseFont.getWidthPoint(String text, float fontSize)ptで文字列の幅を取得するために使用できます。

または、文字列をチャンクに入れて実行しますchunk.getWidthPoint()

于 2009-10-26T14:16:58.373 に答える
17

メソッドが静的ではないため、受け入れられた答えBaseFont.getWidthPointは itext 5.5.4 では機能しません。まだ存在していたとしても、使用されている真のフォント (そのファミリまたは太字/斜体) は考慮されません。これは静的であり、限られたパラメーターを受け取るためです。

chunk.getWidthPoint()後で述べるように真のフォントで動作しますが、特定の用途では、特にチャンクが後で使用される予定がない場合、幅のためだけにチャンクを常に作成するのは無駄です。

chunk.getWidthPoint()これは、水平方向のスケーリングを行わないと仮定して、スタンドアロンの代替として使用するための基本的なコードです。

font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());
于 2015-01-29T20:16:11.517 に答える
3

I ended up doing this with ColumnText.getWidth( Phrase phrase ) to size what the width of a Phrase would be before showing it with ColumnText.showTextAligned.

In this snippet, I used the ColumnText.getWidth to size the length of a string to place it top right of a page. It works in portrait A4, haven't tested it further.

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
);
于 2016-12-15T14:55:52.740 に答える