是否可以将一个或多个基于 XFA 表单的 PDF 文件与 iText 一起附加或合并?
Is it possible to append or merge one or more XFA form-based PDF files together with iText?
我有一个 PDF 文件,其中包含基于 XFA (XML) 表单的嵌入表单。第一个 PDF 有一个 table ,其中包含一个人员列表。如果 table 溢出,随后的人员列表将由附录页面处理,该页面也是 PDF(基于 XFA 的表单)。是否可以使用 iText 将所有基于 XFA 的 PDF 合并为一个 PDF?
@BrunoLowagie 感谢您的回复。实际上,我设法让 iText 连接 PDF 交互式表单以创建自定义 PDF 数据包。让我解释一下我是怎么做到的。
通过使用 Adobe Acrobat XI Pro,我了解到当加载 XFA PDF 时,如果我转到“工具”->“编辑”,我将无法编辑表单(它通常会警告我此 PDF 是由 LiveCycle Designer 创建的),但是当我转到页面-> 提取,然后 select 所有要提取的页面时,整个基于 XFA 的 PDF 被提取并转换为基于 AcroForms 的 PDF。因此,如果我在基于 XFA 的 PDF 中有 25 个字段,它已成功将所有 25 个字段转换为 AcroForm 字段。不知何故,Adobe Acrobat 必须根据 XML 结构来确定变量名称。 (即 xpath)//form1/Page1/variable1 已转换为 acro 字段名称:form1[0].Page1[0].variable1[0]。所有可见(可编辑表单)字段都像往常一样存在并对齐(像素完美)。
如果我将 XFA PDF 展平,我将再次需要将表单域放回每一页,这会很乏味。通过使用 Pages->Extract->All Pages,它会为我转换所有内容(不需要展平 - 展平也会剥离所有字段;也不需要 XFA worker lib)。
但是,我的 PDF 数据包是静态的,我想重复附录页面以防数据从第二页溢出。我知道我可以修改初始 XFA 来处理此溢出,但客户希望使用完整的页面查找附录,headers/footers 完好无损。
我发现我可以通过Adobe Acrobat Pro->Pages->Extract->(SelectAddendum Page单独提取附录页来实现,然后它被转换成PDF格式w/AcroForm完好无损。
我拿了原始 PDF 数据包并尝试连接附录 PDF 页面。所以目前,主数据包有 AcroForm 字段,附录 PDF 页面也有 AcroForm 字段。
当我使用 PdfCopy 或 PdfConcatenate 进行连接时,我注意到我在调用 form.getFields()
时丢失了所有表单字段
当我使用(已弃用的)PdfCopyFields 进行串联时,所有 AcroForm 字段都完好无损。 (正是我所需要的!)我还测试了 PdfCopyFields,其中一些字段是 filled/saved 并且 PdfCopyFields 仍然有效并保留了预填充的值。我查看了 PdfCopyFields 被标记为弃用的原因,说我们可以合并可访问文件并丢失表单,或者合并表单或丢失可访问性(标记的 PDF)。如果我不关心带标签的 PDF 或可访问性怎么办?....并且仍然需要 PDFCopyFields 来完整地继承表单域。到目前为止,我被迫继续使用 PDFCopyFields,因为它完全满足我将 PDF 与交互式表单域连接的需要。如果 PDFCopyFields 消失,是否可以更新 PDFCopy 以选择复制字段?
我有一个 PDF 文件,其中包含基于 XFA (XML) 表单的嵌入表单。第一个 PDF 有一个 table ,其中包含一个人员列表。如果 table 溢出,随后的人员列表将由附录页面处理,该页面也是 PDF(基于 XFA 的表单)。是否可以使用 iText 将所有基于 XFA 的 PDF 合并为一个 PDF?
@BrunoLowagie 感谢您的回复。实际上,我设法让 iText 连接 PDF 交互式表单以创建自定义 PDF 数据包。让我解释一下我是怎么做到的。
通过使用 Adobe Acrobat XI Pro,我了解到当加载 XFA PDF 时,如果我转到“工具”->“编辑”,我将无法编辑表单(它通常会警告我此 PDF 是由 LiveCycle Designer 创建的),但是当我转到页面-> 提取,然后 select 所有要提取的页面时,整个基于 XFA 的 PDF 被提取并转换为基于 AcroForms 的 PDF。因此,如果我在基于 XFA 的 PDF 中有 25 个字段,它已成功将所有 25 个字段转换为 AcroForm 字段。不知何故,Adobe Acrobat 必须根据 XML 结构来确定变量名称。 (即 xpath)//form1/Page1/variable1 已转换为 acro 字段名称:form1[0].Page1[0].variable1[0]。所有可见(可编辑表单)字段都像往常一样存在并对齐(像素完美)。
如果我将 XFA PDF 展平,我将再次需要将表单域放回每一页,这会很乏味。通过使用 Pages->Extract->All Pages,它会为我转换所有内容(不需要展平 - 展平也会剥离所有字段;也不需要 XFA worker lib)。
但是,我的 PDF 数据包是静态的,我想重复附录页面以防数据从第二页溢出。我知道我可以修改初始 XFA 来处理此溢出,但客户希望使用完整的页面查找附录,headers/footers 完好无损。
我发现我可以通过Adobe Acrobat Pro->Pages->Extract->(SelectAddendum Page单独提取附录页来实现,然后它被转换成PDF格式w/AcroForm完好无损。
我拿了原始 PDF 数据包并尝试连接附录 PDF 页面。所以目前,主数据包有 AcroForm 字段,附录 PDF 页面也有 AcroForm 字段。
当我使用 PdfCopy 或 PdfConcatenate 进行连接时,我注意到我在调用 form.getFields()
时丢失了所有表单字段当我使用(已弃用的)PdfCopyFields 进行串联时,所有 AcroForm 字段都完好无损。 (正是我所需要的!)我还测试了 PdfCopyFields,其中一些字段是 filled/saved 并且 PdfCopyFields 仍然有效并保留了预填充的值。我查看了 PdfCopyFields 被标记为弃用的原因,说我们可以合并可访问文件并丢失表单,或者合并表单或丢失可访问性(标记的 PDF)。如果我不关心带标签的 PDF 或可访问性怎么办?....并且仍然需要 PDFCopyFields 来完整地继承表单域。到目前为止,我被迫继续使用 PDFCopyFields,因为它完全满足我将 PDF 与交互式表单域连接的需要。如果 PDFCopyFields 消失,是否可以更新 PDFCopy 以选择复制字段?