private List<ColumnText> fillTable(float height) {
    // copy text for simulation
    List<ColumnText> tt = null;
    if (breakHandlingParent == null && colIdx >= layoutTable.getNumberOfColumns()) {
      // more column breaks than available column
      // we try not to lose content
      // but results may be different than in open office
      // anyway it is logical error made by document creator
      tt = new ArrayList<ColumnText>();
      ColumnText t = createColumnText();
      tt.add(t);
      for (int i = 0; i < texts.size(); i++) {
        PdfPTable table = new PdfPTable(1);
        table.setWidthPercentage(100.0f);
        PdfPCell cell = new PdfPCell();
        cell.setBorder(Rectangle.NO_BORDER);
        cell.setPadding(0.0f);
        cell.setColumn(ColumnText.duplicate(texts.get(i)));
        table.addCell(cell);
        t.addElement(table);
      }
    } else {
      tt = new ArrayList<ColumnText>(texts);
      for (int i = 0; i < tt.size(); i++) {
        tt.set(i, ColumnText.duplicate(tt.get(i)));
      }
    }
    // clear layout table
    clearTable(layoutTable, true);
    setWidthIfNecessary();

    // try to fill cells with text
    ColumnText t = tt.get(0);
    for (PdfPCell cell : layoutTable.getRow(0).getCells()) {
      cell.setFixedHeight(height >= 0.0f ? height : -1.0f);
      cell.setColumn(ColumnText.duplicate(t));
      //
      t.setSimpleColumn(
          cell.getLeft() + cell.getPaddingLeft(),
          height >= 0.0f ? -height : PdfPRow.BOTTOM_LIMIT,
          cell.getRight() - cell.getPaddingRight(),
          0);
      int res = 0;
      try {
        res = t.go(true);
      } catch (DocumentException e) {
        throw new XWPFConverterException(e);
      }
      if (!ColumnText.hasMoreText(res)) {
        // no overflow in current column
        if (tt.size() == 1) {
          // no more text
          return null;
        } else {
          // some text waiting for new column
          tt.remove(0);
          t = tt.get(0);
        }
      }
    }
    return tt;
  }