Установите значение 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