0

iText 5.1.3 を使用しています。ドキュメントに追加されたときに正常に実装された完全なリストが示すように、ColumnText のリストは完全ではありません。行のコメントを外すと:

// list2.add(new ListItem(new Chunk("Level 2 - Item 3")));

どちらも同じように見えます。ただし、私が望むリスト形式は、行を完全に削除したものです。

public class TestList
{

    public static void main(String[] args) throws IOException, DocumentException
    {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("testlist.pdf"));
        document.open();
        List list1 = new List(List.ALPHABETICAL, 20);
        list1.add(new ListItem(new Chunk("Level 1 - Item 1")));
        list1.add(new ListItem(new Chunk("Level 1 - Item 2")));
        list1.add(new ListItem(new Chunk("Level 1 - Item 3")));

        List list2 = new List(List.ORDERED, 20);
        list2.add(new ListItem(new Chunk("Level 2 - Item 1")));
        list2.add(new ListItem(new Chunk("Level 2 - Item 2")));

        List list3 = new List(List.ORDERED, 20);
        list3.add(new ListItem(new Chunk("Level 3 - Item 1")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 2")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 3")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 4")));
        list2.add(list3);

        // list2.add(new ListItem(new Chunk("Level 2 - Item 3")));
        list1.add(list2);

        list1.add(new ListItem(new Chunk("Level 1 - Item 4")));
        document.add(list1);
        document.newPage();

        ColumnText cols = new ColumnText(writer.getDirectContent());
        cols.setSimpleColumn(36, 36, 549, 806);
        cols.addElement(list1);
        cols.go();

        document.close();
    }
}

ColumnText でもこの望ましい動作を取得するにはどうすればよいですか。考えられることはすべて試しましたが、途方に暮れています。

4

1 に答える 1

0

なぜそれが機能するのかわかりませんが、私はただ遊んでいて、コメント化された行をlist2.add( "");に変更するとします。期待どおりに動作します。しかし、私にはハックのように思えます。最終的なコードは次のようになります。

public class TestList
{

    public static void main(String[] args) throws IOException, DocumentException
    {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("testlist.pdf"));
        document.open();
        List list1 = new List(List.ALPHABETICAL, 20);
        list1.add(new ListItem(new Chunk("Level 1 - Item 1")));
        list1.add(new ListItem(new Chunk("Level 1 - Item 2")));
        list1.add(new ListItem(new Chunk("Level 1 - Item 3")));

        List list2 = new List(List.ORDERED, 20);
        list2.add(new ListItem(new Chunk("Level 2 - Item 1")));
        list2.add(new ListItem(new Chunk("Level 2 - Item 2")));

        List list3 = new List(List.ORDERED, 20);
        list3.add(new ListItem(new Chunk("Level 3 - Item 1")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 2")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 3")));
        list3.add(new ListItem(new Chunk("Level 3 - Item 4")));
        list2.add(list3);

        list2.add(""); // Changed line.
        list1.add(list2);

        list1.add(new ListItem(new Chunk("Level 1 - Item 4")));
        document.add(list1);
        document.newPage();

        ColumnText cols = new ColumnText(writer.getDirectContent());
        cols.setSimpleColumn(36, 36, 549, 806);
        cols.addElement(list1);
        cols.go();

        document.close();
    }
}

レベル2でリストを閉じることと関係があるに違いありません。私はこの質問をあちこちで見ましたが、答えることはありませんでした。誰かがこれが役立つことを願っています。

于 2012-11-06T19:03:25.680 に答える