code: protected ColumnText prepareColumns() throws VectorPrintException {
        ct = new ColumnText(getPreparedCanvas());
        float width = getRight() - getLeft();
        float colWidth = (width - (getNumColumns() - 1) * getSpacing()) / getNumColumns();
        for (int i = 0; i < getNumColumns(); i++) {
           float left = (i == 0) ? getLeft() : getLeft() + colWidth * i + getSpacing() * i;
           float right = (i == 0) ? getLeft() + colWidth : getLeft() + colWidth * i + getSpacing() * i + colWidth;
           int shift = i * 4;
           columns.add(new Rectangle(left, getValue(BOTTOM, Float.class), right, getValue(TOP, Float.class)));
        }
        return ct;
     }
docs: calls {@link #getPreparedCanvas() } to create a new {@link ColumnText#ColumnText(com.itextpdf.text.pdf.PdfContentByte)
  } and calculates column Rectangles based on parameters.
  
  @return
  @throws VectorPrintException