2010-01-18 2 views
3

Я создаю PDF из iTextSharp для печати. У меня есть текст длины переменной, который я хотел бы всегда иметь максимальный размер шрифта, чтобы заполнить ячейку таблицы с фиксированной высотой, не закрывая ее из поля зрения. Как это может быть сделано?Как отрегулировать размер шрифта для заполнения ячейки фиксированной высоты таблицы в iTextSharp

ответ

6

Вам нужно сначала измерить ширину текста в выбранном вами шрифте. Из документации iTextSharp:

Измерение текста

Иногда необходимо знать длину определенной части текста. Если у вас есть , создайте объект BaseFont, вы можете использовать метод: public float getWidthPoint (текст строки, float fontSize); Так что, если вы используете какой-то штрих-кодов шрифта с размером 36, как в предыдущем примере, и вы хотите знать , сколько места нужно на линии печати этот штрих-код, вы просто делаете: getWidthPoint («», 36F). Результат - это ширина в точках. Там - 72 точки в 1 дюйме. Так что если вы есть результат 252 точек (как в примере 8), вы можете преобразовать это в дюймах и сантиметрах, как это: 252 /72 = 3,5 дюйма * 2,54 = 8,89 см

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

textWidth = getWidthPoint("sample text", originalFontHeight) 
newFontHeight = (cellWidth/textWidth) * originalFontHeight 

Тогда просто убедитесь, что высота нового шрифта (который уже дан в баллах от размера шрифта) не превышает высоту вашей ячейки таблицы.

+0

Отлично, спасибо большое, это было именно то, что я искал. – DaveB

Смежные вопросы