2016-09-07 10 views
0

私はフレームを持っていて、フレームに複数行のテキストを書くのにBlockComposerを使います。行のテキストはユーザー入力によって決定されるので、それらに含まれる文字の数は事前にわかりません。テキストがフレームに収まるかどうかを判断する方法は?

すべての線がフレームに収まるかどうか、またはフレームの高さがオーバーフローするかどうかをどのように知ることができますか?

pdfclownのJavaを使用して、以下のScalaで書かれている例:

var frame = new Rectangle2D.Double(
    0, 0, 
    availableWidth, 
    availableHeight 
) 

for (line <- lines) { 
    blockComposer.begin(frame,XAlignmentEnum.Center,YAlignmentEnum.Top) 
    blockComposer.showText(line) 
    blockComposer.showBreak() 
    blockComposer.end() 
} 

答えて

0

BlockComposer.showTextとして文書化されている:あなたのlineは、現在の作曲領域に収まらない可能性がある場合、

/** 
    Shows text. 
    <p>Default line alignment is applied.</p> 

    @param text Text to show. 
    @return Last shown character index. 
*/ 
public int showText(String text) 

したがって、あなたこのように表示する必要があります(Javaの場合):

int charsWritten; 
while ((charsWritten = blockComposer.showText(line)) < line.length()) 
{ 
    line = line.substring(charsWritten); 
    ... finish current blockComposer here, 
    ... start a new one (on a new page if need be) 
}