/* * $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.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Paragraph; import com.lowagie.text.Table; import com.lowagie.text.pdf.PdfWriter; /** * 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 Document document = new Document(); try { // step 2: creation of the writer PdfWriter.getInstance(document, new FileOutputStream("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(); } }