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