увеличить ширину акрополей (iTextSharp)

#java #pdf #itextsharp #itext

#java #PDF #itextsharp #itext

Вопрос:

Я использую iTextSharp для заполнения данных в шаблоны PDF, которые создаются в OpenOffice. он заполняется нормально, я получаю правильный PDF-файл, но в некоторых случаях я хочу увеличить ширину акрополя.

Я сделал приведенный ниже код. он увеличивает ширину, но текст не отображается.

 AcroFields.Item fldItem = fields.getFieldItem(fieldName);
for (int i =0; i < fldItem.size();   i) {
  PdfDictionary widgetDict = fldItem.getWidget(0);
  PdfArray rectArr = widgetDict.getAsArray(PdfName.RECT); 
  float origX = rectArr.getAsNumber(0).floatValue();
  rectArr.set( 2, new PdfNumber( origX   12   60 ) );
}  
 

на изображении ниже выделен один. фактическая строка — это 10000 SUPERIOROPTICAL 123 4567 89
введите описание изображения здесь

пожалуйста, помогите.
Спасибо.

Комментарии:

1. Пожалуйста, не приглашайте меня в чат, если вы не являетесь клиентом.

2. Привет, я попробовал ваш код, и он отлично работает. Но мне также нужно увеличить высоту, как я могу это сделать?

Ответ №1:

Я не могу воспроизвести проблему. Я сделал этот POC: ChangeFieldSize

В этом примере я беру форму с тремя полями, среди прочих a "Name" и a "Company" field. Сначала я изменяю размер "Name" поля так же, как вы меняете поле. Затем я заполняю "Name" поле и "Company" еще одно поле. Обратите внимание, что порядок, в котором я выполняю эти операции, очень важен. Может быть, вы делаете это наоборот.

Результат выглядит примерно так: введите описание изображения здесь

Как вы можете видеть, текст не обрезается так, как на снимке экрана.

Итак, есть две вещи, которые вы можете попробовать:

  • измените порядок, в котором вы меняете прямоугольник поля, и заполните поле.
  • обновитесь до самой последней версии iTextSharp.

Если это не поможет, опубликуйте сообщение SSCCE.

Комментарии:

1. Извините за приглашение в чат. спасибо за ваш лучший ответ. изменение float origX = rectArr.getAsNumber(2).floatValue(); rectArr.set( 2, new PdfNumber( origX 20f ) );

2. Ага, теперь я это вижу. У вас неправильный индекс. Я упустил это из виду, когда создавал свой пример. В любом случае, я рад, что вы смогли решить проблему.

3. @BrunoLowagie Возможно ли также увеличить высоту полей? При увеличении высоты поля под ним также должны перемещаться вниз.

4. Ваш запрос несовместим с природой полей AcroForm. Технология AcroForm не предназначена для удовлетворения ваших требований. Пожалуйста, изучите ISO-32000, чтобы обнаружить ошибку в вашем запросе.