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("フィールド名 :" + formField.getPartialName());
        System.out.println("値 : " + formField.getValue());
    }
}

ドキュメントのフォームフィールドの名前がわかっている場合は、Documents.Form コレクションのインデクサーを使用してこのデータを迅速に取得できます。

タイトルでフォームフィールドの値を取得する

フォームフィールドの Value プロパティを使用すると、特定のフィールドの値を取得できます。値を取得するには、Document オブジェクトの フォームフィールドコレクションからフォームフィールドを取得します。この例では、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のようなサードパーティライブラリを使用することをお勧めします。以下のスニペットは、NameValueを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メソッドを使用してPDFファイルから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) {
            // 例外を処理する
            e.printStackTrace();
        }

    }

PDFファイルからXFDFへデータをエクスポートする

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