Получить высоту текста в PDF AcroField - PullRequest
4 голосов
/ 11 ноября 2010

Есть ли метод расчета высоты текста в AcroField?

Другими словами, у меня есть шаблон PDF с разделом тела, в который я хочу вставить свой длинный текст, и я хочу получитьвысота текста.Если он переполнен, вставьте новую страницу для остальной части текста.

Ответы [ 2 ]

1 голос
/ 21 марта 2013

Это даст высоту и ширину:

Vector curBaseline = renderInfo.GetBaseline().GetStartPoint();
Vector topRight = renderInfo.GetAscentLine().GetEndPoint();
iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(
    curBaseline[Vector.I1], curBaseline[Vector.I2], 
    topRight[Vector.I1], topRight[Vector.I2]
);
Single curFontSize = rect.Height;
0 голосов
/ 01 февраля 2011

Просто установите в вашем поле размер шрифта, равный нулю. Это автоматически изменит размер шрифта так, чтобы данный текст поместился в вашем поле ... в определенных пределах. Я не думаю, что он будет ниже 6 баллов.

Другой альтернативой будет использование ColumnText и вызов myColText.go(true). Это будет «имитировать» макет, давая вам знать, что и где происходит, не рисуя ничего в PDF. Просто подберите столбецТекст с теми же размерами, шрифтом и размером шрифта, что и у вашего поля, и ваши результаты должны быть такими же.

На самом деле, я считаю, что код рендеринга текстового поля iText использует ColumnText для внутреннего использования. Да, посмотрите на источник для TextField.getAppearance().

Обратите внимание, что ограничивающая рамка вашего поля не будет соответствовать рамке, в которую выложен текст ... Вы должны учитывать стиль и толщину отверстия. Вот почему я предлагаю вам взглянуть на источник.

...