Импорт и экспорт данных формы

Aspose.PDF for Java поддерживает несколько распространённых форматов обмена данными для интерактивных форм.

Импорт данных форм из XML

Используйте этот пример, когда значения формы хранятся в XML‑файле и их нужно применить к PDF‑форме.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте поток входного XML и импортируйте данные в форму.
  3. Сохраните обновлённый PDF‑документ.
public static void importDataFromXml(Path inputFile, Path dataFile, Path outputFile) throws Exception {
    Form form = new Form();
    try (InputStream stream = Files.newInputStream(dataFile)) {
        form.bindPdf(inputFile.toString());
        form.importXml(stream);
        form.save(outputFile.toString());
    } finally {
        form.close();
    }
}

Экспорт данных формы в XML

Используйте этот пример, когда вам нужно сохранить текущие значения AcroForm в формате XML.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте поток вывода для XML‑файла.
  3. Экспортируйте данные формы в XML.
public static void exportDataToXml(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();
    }
}

Импорт данных форм из FDF

Используйте этот пример, когда значения формы приходят в формате обмена FDF.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте входной поток FDF и импортируйте данные.
  3. Сохраните заполненный документ PDF.
public static void importDataFromFdf(Path inputFile, Path dataFile, Path outputFile) throws Exception {
    Form form = new Form();
    try (InputStream stream = Files.newInputStream(dataFile)) {
        form.bindPdf(inputFile.toString());
        form.importFdf(stream);
        form.save(outputFile.toString());
    } finally {
        form.close();
    }
}

Экспорт данных форм в FDF

Используйте этот пример, когда значения формы PDF должны быть переданы в виде файла FDF.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте выходной поток для файла FDF.
  3. Экспортируйте данные формы в формате FDF.
public static void exportDataToFdf(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();
    }
}

Импорт данных форм из XFDF

Используйте этот пример, когда данные формы предоставлены в формате XFDF и их необходимо объединить с PDF.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте входной поток XFDF и импортируйте значения.
  3. Сохраните обновлённый PDF‑документ.
public static void importDataFromXfdf(Path inputFile, Path dataFile, Path outputFile) throws Exception {
    Form form = new Form();
    try (InputStream stream = Files.newInputStream(dataFile)) {
        form.bindPdf(inputFile.toString());
        form.importXfdf(stream);
        form.save(outputFile.toString());
    } finally {
        form.close();
    }
}

Экспорт данных форм в XFDF

Используйте этот пример, когда вам нужен файл обмена на основе XML для значений AcroForm.

  1. Создайте фасад Form и привяжите к нему исходный PDF.
  2. Откройте выходной поток для файла XFDF.
  3. Экспортируйте текущие значения формы в XFDF.
public static void exportDataToXfdf(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();
    }
}

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

Используйте этот пример, когда значения формы должны быть экспортированы в легковесное представление JSON.

  1. Откройте PDF с помощью фасада Form.
  2. Переберите имена полей и сериализуйте их значения в JSON‑текст.
  3. Запишите содержимое JSON в целевой файл.
public static void extractFormFieldsToJson(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();
    }
}

Повторно использование помощника извлечения JSON

Используйте этот пример, когда вам нужен выделенный метод‑обёртка, который делегирует основной процесс экспорта JSON.

  1. Вызовите существующий вспомогательный метод извлечения JSON, указав исходный PDF и путь вывода.
  2. Используйте повторно ту же логику извлечения, не дублируя код сериализации.
public static void extractFormFieldsToJsonDoc(Path inputFile, Path outputFile) throws Exception {
    extractFormFieldsToJson(inputFile, outputFile);
}