iText7:如何修复:一个 PdfTextFormField 有两个梳子,SetValue 没有 MaxLen 错误
iText7: How to fix: One PdfTextFormField with two combs, SetValue No MaxLen Error
我有一个 PDF 文件,其中包含我正在尝试使用 iText7 填写的 acroforms。当我尝试使用 field.SetValue("1234") 时有两个具有相同 FieldName 的 Comb 字段时出现错误。这是一个错误还是我遗漏了什么?
iText.Kernel.PdfException: 'No /MaxLen has been set even though the Comb flag has been set.'
调用textField.GetMaxLen()显示Acrobat中设置的梳子长度(10)。在调用 SetValue 之前调用 textField.SetMaxLen(10) 无效。之后调用 RegenerateField() 的 SetMaxLen(10) 也不行。检查 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");
}
}
所以我收到了 2 个梳状小部件的错误。我删除了其中一个,问题就消失了。我正在处理客户的表单,因此不能简单地删除第二个小部件。欢迎任何修复甚至解决方法。
编辑:这是有问题的文件。 http://www.filedropper.com/combtest
编辑 2:iText 7.7.1.5
这是一个已知错误,最近才得到修复。包含修复程序的快照版本已经可用 (7.1.6-SNAPSHOT)。尽管应该存在替代解决方法,但我不建议将它们视为解决方案,因为自 7.1.5 以来,表单处理的其他一些问题也得到了改进。所以请试试快照:)
我有一个 PDF 文件,其中包含我正在尝试使用 iText7 填写的 acroforms。当我尝试使用 field.SetValue("1234") 时有两个具有相同 FieldName 的 Comb 字段时出现错误。这是一个错误还是我遗漏了什么?
iText.Kernel.PdfException: 'No /MaxLen has been set even though the Comb flag has been set.'
调用textField.GetMaxLen()显示Acrobat中设置的梳子长度(10)。在调用 SetValue 之前调用 textField.SetMaxLen(10) 无效。之后调用 RegenerateField() 的 SetMaxLen(10) 也不行。检查 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");
}
}
所以我收到了 2 个梳状小部件的错误。我删除了其中一个,问题就消失了。我正在处理客户的表单,因此不能简单地删除第二个小部件。欢迎任何修复甚至解决方法。
编辑:这是有问题的文件。 http://www.filedropper.com/combtest 编辑 2:iText 7.7.1.5
这是一个已知错误,最近才得到修复。包含修复程序的快照版本已经可用 (7.1.6-SNAPSHOT)。尽管应该存在替代解决方法,但我不建议将它们视为解决方案,因为自 7.1.5 以来,表单处理的其他一些问题也得到了改进。所以请试试快照:)