2010-11-10 11 views
4

Existe-t-il une technique pour calculer la hauteur du texte dans AcroField? En d'autres termes, j'ai un modèle de PDF avec une section de corps que je veux coller mon long texte et je veux obtenir la hauteur du texte. S'il déborde, insérez une nouvelle page pour le reste du texte.Obtenir la hauteur du texte en PDF AcroField

Répondre

0

Réglez simplement votre champ à une taille de police de zéro. Cela va automatiquement dimensionner la police de sorte que le texte donné s'insère dans votre domaine ... dans certaines limites. Je ne pense pas que ça va rétrécir en dessous de 6 points.

Une autre alternative serait d'utiliser un ColumnText et d'appeler myColText.go(true). Cela simulera la mise en page, vous permettant ainsi de savoir ce qui se passe sans réellement dessiner quoi que ce soit sur le PDF. Juste fouetter un columnText avec les mêmes dimensions, police & font-size que votre domaine, et vos résultats devraient être les mêmes.

En fait, je crois que le code de rendu de champ de texte d'iText utilise ColumnText en interne. Yep, jetez un oeil à la source pour TextField.getAppearance().

Notez que la boîte de délimitation de votre champ ne correspondra pas à la boîte dans laquelle le texte est placé ... vous devez tenir compte de l'épaisseur du style de perçage &. C'est pourquoi je vous suggère de regarder la source.

1

Cela donnera la hauteur et la largeur:

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;