iText7: как исправить: одна PdfTextFormField с двумя гребнями, SetValue нет ошибки MaxLen - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть файл PDF с акроформами, которые я пытаюсь заполнить с помощью iText7. При попытке использовать field.SetValue ("1234") я получаю сообщение об ошибке, когда есть два поля Comb с одним и тем же FieldName. Это ошибка или я что-то упустил?

    iText.Kernel.PdfException: 'No /MaxLen has been set even though the Comb flag has been set.'

Вызов textField.GetMaxLen () показывает длину гребня, установленную в Acrobat (10). Вызов textField.SetMaxLen (10) перед вызовом SetValue не имеет никакого эффекта. Кроме того, SetMaxLen (10) с вызовом RegenerateField () после. Осматривая pdfObject, я вижу следующее: {<</DA /Helv 12 Tf 0 g /FT /Tx /Ff 29360128 /Kids [28 0 R 29 0 R ] /MaxLen 10 /T CombTestField >>} Итак, я вижу запись / MaxLen 10, но все равно получаю ошибку выше. Два виджета являются Ctrl-C / Ctrl-V копиями друг друга. Оба являются сотами из 10 символов.

var pdf = new PdfDocument(new PdfReader(inFile), new PdfWriter(outFile));
var form = PdfAcroForm.GetAcroForm(pdf, false);

var field = form.GetField("CombTestField");

if (field is PdfTextFormField textField)
{
    var maxLen = textField.GetMaxLen();
    if (maxLen == 10)
    {
        textField.SetValue("1234");
    }
}

Итак, я получаю сообщение об ошибке с двумя виджетами гребенки. Я удаляю один из них, и проблема исчезает. Я работаю с клиентской формой, поэтому не могу просто удалить второй виджет. Любое исправление или даже обходной путь приветствуются.

РЕДАКТИРОВАТЬ: Вот файл, о котором идет речь. http://www.filedropper.com/combtest EDIT2: iText 7.7.1.5

1 Ответ

1 голос
/ 04 апреля 2019

Это известная ошибка, и она была недавно исправлена. Версия со снимком, включая исправление, уже доступна (7.1.6-SNAPSHOT). Хотя альтернативные обходные пути должны существовать, я бы не рекомендовал рассматривать их как решение, поскольку некоторые другие проблемы с обработкой форм также были улучшены с 7.1.5. Поэтому, пожалуйста, попробуйте снимок :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...