Extraire des données d'AcroForm à l'aide de Java

Extraire tous les champs du formulaire

Utilisez com.aspose.pdf.facades.Form pour lire les noms et les valeurs des champs sans passer par le modèle objet complet du document.

  1. Ouvrez le formulaire PDF source avec la façade Form afin que les champs AcroForm puissent être lus sans parcourir le modèle objet complet du document.

  2. Appelez getFieldNames() pour collecter tous les identifiants de champs présents dans le formulaire.

  3. Parcourez ces noms de champs et appelez getField(fieldName) pour lire chaque valeur de champ.

  4. Créez la chaîne de sortie à partir des paires clé-valeur extraites et affichez les données agrégées du formulaire.

  5. Fermez la façade Form dans le bloc 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();
    }
}

Récupérer une valeur de champ par nom

  1. Ouvrez le formulaire PDF source avec la façade Form.

  2. Appelez getField(fieldName) avec le nom du champ demandé pour lire sa valeur actuelle à partir des données AcroForm.

  3. Affichez la valeur du champ extraite.

  4. Fermez la façade Form dans le bloc 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();
    }
}

Exporter les champs du formulaire vers JSON

  1. Ouvrez le formulaire PDF source avec la façade Form.

  2. Appelez getFieldNames() pour collecter tous les identifiants de champs disponibles dans l’AcroForm.

  3. Parcourez ces champs, échappez les noms et les valeurs et créez une chaîne représentant un objet JSON.

  4. Écrivez le résultat JSON dans le fichier de sortie.

  5. Fermez la façade Form dans le bloc 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();
    }
}

Exporter les données du formulaire vers XML, FDF et XFDF

  1. Créez la façade Form sans encore lier de document.

  2. Ouvrez un flux de sortie pour le fichier XML et liez le PDF source à la façade avec bindPdf(...).

  3. Appelez exportXml(stream) pour que les données actuelles des champs de formulaire soient sérialisées au format XML.

  4. Fermez la façade Form une fois l’exportation terminée.

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. Créez la façade Form sans encore lier de document.

  2. Ouvrez un flux de sortie pour le fichier FDF et liez le PDF source à la façade avec bindPdf(...).

  3. Appelez exportFdf(stream) pour que les données des champs de formulaire soient sérialisées au format FDF.

  4. Fermez la façade Form une fois l’exportation terminée.

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. Créez la façade Form sans encore lier de document.

  2. Ouvrez un flux de sortie pour le fichier XFDF et liez le PDF source à la façade avec bindPdf(...).

  3. Appelez exportXfdf(stream) pour que les données des champs de formulaire soient sérialisées au format XFDF.

  4. Fermez la façade Form une fois l’exportation terminée.

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();
    }
}