Ehsan
Ehsan

Reputation: 1682

Get height of text in PDF AcroField

Is there any technique to calculate the height of text in AcroField?

In other words, I have a template PDF with a body section that I want to paste my long text into and I want to get the height of the text. If it overflows, insert a new page for rest of the text.

Upvotes: 4

Views: 1706

Answers (2)

pdp
pdp

Reputation: 629

This will give height and width:

Vector curBaseline = renderInfo.GetBaseline().GetStartPoint();
Vector topRight = renderInfo.GetAscentLine().GetEndPoint();
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(
    curBaseline[Vector.I1], curBaseline[Vector.I2], 
    topRight[Vector.I1], topRight[Vector.I2]
);
Single curFontSize = rect.Height;

Upvotes: 1

Mark Storer
Mark Storer

Reputation: 15868

Just set your field to a font size of zero. This will automatically size the font so that the given text will fit into your field... within certain limits. I don't think it'll shrink below 6 points.

Another alternative would be to use a ColumnText and call myColText.go(true). This will "simulate" layout, letting you know what goes where without actually drawing anything to the PDF. Just whip up a columnText with the same dimensions, font&font-size as your field, and your results should be the same.

In fact, I believe iText's text field rendering code uses ColumnText internally. Yep, have a look at the source for TextField.getAppearance().

Note that the bounding box of your field isn't going to match the box the text is laid out into... you have to account for borer style & thickness. That's why I suggest you look at the source.

Upvotes: 0

Related Questions