如何创建没有缩进的列表?

时间:2015-10-22 09:43:01

标签: java itext itextpdf

是否可以在没有缩进的情况下创建编号列表? Somethig喜欢这样:

1 A

1-1 A_A

2 B

2-1 B_B

2-1-1 B_B_B

1 个答案:

答案 0 :(得分:0)

请查看ListNumbers示例。

当我们创建这样的有序列表时:

List list1 = new List(List.ORDERED);
list1.setFirst(8);
for (int i = 0; i < 5; i++) {
    list1.add("item");
}
document.add(list1);

我们得到这样的结果:

enter image description here

必要时,在标签和列表项的内容之间添加额外的空间。

您的问题是:我们如何删除此缩进。这是在代码中添加一行的问题:

List list2 = new List(List.ORDERED);
list2.setFirst(8);
list2.setAlignindent(false);
for (int i = 0; i < 5; i++) {
    list2.add("item");
}
document.add(list2);

现在结果如下:

enter image description here

如您所见,在第8项和第9项之后没有添加额外的空间。

这个答案很简单,我无法相信这实际上是整个问题(如果是的话,这意味着你自己没有做任何努力)。看看期望的结果,我认为你在帖子主题中提到了更多的内容。

我明白了:

  • 自定义编号:数字后面没有.
  • 嵌套结构:2,后跟2_1,依此类推。

有序列表的更改列表符号可以使用setPreSymbol()setPostSymbol()方法完成。

看一下这个片段:

List list3 = new List(List.ORDERED);
list3.setFirst(8);
list3.setAlignindent(false);
list3.setPostSymbol(" ");
for (int i = 0; i < 5; i++) {
    list3.add("item");
    List list = new List(List.ORDERED);
    list.setPreSymbol(String.valueOf(8 + i) + "_");
    list.setPostSymbol(" ");
    list.add("item 1");
    list.add("item 2");
    list3.add(list);
}
document.add(list3);

首先我们自动删除每个数字后面添加的点,我们使用getPostSymbol()方法:

list3.setPostSymbol(" ");

然后我们在list内嵌套list3。由于我们希望获得类似8_18_29_1等的结果,因此我们使用setPreSymbol()方法,如下所示:

list.setPreSymbol(String.valueOf(8 + i) + "_");

现在结果如下:

enter image description here

显然,有人可能会争辩说:你为什么要使用List来获得这种结果?为什么不只是一系列Paragraph个对象。但是:如果您要创建标记PDF,最好使用List,因为iText会自动将该内容标记为列表(例如在可访问性的上下文中)。