/**
  * Creates a PdfPTable object based on this TableAttributes object.
  *
  * @return a com.lowagie.text.pdf.PdfPTable object
  * @throws DocumentException
  */
 public PdfPTable createPdfPTable() throws DocumentException {
   if (content.isEmpty()) throw new BadElementException("Trying to create a table without rows.");
   SimpleCell row = (SimpleCell) content.get(0);
   SimpleCell cell;
   int columns = 0;
   for (Iterator i = row.getContent().iterator(); i.hasNext(); ) {
     cell = (SimpleCell) i.next();
     columns += cell.getColspan();
   }
   float[] widths = new float[columns];
   float[] widthpercentages = new float[columns];
   PdfPTable table = new PdfPTable(columns);
   table.setTableEvent(this);
   table.setHorizontalAlignment(alignment);
   int pos;
   for (Iterator rows = content.iterator(); rows.hasNext(); ) {
     row = (SimpleCell) rows.next();
     pos = 0;
     for (Iterator cells = row.getContent().iterator(); cells.hasNext(); ) {
       cell = (SimpleCell) cells.next();
       if (Float.isNaN(cell.getSpacing_left())) {
         cell.setSpacing_left(cellspacing / 2f);
       }
       if (Float.isNaN(cell.getSpacing_right())) {
         cell.setSpacing_right(cellspacing / 2f);
       }
       if (Float.isNaN(cell.getSpacing_top())) {
         cell.setSpacing_top(cellspacing / 2f);
       }
       if (Float.isNaN(cell.getSpacing_bottom())) {
         cell.setSpacing_bottom(cellspacing / 2f);
       }
       cell.setPadding(cellpadding);
       table.addCell(cell.createPdfPCell(row));
       if (cell.getColspan() == 1) {
         if (cell.getWidth() > 0) widths[pos] = cell.getWidth();
         if (cell.getWidthpercentage() > 0) widthpercentages[pos] = cell.getWidthpercentage();
       }
       pos += cell.getColspan();
     }
   }
   float sumWidths = 0f;
   for (int i = 0; i < columns; i++) {
     if (widths[i] == 0) {
       sumWidths = 0;
       break;
     }
     sumWidths += widths[i];
   }
   if (sumWidths > 0) {
     table.setTotalWidth(sumWidths);
     table.setWidths(widths);
   } else {
     for (int i = 0; i < columns; i++) {
       if (widthpercentages[i] == 0) {
         sumWidths = 0;
         break;
       }
       sumWidths += widthpercentages[i];
     }
     if (sumWidths > 0) {
       table.setWidths(widthpercentages);
     }
   }
   if (width > 0) {
     table.setTotalWidth(width);
   }
   if (widthpercentage > 0) {
     table.setWidthPercentage(widthpercentage);
   }
   return table;
 }