Как рассчитать ширину строки в ITEXT?
-
20-09-2019 - |
Вопрос
Я использую iText, чтобы написать PDF. В некоторых случаях мне нужно подписать PDF с SetVisibleSignature
функция С помощью этой функции нам нужно обозначить прямоугольник, в который мы будем писать контент.
Но мне трудно рассчитать, насколько широкой будет строка, чтобы я мог установить прямоугольник, прежде чем установить подпись на PDF.
Как я могу рассчитать ширину строки в ITEXT?
Решение
Вы можете использовать BaseFont.getWidthPoint(String text, float fontSize)
Чтобы получить ширину строки в Pt.
Или положить строку в кусок и сделать 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
);