1

Is it possible to create numbered list without indent ? Somethig like that :

1 A

1-1 A_A

2 B

2-1 B_B

2-1-1 B_B_B

Bruno Lowagie
  • 75,994
  • 9
  • 109
  • 165
Valeriane
  • 936
  • 3
  • 16
  • 37

1 Answers1

0

Please take a look at the ListNumbers examples.

When we create an ordered list like this:

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

We get a result like this:

enter image description here

Where necessary, extra space is added between the label and the content of a list item.

Your question is: how can we remove this indentation. That's a matter of adding a single line to your code:

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);

Now the result looks like this:

enter image description here

As you can see, no extra space was added after items 8 and 9.

This answer is so simple that I can't believe that this was actually the whole question (if it was, that would mean that you didn't do any effort whatsoever yourself). Looking at the desired result, I assume that there is more at play then what you mention in the subject of your post.

I see:

  • Custom numbering: no . after the number.
  • A nested structure: 2, followed by 2_1, and so on.

Changing the list symbol in case of ordered lists can be done using the setPreSymbol() and setPostSymbol() methods.

Take a look at this snippet:

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);

First we remove the dot that is added after each number automatically, we use the getPostSymbol() method for this:

list3.setPostSymbol(" ");

Then we nest list inside list3. As we want to get a result that looks like 8_1, 8_2, 9_1, etc., we use the setPreSymbol() method like this:

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

Now the result looks like this:

enter image description here

Obviously, one could argue: why do you want to use a List for this kind of result? Why not just a series of Paragraph objects. However: if you're creating Tagged PDF, it's better to use List because iText will then automatically tag that content as a list (e.g. in the context of accessibility).

Bruno Lowagie
  • 75,994
  • 9
  • 109
  • 165
  • @Valeriane Feel free to accept the answer if it solved your problem. (That way other people can see that the question was answered with the blink of an eye.) – Bruno Lowagie Oct 22 '15 at 14:31