package pt.ipb.cdev.pdf;

import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;

public class Main {
    private static final Font DEFAULT_FONT = new Font(FontFamily.HELVETICA, 8);

    public static void main(String[] args) {
        Document doc = new Document();
        try {
            PdfWriter.getInstance(doc, new FileOutputStream("test.pdf"));
            doc.open();
            for (int i = 0; i < 3; ++i) {
                List list1 = new List(List.ALPHABETICAL, 20);
                for (int j = 0; j < 7; ++j) {
                    list1.add(new ListItem(DEFAULT_FONT.getSize(), "item " + (j+1), DEFAULT_FONT));
                    List list2 = new List(List.ORDERED, 20);
                    for (int k = 0; k < 7; ++k)
                        list2.add(new ListItem(DEFAULT_FONT.getSize(), "sub item " + (k+1), DEFAULT_FONT));
                    list1.add(list2);
                }
                doc.add(createTable(i+1, list1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            doc.close();
        }
    }

    private static PdfPTable createTable(int n, List list) {
        PdfPCell cell = new PdfPCell();
        cell.addElement(list);
        PdfPTable table = new PdfPTable(1);
        table.setSplitLate(false);
        table.setSpacingAfter(10);
        table.setHeaderRows(1);
        table.addCell(new Phrase(DEFAULT_FONT.getSize(), "table " + n, DEFAULT_FONT));
        table.addCell(cell);
        return table;
    }
}
