从AcroForm提取数据
从PDF文档中提取表单字段
Aspose.PDF for Java不仅可以让您创建和填写表单字段,还可以轻松地从PDF文件中提取表单字段数据或表单字段信息。
假设我们事先不知道表单字段的名称。那么我们应该遍历PDF中的每一页,以提取PDF中所有AcroForms的信息以及表单字段的值。要访问表单,我们需要使用getForm方法。
public static void ExtractFormFields() {
String path= "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";
com.aspose.pdf.Document document = new com.aspose.pdf.Document(path);
// 从所有字段获取值
for (com.aspose.pdf.Field formField : document.getForm().getFields()) {
System.out.println("Field Name :" + formField.getPartialName());
System.out.println("Value : " + formField.getValue());
}
}
如果您知道要提取值的表单字段的名称,则可以使用 Documents.Form 集合中的索引器快速检索此数据。
按标题检索表单字段值
表单字段的 Value 属性允许您获取特定字段的值。要获取该值,请从 Document 对象的 form field collection 获取表单字段。此示例选择一个 TextBoxField 并使用 getValue 方法检索其值。
public static void ExtractFormDataByName() {
String fileName = _dataDir+"/StudentInfoFormElectronic.pdf";
com.aspose.pdf.Document document = new com.aspose.pdf.Document(fileName);
com.aspose.pdf.TextBoxField textBoxField1 = (com.aspose.pdf.TextBoxField)document.getForm().get("Last Name");
System.out.println("Last Name :" + textBoxField1.getValue());
}
从PDF文档提取表单字段到JSON
为了将表单数据导出为JSON,我们推荐使用像Gson这样的第三方库。以下代码片段展示了如何将Name
和Value
导出为JSON:
public static void ExtractFormFieldsToJson() {
String path = "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";
com.aspose.pdf.Document document = new com.aspose.pdf.Document(path);
java.util.List<FormElement> formData = new java.util.ArrayList<FormElement>();
for (com.aspose.pdf.Field formField : document.getForm().getFields()) {
formData.add(new FormElement(formField.getPartialName(), formField.getValue()));
}
Gson gson = new Gson();
String jsonString = gson.toJson(formData);
System.out.println(jsonString);
}
在这个例子中,我们使用了一个额外的类
public class FormElement {
public FormElement(String partialName, String Value) {
this.Name = partialName;
this.Value = Value;
}
public String Name;
public String Value;
}
从 PDF 文件提取数据到 XML
Form 类允许您使用 ExportXml 方法将数据导出到 XML 文件中。为了将数据导出到 XML,您需要创建一个 Form 类的对象,然后使用 FileStream 对象调用 ExportXml 方法。最后,您可以关闭 FileStream 对象并释放 Form 对象。以下代码片段向您展示如何将数据导出到 XML 文件。
public static void ExtractFormFieldsToXML() {
String dataDir = "/home/admin/pdf-examples/Samples/StudentInfoFormElectronic.pdf";
// 打开文档
com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form();
form.bindPdf(dataDir + "input.pdf");
try {
// 创建 XML 文件。
FileOutputStream xmlOutputStream;
xmlOutputStream = new FileOutputStream(dataDir + "input.xml");
// 导出数据
form.exportXml(xmlOutputStream);
// 关闭文件流
xmlOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
// 关闭文档
form.dispose();
;
}
将数据从 PDF 文件导出到 FDF
要将 PDF 表单数据导出到 XFDF 文件,我们可以使用 Form 类中的 exportFdf 方法。
请注意,这是来自 com.aspose.pdf.facades
的一个类。尽管名称相似,这个类的用途略有不同。
为了将数据导出到 FDF,您需要创建一个 Form
类的对象,然后使用 OutputStream
对象调用 exportXfdf
方法。以下代码片段展示了如何将数据导出到 XFDF 文件。
public static void ExtractFormExportFDF() {
String pdfFileName = Paths.get(_dataDir, "StudentInfoFormElectronic.pdf").toString();
String fdfFileName = Paths.get(_dataDir, "student.fdf").toString();
com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form(pdfFileName);
OutputStream fdfOutputStream;
try {
fdfOutputStream = new FileOutputStream(fdfFileName);
// 导出数据
form.exportFdf(fdfOutputStream);
// 关闭文件流
fdfOutputStream.close();
} catch (IOException e) {
// TODO: 处理异常
e.printStackTrace();
}
}
导出数据到 XFDF 从 PDF 文件
要将 PDF 表单数据导出到 XFDF 文件,我们可以使用 Form 类中的 exportXfdf 方法。
为了导出数据到 XFDF,您需要创建一个 Form
类的对象,然后使用 OutputStream
对象调用 exportXfdf
方法。 以下代码片段展示了如何将数据导出到 XFDF 文件。
public static void ExtractFormExportXFDF() {
String pdfFileName = Paths.get(_dataDir, "StudentInfoFormElectronic.pdf").toString();
String fdfFileName = Paths.get(_dataDir, "student.xfdf").toString();
com.aspose.pdf.facades.Form form = new com.aspose.pdf.facades.Form(pdfFileName);
OutputStream fdfOutputStream;
try {
fdfOutputStream = new FileOutputStream(fdfFileName);
// 导出数据
form.exportXfdf(fdfOutputStream);
// 关闭文件流
fdfOutputStream.close();
} catch (IOException e) {
// TODO: 处理异常
e.printStackTrace();
}
}