/*
* $Id$
*
* This code is part of the 'iText Tutorial'.
* You can find the complete tutorial at the following address:
* http://itextdocs.lowagie.com/tutorial/
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* itext-questions@lists.sourceforge.net
*/
package com.lowagie.examples.objects.tables.alternatives;
import java.awt.Point;
import java.io.IOException;
import com.lowagie.text.LwgDocument;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfWriter;
import org.geoforge.demo.GfrFileOutputStream;
/**
* Nested tables.
*/
public class NestedTables
{
/**
* Nested tables.
* @param args no arguments needed
*/
public static void main(String[] args)
{
System.out.println("Nested tables");
// step 1: creation of a document-object
LwgDocument document = new LwgDocument();
try
{
// step 2: creation of the writer
PdfWriter.getInstance(document,
new GfrFileOutputStream("com.lowagie.examples.objects.tables.alternatives.NestedTables.pdf"));
// step 3: we open the document
document.open();
// step 4: we create a table and add it to the document
// example 1
Table secondTable = new Table(2);
secondTable.addCell("2nd table 0.0");
secondTable.addCell("2nd table 0.1");
secondTable.addCell("2nd table 1.0");
secondTable.addCell("2nd table 1.1");
Table aTable = new Table(4, 4); // 4 rows, 4 columns
aTable.setAutoFillEmptyCells(true);
aTable.addCell("2.2", new Point(2, 2));
aTable.addCell("3.3", new Point(3, 3));
aTable.addCell("2.1", new Point(2, 1));
aTable.insertTable(secondTable, new Point(1, 3));
document.add(aTable);
document.add(new Paragraph("converted to PdfPTable:"));
aTable.setConvert2pdfptable(true);
document.add(aTable);
document.newPage();
// example 2
Table thirdTable = new Table(2);
thirdTable.addCell("3rd table 0.0");
thirdTable.addCell("3rd table 0.1");
thirdTable.addCell("3rd table 1.0");
thirdTable.addCell("3rd table 1.1");
aTable = new Table(5, 5);
aTable.setAutoFillEmptyCells(true);
aTable.addCell("2.2", new Point(2, 2));
aTable.addCell("3.3", new Point(3, 3));
aTable.addCell("2.1", new Point(2, 1));
aTable.insertTable(secondTable, new Point(1, 3));
aTable.insertTable(thirdTable, new Point(6, 2));
document.add(aTable);
document.add(new Paragraph("converted to PdfPTable:"));
aTable.setConvert2pdfptable(true);
document.add(aTable);
document.newPage();
// example 3
aTable = new Table(3);
float[] widths =
{
1, 2, 1
};
aTable.setWidths(widths);
aTable.addCell("1.1");
aTable.addCell("1.2");
aTable.addCell("1.3");
// nested
Table t2 = new Table(2);
t2.addCell("2.1");
t2.addCell("2.2");
// now insert the nested
aTable.insertTable(t2);
aTable.addCell("new cell");
document.add(aTable);
document.add(new Paragraph("converted to PdfPTable:"));
aTable.setConvert2pdfptable(true);
document.add(aTable);
document.newPage();
// relative column widths are preserved
Table a = new Table(2);
a.setWidths(new float[]
{
85, 15
});
a.addCell("a-1");
a.addCell("a-2");
Table b = new Table(5);
b.setWidths(new float[]
{
15, 7, 7, 7, 7
});
b.addCell("b-1");
b.addCell("b-2");
b.addCell("b-3");
b.addCell("b-4");
b.addCell("b-5");
// now, insert these 2 tables into a third for layout purposes
Table c = new Table(3, 1);
c.setWidth(100.0f);
c.setWidths(new float[]
{
20, 2, 78
});
c.insertTable(a, new Point(0, 0));
c.insertTable(b, new Point(0, 2));
document.add(c);
document.add(new Paragraph("converted to PdfPTable:"));
c.setConvert2pdfptable(true);
document.add(c);
}
catch (DocumentException de)
{
System.err.println(de.getMessage());
}
catch (IOException ioe)
{
System.err.println(ioe.getMessage());
}
// step 5: we close the document
document.close();
}
}