0

itext v5.5.3 で大きなテーブルを含む pdf を作成しようとしています。

私は欲しい :

  • メモリ管理
  • 繰り返しヘッダー (1 行)
  • 行分割の無効化

以下のコードでは、すべて正常に動作します。

    Document document = new Document(PageSize.LETTER);
    PdfWriter.getInstance(document, baos);

    document.open();
    PdfPTable table = new PdfPTable(5);
    table.setHeaderRows(1);
    //table.setSplitRows(false);
    //table.setComplete(false);

    for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}     

    for (int i = 0; i < 500; i++) {
        table.addCell("Test " + i);
        //if (i%5 == 0) {document.add(table);}
     }

    //table.setComplete(true);
    document.add(table);
    document.close();

メモリ管理を追加すると (5 セルごとにドキュメントにテーブルを追加する)、最初のヘッダーが失われます:

    Document document = new Document(PageSize.LETTER);
    PdfWriter.getInstance(document, baos);

    document.open();
    PdfPTable table = new PdfPTable(5);
    table.setHeaderRows(1);
    //table.setSplitRows(false);
    table.setComplete(false);

    for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}     

    for (int i = 0; i < 500; i++) {
        table.addCell("Test " + i);
        if (i%5 == 0) {document.add(table);}
    }

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

メモリ管理 + setSplitRows(false) を追加すると、すべてのヘッダーといくつかの行が失われます。

    Document document = new Document(PageSize.LETTER);
    PdfWriter.getInstance(document, baos);

    document.open();
    PdfPTable table = new PdfPTable(5);
    table.setHeaderRows(1);
    table.setSplitRows(false);
    table.setComplete(false);

    for (int i = 0; i < 5; i++) {table.addCell("Header " + i);}     

    for (int i = 0; i < 500; i++) {
        table.addCell("Test " + i);
        if (i%5 == 0) {document.add(table);}
    }

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

私はいくつかのテストを行いましたが、itext バージョン 2.1.7.js2 では、3 つのテスト ケースすべてが正しく機能しています。

それで、バグかバグでないか?これを機能させるにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

これは確かにリグレッションだったので、この問題の修正を iText ライブラリに追加しました。(リビジョン 6630)。

これは、2 ~ 3 週間後に予定されている 5.5.4 リリースに含まれる予定です。

于 2014-12-04T11:00:16.393 に答える