2016-11-01 1 views
1

J'utilise iText 7 pour créer une liste. J'ai besoin de plusieurs niveaux d'indentations.iText7 Mise en forme de liste indentée (Java)

Exemple:

  • Item 1
    • Sub Point 1
    • Sub Article 2
      • Sub Sub Point 1
      • Sub Sub Point 2
  • Article 2
    • Sub Point 1
    • Sub Article 2
      • Sub Sub Point 1
      • Sub Sub Point 2 - Sous Item 1
    • Sub Point 2
      • Sub Sub I tem 1
      • Sub Sub Point 2
  • Article 3
    • Sub Point 1
    • Sub Article 2
      • Sub Sub Point 1
      • Sub Sub Point 2

tentative actuelle:

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

Je pense qu'il devrait y avoir un moyen de retrait des éléments de liste spécifiques d'une certaine façon.

Merci à l'avance.

Répondre

1

S'il vous plaît jeter un oeil à la documentation, plus précisément Chapter 4 du tutoriel iText 7: Building Blocks.

Actuellement vous n'êtes pas des listes d'imbrication. Vous ajoutez chaque élément de liste à la liste de niveau supérieur.Vous devez listes de nids, voir par exemple:

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

Le PDF résultant ressemble à ceci:

enter image description here

Comme vous pouvez le voir, les listes de sous sont en retrait parce que vous ajoutez un objet List à un ListItem. C'est la vraie imbrication. Dans votre code, vous n'introduisez pas cette hiérarchie, ce qui explique pourquoi vous n'obtenez pas le résultat souhaité.

+0

C'était exactement ce dont j'avais besoin. Merci beaucoup. –