Вопрос

Я использую 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
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top