2016-09-19 1 views
1

Dans l'une de mes exigences, je veux obtenir la largeur de mon élément de texte avant même qu'il ne soit rendu sur la page.Comment simuler la largeur d'un élément de texte avant le rendu réel avec iTextSharp version 7

Dans iText version 5 la manière appliquée était (nouveau Chunk ("Texte de test", SomeFont)). GetWidthPoint()

Mais dans la version 7, je suis incapable de trouver quoi que ce soit correspondant à ce sujet. J'ai essayé:

(nouveau paragraphe ("du texte")) GetWidth(), mais renvoie null

Toute aide sur ce serait vraiment appréciable..

Merci d'avance !!

Répondre

0

Une option pour cela est d'interroger la police en question comme ceci:

String text = ...; 
float fontSize = ...; 
PdfFont font = ...; 
GlyphLine glyphLine = font.createGlyphLine(text); 

int width = 0; 
for (int i = 0; i < glyphLine.size(); i++) 
{ 
    Glyph glyph = glyphLine.get(i); 
    width += glyph.getWidth(); 
} 

float userSpaceWidth = width * fontSize/1000.0f; 

System.out.printf("The width of '%s' is %s text space units.\n", text, width); 
System.out.printf("For a font size %s, therefore, this is %s unscaled user space units.\n", fontSize, userSpaceWidth); 

(DetermineTextWidth.java)