#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, чтобы обнаружить ошибку в вашем запросе.