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 に答える