0

私は PdfPageEventHelper イベントを実装しており、フッターのものは次のとおりです。

             ColumnText.showTextAligned(cb, Element.ALIGN_RIGHT, new Phrase(String.format(" %d ", 
            writer.getPageNumber()),footerFont), 
            document.right() - 2 , document.bottom() - 20, 0);

現在、フッターに追加する必要がある 3 行がありますが、垂直マージンを設定するのに最適なものが見つかりません。(3 LINESごとにフォントサイズが異なります)。何を保持する必要があります - document.bottom() - XXX ??

4

1 に答える 1

0

2 つの行の違いはleading. 独自の行送りを選択できますが、1.5 倍のフォント サイズを使用するのが習慣です。さまざまなフォント サイズを使用して、自分で 1 行ずつ描画しているため、そのフォント サイズに基づいて Y 値を調整する必要があります。追加するテキストのベースラインとして Y 値を使用することに注意してください。そのColumnText.showTextAligned()ため、フォント サイズが 12pt のテキストがある場合は、18pt の行送りを考慮する必要があります。フォント サイズが 8pt の場合は、必ず 12pt にしてください。

それは簡単な解決策です:「慣習」に基づいています。ある特定の要素が占める水平方向のスペースを本当に知りたい場合は、私の本の図 3.7 で行われているように、アセンダーとディセンダーを計算する必要があります。コードはこちらにあります。がbfフォント (BaseFontオブジェクト)、textがテキスト (a String)、sizeがフォント サイズ (a float) の場合、テキストの高さは次のようになりますheight

float aboveBaseline = bf.getAscentPoint(text, size);
float underBaseline = bf.getDescentPoint(text, size);
float height = aboveBaseline - underBaseline;

yY 座標が使用される場合は、とshowTextAligned()の間のスペースを確保してください。これが正確な解決策です。y + aboveBaseliney + underBaseline

document.bottom() - 20やや奇妙に見えることに注意してください。document.bottom() + 20PDF座標系のY軸が下向きではなく上向きであることを期待します。

于 2013-09-17T13:54:19.427 に答える