iText7缩进列表格式(Java)

时间:2016-11-01 23:05:36

标签: java itext nested-lists itext7

我正在使用iText 7创建一个列表。我需要有多个级别的缩进。

示例:

  • 第1项
    • 子项目1
    • 子项目2
      • 子项目1
      • 子项目2
  • 第2项
    • 子项目1
    • 子项目2
      • 子项目1
      • 子项目2 - 子项目1
    • 子项目2
      • 子项目1
      • 子项目2
  • 第3项
    • 子项目1
    • 子项目2
      • 子项目1
      • 子项目2

当前尝试:

public void IndentedList() throws IOException {
    String filePath = dest + "Example2.pdf";
    File file = new File(filePath);
    file.getParentFile().mkdirs();

    PdfWriter writer = new PdfWriter(filePath);
    PdfDocument pdf = new PdfDocument(writer);

    Document document = new Document(pdf);

    PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);

    document.add(new Paragraph("iText is: ").setFont(font));

    List list = new List()
            .setSymbolIndent(12)
            .setListSymbol("\u2022")
            .setFont(font);

    list
            .add(new ListItem("Item 1"))
            .add(new ListItem("SubItem1"))
            .add(new ListItem("Sub Sub Item 1"))
            .add(new ListItem("Sub Sub Item 2"));
            .add(new ListItem("Item 1"))
            .add(new ListItem("SubItem1"))
            .add(new ListItem("Sub Sub Item 1"))
            .add(new ListItem("Sub Sub Item 2"));
    document.add(list);
    document.close();
}

我认为应该有办法以某种方式缩进特定的列表项。

先谢谢了。

1 个答案:

答案 0 :(得分:2)

请查看文档,更具体地说,Chapter 4教程的iText 7: Building Blocks

目前您不是嵌套列表。您将每个列表项添加到顶级列表。您需要嵌套列表,例如:

public void createPdf(String dest) throws IOException {
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    Document document = new Document(pdf);
    List topLevel = new List();
    ListItem item1 = new ListItem();
    item1.add(new Paragraph().add("Item 1"));
        List secondLevel = new List();
        secondLevel.add("Sub Item 1");
        ListItem subItem2 = new ListItem();
        subItem2.add(new Paragraph("Sub Item 2"));
            List thirdLevel = new List();
            thirdLevel.add("Sub Sub Item 1");
            thirdLevel.add("Sub Sub Item 2");
        subItem2.add(thirdLevel);
        secondLevel.add(subItem2);
    item1.add(secondLevel);
    topLevel.add(item1);
    document.add(topLevel);
    document.close();
}

生成的PDF如下所示:

enter image description here

如您所见,子列表是缩进的,因为您向List添加了ListItem个对象。这是真正的嵌套。在您的代码中,您不会引入该层次结构,这就是您无法获得所需结果的原因。