0

以下に、10 行のテーブルを生成する例を示します。最後の行は 2 行を占めます。文書の高さは、テーブル全体に正しく収まるのに必要な高さよりも 2 ポイント小さくなっています。予想どおり、最初のページの最後の行には「Two」という単語が含まれており、「Lines」の部分は別のページに続きます。ただし、生成された PDF では、最後の行のテキストの高さを使用して高さを決定するのではなく、ページのマージン パディングを除いて、ドキュメント全体に合わせて最後の行が拡張されます。table.setExtendLastRow(false, false)テーブルが拡張されるべきではないことを保証するために使用していることに注意してください。それでも、最後の行はとにかく拡張されています。最後の行が拡張されないようにする方法はありますか?

FileOutputStream out = new FileOutputStream(new File("table.pdf"));
Document document = new Document(new Rectangle(612, 242));
PdfWriter.getInstance(document, out);

document.open();

PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100);
table.setSplitLate(false);
table.setSplitRows(true);
table.setExtendLastRow(false, false);

for (int i = 0; i < 10; i++) {
    PdfPCell cell;
    if (i == 9) {
        cell = new PdfPCell(new Phrase("Two\nLines"));
    }
    else {
        cell = new PdfPCell(new Phrase(Integer.toString(i)));
    }
    table.addCell(cell);
}

document.add(table);
document.close();

私が見ている写真をアップロードしました。「Two」という単語の下の間隔が、行内の他のすべての数字の下の間隔と異なることに注意してください。ページ余白の下部まで伸びているように見えます。

最初のページの最後の行の画像がフォントのベースに描画されていない

4

1 に答える 1

0

これは予期された動作であり、iText は現在、このエッジ ケースをサポートしていません。

于 2014-07-30T16:44:02.493 に答える