AcroFormからデータを抽出する

PDFドキュメントからフォームフィールドを抽出する

Aspose.PDF for Android via Javaでは、フォームフィールドを作成および入力するだけでなく、PDFファイルからフォームフィールドデータやフォームフィールド情報を簡単に抽出することもできます。

フォームフィールドの名前を事前に知らないと仮定します。この場合、PDF内の各ページを反復し、PDF内のすべてのAcroFormsおよびフォームフィールドの値に関する情報を抽出する必要があります。フォームにアクセスするには、getForm メソッドを使用する必要があります。

 public void extractFormFields () {
        // ドキュメントを開く
        try {
            document=new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        // すべてのフィールドから値を取得
        StringBuilder sb=new StringBuilder();
        for (com.aspose.pdf.Field formField : document.getForm().getFields()) {
            sb.append("フィールド名: ");
            sb.append(formField.getPartialName());
            sb.append(" 値: ");
            sb.append(formField.getValue());
            sb.append('\n');
        }
        resultMessage.setText(sb);
    }

フォームフィールドの名前を知っている場合は、Documents.Form コレクションのインデクサーを使用して、このデータをすばやく取得できます。

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

フォームフィールドの Value プロパティを使用して、特定のフィールドの値を取得できます。値を取得するには、Document オブジェクトの フォームフィールドコレクション からフォームフィールドを取得します。この例では、TextBoxField を選択し、getValue メソッドを使用してその値を取得します。


    public void extractFormDataByName () {
        // ドキュメントを開く
        try {
            document=new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        com.aspose.pdf.TextBoxField textBoxField1
                =(com.aspose.pdf.TextBoxField) document.getForm().get("Last Name");

        resultMessage.setText("Last Name: " + textBoxField1.getValue());

    }

PDFファイルからXMLへデータを抽出する

Formクラスは、ExportXmlメソッドを使用してPDFファイルからXMLファイルにデータをエクスポートすることを可能にします。データをXMLにエクスポートするためには、まずFormクラスのオブジェクトを作成し、次にFileStreamオブジェクトを使用してExportXmlメソッドを呼び出す必要があります。最後に、FileStreamオブジェクトを閉じ、Formオブジェクトを破棄します。以下のコードスニペットは、データをXMLファイルにエクスポートする方法を示しています。

public void extractFormFieldsToXML () {
        // ドキュメントを開く
        try {
            document=new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        com.aspose.pdf.facades.Form form=new com.aspose.pdf.facades.Form();
        form.bindPdf(document);
        File file=new File(fileStorage, "output.xml");
        try {
            // XMLファイルを作成する。
            FileOutputStream xmlOutputStream;
            xmlOutputStream=new FileOutputStream(file.toString());
            // データをエクスポートする
            form.exportXml(xmlOutputStream);

            // ファイルストリームを閉じる
            xmlOutputStream.close();
        } catch (IOException e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        // ドキュメントを閉じる
        form.dispose();
    }

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

PDFフォームデータをXFDFファイルにエクスポートするには、FormクラスのexportFdfメソッドを使用します。

これはcom.aspose.pdf.facadesのクラスであることに注意してください。同じ名前ですが、このクラスは目的が少し異なります。

データをFDFにエクスポートするには、Formクラスのオブジェクトを作成し、OutputStreamオブジェクトを使用してexportXfdfメソッドを呼び出す必要があります。次のコードスニペットは、データをXFDFファイルにエクスポートする方法を示しています。

public void extractFormExportFDF () {
        // ドキュメントを開く
        try {
            document=new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        File file=new File(fileStorage, "student.fdf");

        com.aspose.pdf.facades.Form form=new com.aspose.pdf.facades.Form(document);
        FileOutputStream fdfOutputStream;
        try {

            fdfOutputStream=new FileOutputStream(file.toString());

            // データをエクスポートする
            form.exportFdf(fdfOutputStream);

            // ファイルストリームを閉じる
            fdfOutputStream.close();

        } catch (IOException e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

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

PDFフォームのデータをXFDFファイルにエクスポートするには、FormクラスのexportXfdfメソッドを使用できます。

データをXFDFにエクスポートするためには、まずFormクラスのオブジェクトを作成し、次にOutputStreamオブジェクトを使用してexportXfdfメソッドを呼び出す必要があります。 以下のコードスニペットは、データをXFDFファイルにエクスポートする方法を示しています。

    public void extractFormExportXFDF () {
        // ドキュメントを開く
        try {
            document=new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        File file=new File(fileStorage, "student.xfdf");

        com.aspose.pdf.facades.Form form=new com.aspose.pdf.facades.Form(document);
        FileOutputStream fdfOutputStream;
        try {

            fdfOutputStream=new FileOutputStream(file.toString());

            // データをエクスポート
            form.exportXfdf(fdfOutputStream);

            // ファイルストリームを閉じる
            fdfOutputStream.close();

        } catch (IOException e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }