2016-11-01 22 views
1

iText 7を使用してリストを作成しています。私は複数レベルのインデントを持つ必要があります。iText7インデント付きリストの書式設定(Java)

例:

  • 項目1
    • サブ項目1
    • サブアイテム2
      • サブサブ項目1
      • サブサブアイテム2
  • 項2
    • サブ項目1
    • サブアイテム2
      • サブサブ項目1
      • サブサブアイテム2 - サブ項目1
    • サブアイテム2
      • Sub Sub I TEM 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

iText 7: Building BlocksチュートリアルのChapter 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は、次のようになります。

enter image description here

あなたが見ることができるようにあなたがListオブジェクトを追加するので、サブリストはインデントされていますa ListItem。これは本当の入れ子です。あなたのコードでは、あなたが望む結果を得られない理由であるその階層を紹介しません。

+0

これはまさに私が必要としていたものでした。どうもありがとうございました。 –