-1

すべての従業員とその給与のリストを示す 1 つの PDF ファイルを作成しています。ページの最後には、すべての給与の合計が表示されます。

for ループを使用して複数の行をテーブルに追加しています。

問題は、行の最後で、合計給与が同じページに収まらず、次のページに表示されることです。

ページの高さを計算して、各セルの高さを修正する方法はありますか? それに応じて、行数を制限します。

そのため、ページの最後に合計行数を表示し、次のページからさらにレコードを表示できます。

4

1 に答える 1

2

Documentページの高さを計算します。オブジェクトを作成するときに、ページのサイズを決定します。お好きなサイズをお選びいただけます。

a : の高さを計算します。これについては、私の本PdfPTableの第 4 章で説明しています。を作成するときは、メモリ内にのみ存在し、ページ サイズについて何も知らないオブジェクトにオブジェクトを追加します。デフォルトでは、幅は、追加するページの使用可能な幅のパーセンテージとして表されます。を特定の に追加した場合にのみ、正確な幅と高さが計算されます (これでは遅すぎます)。PdfPTablePdfPCellPdfPTablePdfPTableDocument

事前に高さを知りたい場合は、絶対幅 (パーセンテージではなく) を定義する必要があります。内容が同じで幅が異なる表は、高さが異なります。絶対幅の定義は次のように行います:

table.setTotalWidth(width);
table.setLockedWidth(true);

このスニペット ( TableHeightの例から取得) ではwidth、ページの幅から左右の余白を引いた値に等しくなります。オブジェクトの作成時に、ページの幅と余白を定義していDocumentます。デフォルトでは、ページ サイズは A4 であるため、デフォルトの幅は 595 ユーザー単位であり、デフォルトの余白は 36 ユーザー単位です。

したがって、問題を解決する1つの方法は、ループに行を追加し、メソッドを使用して各行の高さを計算するgetRowHeight()か、メソッドを使用してテーブル全体のgetTotalHeight()高さを計算することです(合計の高さの設定を省略した場合、両方のメソッドは0を返します) )。集計行を追加するのに十分なスペースがないことがわかった場合は、deleteLastRow()メソッドを使用して最後の行を削除し、次のページの新しいテーブルに新たに作成できます。

それが一つの解決策です。別の解決策として、テーブル イベントとセル イベントを使用することもできますが、それを説明するのはより困難です。

于 2013-04-04T13:08:42.650 に答える