У меня есть файл 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