在 Adobe 的 PDF/A 的 ISO 32000 规范中,它声明 XFA 数据可以存储在 PDF/A-2 确认 PDF 中的特殊位置。这是该部分的文本。
将 XFA 数据集合并到符合 PDF/A-2 的文件中 为了支持符合 PDF/A-2 的文件,ExtensionLevel 3 通过 XFAResources 名称树添加了对 XML 表单数据(XFA 数据集)的支持,它是文档目录。
(请参阅第 23 页上的“名称字典中的表 3.28 条目”。)虽然在符合 PDF/A-2 的文件中允许使用 Acrobat 表单(和表单数据),但不允许使用 XML 表单。此类 XML 表单被指定为从交互式表单字典引用的 XDP 流。XDP 流可以包含 XFA 数据集。
对于将 PDF 文档转换为 PDF/A-2 的应用程序,XFAResources 名称树支持将 XML 表单数据从 PDF 文档中的 XDP 流重新定位到XFAResources名称树中。
XFAResources名称树由字符串名称和对流的间接引用组成。字符串名称是在文档转换为符合 PDF/A-2 的文件时创建的。流包含 XFA 的元素,由元素组成。
除了 XML 表单字段的数据值之外,这些元素还支持存储和检索可能对其他工作流有用的其他类型的信息,包括未绑定到表单字段的数据以及一个或多个 XML 签名。
请参阅参考书目中的 XML 架构、XML 表单架构 (XFA) 规范 2.6 版
我们有一个将 xml 传递给的 XFA 表单,现在需要将该文档转换为 PDF/A-2。
我们目前正在测试 XFA Worker,看看它是否允许我们这样做,我一直无法找到可以为我们执行此操作的 XFA Worker 样本。
我首先尝试使用 XFA Worker 进行扁平化,但这会完全删除数据并且不再能够被提取。
您如何将 XFA xml 数据放入 Adobe 说要使用 XFA Worker 放入的位置?
更新:感谢布鲁诺,我的代码不允许我将 XFA 表单转换为 PDF/A-2。这是我使用的代码。
xfa.fillXfaForm(new ByteArrayInputStream(xmlSchemaStream.toByteArray()));
stamper.close();
reader.close();
try (ByteArrayOutputStream outputStreamDest = new ByteArrayOutputStream()) {
PdfReader pdfAReader = new PdfReader(output.toByteArray());
PdfAStamper pdfAStamper = new PdfAStamper(pdfAReader, outputStreamDest, PdfAConformanceLevel.PDF_A_2A);
....
我收到错误 com.itextpdf.text.pdf.PdfAConformanceException: Only PDF/A 文档可以在 PdfAStamper 中打开。
所以我现在假设新的 PdfAStamper 不是转换器,而只是读取 XFA PDF 的字节数组。