Извлечение данных из AcroForm с помощью Java
Contents
[
Hide
]
Извлечение всех полей формы
Используйте com.aspose.pdf.facades.Form, чтобы читать имена полей и их значения без обхода полной объектной модели документа.
- Откройте исходную PDF-форму с помощью фасада Form, чтобы поля AcroForm можно было читать без обхода полной объектной модели документа.
- Вызовите
getFieldNames()для сбора всех идентификаторов полей, присутствующих в форме. - Переберите эти имена полей и вызовите
getField(fieldName), чтобы прочитать значение каждого поля. - Создайте строку вывода из извлечённых пар ключ-значение и выведите агрегированные данные формы.
- Закройте фасад Form в блоке
finally.
public static void extractFormFields(Path inputFile) {
Form form = new Form(inputFile.toString());
try {
StringBuilder formValues = new StringBuilder("{");
String[] fieldNames = form.getFieldNames();
for (int i = 0; i < fieldNames.length; i++) {
if (i > 0) {
formValues.append(", ");
}
formValues.append(fieldNames[i]).append("=").append(form.getField(fieldNames[i]));
}
formValues.append("}");
System.out.println(formValues);
} finally {
form.close();
}
}
Получение значения поля по имени
- Откройте исходную PDF-форму с помощью фасада Form.
- Вызовите
getField(fieldName)с указанным именем поля, чтобы прочитать его текущее значение из данных AcroForm. - Выведите извлечённое значение поля.
- Закройте фасад Form в блоке
finally.
public static void extractFormFieldByTitle(Path inputFile, String fieldName) {
Form form = new Form(inputFile.toString());
try {
String formValue = form.getField(fieldName);
System.out.println(formValue);
} finally {
form.close();
}
}
Экспорт полей формы в JSON
- Откройте исходную PDF-форму с помощью фасада Form.
- Вызовите
getFieldNames(), чтобы собрать все доступные идентификаторы полей из AcroForm. - Пройдите по этим полям, экранируйте имена и значения и построьте строку JSON‑объекта.
- Запишите результат JSON в выходной файл.
- Закройте фасад Form в блоке
finally.
public static void extractFormFieldsJson(Path inputFile, Path outputFile) throws Exception {
Form form = new Form(inputFile.toString());
try {
StringBuilder json = new StringBuilder();
json.append("{\n");
String[] fieldNames = form.getFieldNames();
for (int i = 0; i < fieldNames.length; i++) {
String fieldName = fieldNames[i];
json.append(" \"").append(escapeJson(fieldName)).append("\": \"")
.append(escapeJson(form.getField(fieldName))).append("\"");
if (i < fieldNames.length - 1) {
json.append(",");
}
json.append("\n");
}
json.append("}\n");
Files.writeString(outputFile, json.toString());
} finally {
form.close();
}
}
Экспорт данных форм в XML, FDF и XFDF
- Создайте фасад Form без привязки документа.
- Откройте поток вывода для XML‑файла и привяжите исходный PDF к фасаду с помощью
bindPdf(...). - Вызовите
exportXml(stream)для сериализации текущих данных полей формы в XML. - Закройте фасад Form после завершения экспорта.
public static void extractDataToXml(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportXml(stream);
} finally {
form.close();
}
}
- Создайте фасад Form без привязки документа.
- Откройте поток вывода для файла FDF и привяжите исходный PDF к фасаду с помощью
bindPdf(...). - Вызовите
exportFdf(stream)для сериализации данных полей формы в формате FDF. - Закройте фасад Form после завершения экспорта.
public static void extractDataToFdf(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportFdf(stream);
} finally {
form.close();
}
}
- Создайте фасад Form без привязки документа.
- Откройте поток вывода для файла XFDF и привяжите исходный PDF к фасаду с помощью
bindPdf(...). - Вызовите
exportXfdf(stream)для сериализации данных полей формы в формате XFDF. - Закройте фасад Form после завершения экспорта.
public static void extractDataToXfdf(Path inputFile, Path outputFile) throws Exception {
Form form = new Form();
try (OutputStream stream = Files.newOutputStream(outputFile)) {
form.bindPdf(inputFile.toString());
form.exportXfdf(stream);
} finally {
form.close();
}
}