Как рассчитать ширину строки в iText?
Я использую iText, чтобы написать PDF. В некоторых случаях мне нужно подписать PDF с SetVisibleSignature
функция. С помощью этой функции нам нужно обозначить прямоугольник, в который мы будем записывать содержимое.
Но мне сложно рассчитать, какова будет ширина строки, чтобы я мог установить прямоугольник перед установкой подписи в PDF.
Как я могу рассчитать ширину строки в iText?
3 ответа
Ты можешь использовать BaseFont.getWidthPoint(String text, float fontSize)
чтобы получить ширину строки в пт.
Или положить строку в чанк и сделать chunk.getWidthPoint()
Принятый ответ BaseFont.getWidthPoint
, не будет работать в itext 5.5.4, так как метод больше не является статическим. Даже если он все еще существует, он не учитывает истинный используемый шрифт (его семейство или его полужирный / курсив), поскольку он является статическим и принимает ограниченные параметры.
chunk.getWidthPoint()
работает с истинным шрифтом, как указано ниже, но для определенных применений бессмысленно постоянно создавать чанк только для ширины, особенно если чанк не планируется использовать позже.
Это основной код для chunk.getWidthPoint()
использовать в качестве автономной замены, если вы не используете горизонтальное масштабирование:
font.getCalculatedBaseFont(true).getWidthPoint(text, font.getCalculatedSize());
Я сделал это с ColumnText.getWidth( Phrase phrase )
размер какой ширины Phrase
было бы, прежде чем показать это с ColumnText.showTextAligned
,
В этом фрагменте я использовал ColumnText.getWidth
чтобы измерить длину строки, чтобы разместить ее в верхнем правом углу страницы. Это работает в портретном A4, не проверял это далее.
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
);