我正在使用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中获得所需的行为。我已经尝试了所有我能想到的东西而且我不知所措。
答案 0 :(得分: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级关闭列表有关。我已经看到了这个问题并且从未回答过,所以我希望有人认为这有用。