iText7 缩进列表格式 (Java)

iText7 Indented List Formatting (Java)

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

示例:

当前尝试:

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

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

提前致谢。

请查看文档,更具体地说是 Chapter 4 of the 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 如下所示:

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