Question

J'utilise ITEXT pour écrire un PDF. Dans certains cas, j'ai besoin de signer le PDF avec le SetVisibleSignature fonction. Avec cette fonction, nous devons désigner le rectangle dans lequel nous allons écrire le contenu.

Mais il m'est difficile de calculer la largeur de la chaîne, afin que je puisse régler le rectangle avant de définir une signature sur le PDF.

Comment puis-je calculer la largeur de la chaîne dans iText?

Était-ce utile?

La solution

Vous pouvez utiliser BaseFont.getWidthPoint(String text, float fontSize) Pour obtenir la largeur de la chaîne en pt.

Ou mettez la ficelle dans un morceau et faites chunk.getWidthPoint()

Autres conseils

La réponse acceptée BaseFont.getWidthPoint, ne fonctionnera pas dans iText 5.5.4 car la méthode n'est plus statique. Même s'il existait toujours, il ne prend pas en compte la vraie police utilisée (sa famille ou son gras / italique) car il est statique et reçoit des paramètres limités.

chunk.getWidthPoint() Fonctionne avec la vraie police comme indiqué plus tard, mais pour certaines utilisations, c'est un gaspillage pour créer constamment un morceau juste pour la largeur, surtout si le morceau n'est pas prévu d'être utilisé plus tard.

Ceci est le code sous-jacent pour chunk.getWidthPoint() Pour l'utiliser comme substitut autonome, en supposant que vous ne faites aucune mise à l'échelle horizontale:

font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());

I ended up doing this with ColumnText.getWidth( Phrase phrase ) to size what the width of a Phrase would be before showing it with ColumnText.showTextAligned.

In this snippet, I used the ColumnText.getWidth to size the length of a string to place it top right of a page. It works in portrait A4, haven't tested it further.

Phrase phrase = new Phrase( "Bla bla bla!", new Font( FontFamily.HELVETICA, 9 ) );
float width = ColumnText.getWidth( phrase );

ColumnText.showTextAligned (
    canvas,
    Element.ALIGN_LEFT,
    phrase,
    canvas.getPdfDocument( ).right( ) - width,
    canvas.getPdfDocument( ).top( ) + 9,
    0
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top