Задайте стойност на PDFFormField с определен размер на шрифта

Имам много прост случай на използване за попълване на акроформа. Имам немногоредово текстово поле. Бих искал да преоразмеря размера на шрифта, за да пасне на ширината на текстовото поле.

PDF спецификацията споменава, че размер на шрифта 0 предполага автоматично прилягане към ширината. Въпреки това PDFBox - 1419 & PDFBOX-1402 споменава, че това не се поддържа в pdfbox.

Следователно имам някаква малка логика за изчисляване на размерите на шрифта въз основа на ширините и т.н. Въпреки това се сблъсквам с проблеми при настройването на размера на шрифта.

Виждам поведението, споменато в PDFBox - 1419.

Започва с неправилен размер на шрифта. Ако щракна в полето, то се показва правилно. Щракнете извън полето, то се връща обратно към грешния дисплей.

код:

pdfFormField.getDictionary.setString(COSName.DA, "/Helv 10 Tf 0 g”)
pdfFormField.setValue("Hello")

Всякакви насоки или помощ ще бъдат много оценени.

Прост пример за такъв PDF е тук


person Akshay Rawat    schedule 06.05.2014    source източник
comment
Класовете на полето на формуляр на Pdfbox четат външния вид по подразбиране рано. По този начин, когато създавате потока на външния вид, най-вероятно се използва предишната стойност на DA.   -  person mkl    schedule 06.05.2014
comment
mkl: Благодаря! Тогава не съм сигурен как да задам размера на шрифта, когато задавам стойността. В моя случай размерът на шрифта зависи от стойността.   -  person Akshay Rawat    schedule 07.05.2014
comment
Мисля, че трябва по някакъв начин да регенерирам потока на външния вид за полето на pdf формуляр.   -  person Akshay Rawat    schedule 07.05.2014
comment
След като зададете външния вид по подразбиране, създайте отново обекта на полето на формуляра. След това задайте стойността на полето, като използвате този нов обект. напр. погледнете този отговор на Как да задам цвят на текста на PDTextbox?; тук съществуващата DA стойност на текстово поле се променя, за да съдържа операция за настройка на цвят, преди стойността на полето да бъде зададена.   -  person mkl    schedule 07.05.2014
comment
@mkl Благодаря много, че работи.   -  person Akshay Rawat    schedule 07.05.2014
comment
Страхотен! Ще го направя отговор сам по себе си.   -  person mkl    schedule 07.05.2014


Отговори (1)


Класовете на полето на формуляра на Pdfbox четат външния вид по подразбиране в членска променлива в началото на техния жизнен цикъл и не следват промените в речника на полето на формуляра, на който се основават. По този начин, когато създавате потока за изява по време на pdfFormField.setValue("Hello"), се използва предишната стойност на DA.

Следователно, след като зададете външния вид по подразбиране, трябва да създадете отново обекта на полето на формуляр. След това задайте стойността на полето, като използвате този нов обект.

За примерен код вижте този отговор на Как да задам цвят на текста на PDTextbox?; тук съществуващата DA стойност на текстово поле се променя, за да съдържа операция за настройка на цвят, преди стойността на полето да бъде зададена.

person mkl    schedule 07.05.2014