How to fit a String inside a rectangle?

There are three options:

  1. Either you provide a bigger rectangle, so that the content fits inside,
  2. or you reduce the content (e.g. smaller font, less text),…
  3. Keep the size of the rectangle, keep the font size, etc… but add the content that doesn’t fit on the next page.

How do you know if the content doesn’t fit?

You can add the content in simulation mode first, and test if all the content was ‘consumed’:

int status = ct.go(true);
boolean fits = !ColumnText.hasMoreText(status);

Based on the value of fits, you can decide to change the size of the rectangle or the content. There’s an example that shows how to do this: http://itextpdf.com/examples/iia.php?id=163

If you can distribute the content over different pages, you don’t need simulation mode, you just need to insert a document.newPage();

ColumnText ct = new ColumnText(cb);
ct.setSimpleColumn(rect);
int status = ct.go();
while (ColumnText.hasMoreText(status)) {
    document.newPage();
    ct.setSimpleColumn(rect);
    status = ct.go();
}

In this example rect contains the coordinates of the rectangle.

Leave a Comment