문제

PDF를 작성하기 위해 ITEXT를 사용하고 있습니다. 어떤 경우에는 PDF에 서명해야합니다. SetVisibleSignature 기능. 이 기능을 사용하면 내용을 작성할 사각형을 지정해야합니다.

그러나 문자열이 얼마나 넓은 지 계산하기는 어렵습니다. 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 ) a의 너비 크기 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