【发布时间】:2018-03-02 05:55:39
【问题描述】:
我可以在 iText 中一直看到空白字段,但是当我使用 Adobe Acrobat Reader DC 手动打开时可以看到它们
com.lowagie.text.pdf.PdfReader reader = new com.lowagie.text.pdf.PdfReader(
new PRInputStream(dataFile));
com.lowagie.text.pdf.AcroFields af = reader.getAcroFields();
System.out.println("Field Names:" + af.getFields());
使用同一软件生成的静态 PDF 工作正常。
Expected records : 1
Actual : 0
请查找示例 PDF 文件 https://forums.adobe.com/servlet/JiveServlet/download/2051245-11361/ExpandingTextBox.pdf
用下面的sn-p
com.lowagie.text.pdf.AcroFields af = reader.getAcroFields();
System.out.println("Field Names:"+af.getXfa().getTemplateSom().getName2Node().toString());
我可以看到
Field Names:{form1[0].#subform[0].TextFieldContainer[0].TextField1[0]=[field: null]}
但不是实际的字段名称。
【问题讨论】:
-
您正在使用 iText 2.1.7 或更早版本,即 9 岁。你能用一个月前发布的 iText 5.1.3 或 7.1.1 重现这个吗?
-
问题是您正在尝试使用 AcroForm API 调用读取 XFA 表单。通过从 PDF 中获取 XFA 表单,您走在了正确的轨道上,但是,您需要解析您提取的 XML,这不是 iText 将为您做的事情。
-
@MichaëlDemey 抱歉,我没明白你的意思,你能详细说明一下吗?我的要求只是从 PDF 中获取可用的字段名称。您的意思是 iText API 无法从动态 PDF 中获取字段名称?
-
@AmedeeVanGasse 我用 5.3.4 尝试过,对于上面的 sn-p,结果仍然相同,我需要尝试不同的方法吗?
-
我让你用 5.5.13 做,而不是用 5.3.4。
标签: java itext adobe dynamicpdf