iText7 深层 formField 层次结构未正确处理
iText7 deep formField hierarchies aren't handled correctly
iText 7.0.0
我不确定这是 LiveCycle/XFA 的特性还是我们表单团队采用的约定,但很多表单字段限定名称最终看起来像:
form[0].someForm_page1[0].table1[0].row1[0].cell1[0].Text[0]
form[0].someForm_page1[0].table1[0].row1[0].cell1[0].Text[1]
合并时(PdfDocument.copyTo...包括 PdfPageFormCopier)仅复制页面 /Widgets 的直接父级(尽管我在上面提到了 XFA,这种行为也会发生在非混合表单中)。
PdfDocument src = createForRead("someForm.pdf");
PdfDocument merged = createForWrite("merged.pdf");
src.copyPagesTo(1, src.getNumberOfPages(), merged, new PdfPageFormCopier());
merged.close();
src.close();
结果字段看起来像
cell1[0].Text[0]
cell1[0].Text[1]
或更糟,对于这样的情况
page1.section1.Text1
page2.section1.Text1
不构建完整的层次结构可能会导致唯一字段变得不唯一
section1.Text1
section1.Text1
在SmartMode中,情况似乎更糟(这个似乎在7.0.1-20162707中修复了!)
page1.Text1
page2.Text1
合并到
page1.Text1
page1.Text1
这已在 iText 7.0.1 中修复
iText 7.0.0
我不确定这是 LiveCycle/XFA 的特性还是我们表单团队采用的约定,但很多表单字段限定名称最终看起来像:
form[0].someForm_page1[0].table1[0].row1[0].cell1[0].Text[0]
form[0].someForm_page1[0].table1[0].row1[0].cell1[0].Text[1]
合并时(PdfDocument.copyTo...包括 PdfPageFormCopier)仅复制页面 /Widgets 的直接父级(尽管我在上面提到了 XFA,这种行为也会发生在非混合表单中)。
PdfDocument src = createForRead("someForm.pdf");
PdfDocument merged = createForWrite("merged.pdf");
src.copyPagesTo(1, src.getNumberOfPages(), merged, new PdfPageFormCopier());
merged.close();
src.close();
结果字段看起来像
cell1[0].Text[0]
cell1[0].Text[1]
或更糟,对于这样的情况
page1.section1.Text1
page2.section1.Text1
不构建完整的层次结构可能会导致唯一字段变得不唯一
section1.Text1
section1.Text1
在SmartMode中,情况似乎更糟(这个似乎在7.0.1-20162707中修复了!)
page1.Text1
page2.Text1
合并到
page1.Text1
page1.Text1
这已在 iText 7.0.1 中修复