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("Field Name: ");
            sb.append(formField.getPartialName());
            sb.append(" Value: ");
            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);
    }