2

我正在使用 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();
}

我在想应该有一种方法可以以某种方式缩进特定的列表项。

提前致谢。

4

1 回答 1

3

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

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

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 如下所示:

在此处输入图像描述

如您所见,子列表是缩进的,因为您将List对象添加到ListItem. 这是真正的嵌套。在您的代码中,您没有引入该层次结构,这就是您没有获得所需结果的原因。

于 2016-11-02T11:27:42.073 回答