Frage

Ich benutze iText, um ein PDF zu schreiben. In einigen Fällen muss ich das PDF mit dem unterschreiben SetVisibleSignature Funktion. Mit dieser Funktion müssen wir das Rechteck festlegen, in das wir den Inhalt schreiben werden.

Aber es fällt mir schwer zu berechnen, wie weit die Zeichenfolge sein wird, damit ich das Rechteck einstellen kann, bevor ich eine Signatur auf das PDF einstellen kann.

Wie kann ich die Stringbreite in Itext berechnen?

War es hilfreich?

Lösung

Sie können verwenden BaseFont.getWidthPoint(String text, float fontSize) Um die Breite der Saite in Pt zu bekommen.

Oder stecken Sie die Saite in einen Stück und tun Sie es chunk.getWidthPoint()

Andere Tipps

Die akzeptierte Antwort BaseFont.getWidthPoint, funktioniert nicht in Itext 5.5.4, da die Methode nicht mehr statisch ist. Auch wenn es noch existierte, berücksichtigt es nicht die wahre Schriftart (ihre Familie oder ihre mutige Kursivschrift), da sie statisch ist und begrenzte Parameter erhält.

chunk.getWidthPoint() Funktioniert wie später mit der wahren Schriftart, aber für bestimmte Verwendungen ist es eine Verschwendung, ständig ein Stück nur für die Breite zu erstellen, insbesondere wenn der Stück nicht geplant ist, später verwendet zu werden.

Dies ist der zugrunde liegende Code für chunk.getWidthPoint() als eigenständige Ersatz zu verwenden, vorausgesetzt, Sie machen keine horizontale Skalierung:

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

Ich habe das mit dem gemacht ColumnText.getWidth( Phrase phrase ) Größe, was die Breite von a Phrase würde vor dem Zeigen mit ColumnText.showTextAligned.

In diesem Snippet habe ich das verwendet ColumnText.getWidth Um die Länge einer Saite zugrößen, um sie oben rechts auf einer Seite zu platzieren. Es funktioniert in Porträt A4, habe es nicht weiter getestet.

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
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top