Извлечение данных из AcroForm с помощью Java

Извлечение всех полей формы

Используйте com.aspose.pdf.facades.Form, чтобы читать имена полей и их значения без обхода полной объектной модели документа.

  1. Откройте исходную PDF-форму с помощью фасада Form, чтобы поля AcroForm можно было читать без обхода полной объектной модели документа.
  2. Вызовите getFieldNames() для сбора всех идентификаторов полей, присутствующих в форме.
  3. Переберите эти имена полей и вызовите getField(fieldName), чтобы прочитать значение каждого поля.
  4. Создайте строку вывода из извлечённых пар ключ-значение и выведите агрегированные данные формы.
  5. Закройте фасад 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();
    }
}

Получение значения поля по имени

  1. Откройте исходную PDF-форму с помощью фасада Form.
  2. Вызовите getField(fieldName) с указанным именем поля, чтобы прочитать его текущее значение из данных AcroForm.
  3. Выведите извлечённое значение поля.
  4. Закройте фасад 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

  1. Откройте исходную PDF-форму с помощью фасада Form.
  2. Вызовите getFieldNames(), чтобы собрать все доступные идентификаторы полей из AcroForm.
  3. Пройдите по этим полям, экранируйте имена и значения и построьте строку JSON‑объекта.
  4. Запишите результат JSON в выходной файл.
  5. Закройте фасад 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

  1. Создайте фасад Form без привязки документа.
  2. Откройте поток вывода для XML‑файла и привяжите исходный PDF к фасаду с помощью bindPdf(...).
  3. Вызовите exportXml(stream) для сериализации текущих данных полей формы в XML.
  4. Закройте фасад 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();
    }
}
  1. Создайте фасад Form без привязки документа.
  2. Откройте поток вывода для файла FDF и привяжите исходный PDF к фасаду с помощью bindPdf(...).
  3. Вызовите exportFdf(stream) для сериализации данных полей формы в формате FDF.
  4. Закройте фасад 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();
    }
}
  1. Создайте фасад Form без привязки документа.
  2. Откройте поток вывода для файла XFDF и привяжите исходный PDF к фасаду с помощью bindPdf(...).
  3. Вызовите exportXfdf(stream) для сериализации данных полей формы в формате XFDF.
  4. Закройте фасад 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();
    }
}