AcroForm에서 데이터 추출

PDF 문서에서 양식 필드 추출

Aspose.PDF for C++는 양식 필드를 생성하고 양식 필드를 채울 수 있을 뿐만 아니라 PDF 파일에서 양식 필드 데이터 또는 양식 필드 정보를 쉽게 추출할 수 있도록 합니다.

아래 코드 예제에서는 PDF의 각 페이지를 반복하여 PDF의 모든 AcroForms 및 양식 필드 값에 대한 정보를 추출하는 방법을 보여줍니다. 이 코드 예제는 양식 필드의 이름을 미리 알지 못한다고 가정합니다.

void ExtractFormFields() {
    std::clog << __func__ << ": Start" << std::endl;
    // 경로 이름을 위한 문자열
    String _dataDir("C:\\Samples\\Parsing\\");

    // 파일 이름을 위한 문자열
    String infilename("StudentInfoFormElectronic.pdf");

    // 문서 열기
    auto document = MakeObject<Document>(_dataDir + infilename);

    // 모든 필드에서 값 가져오기
    for (auto formField : document->get_Form()->get_Fields()) {
        std::cout << "Field Name :" << formField->get_PartialName() << std::endl;
        std::cout << "Value : " << formField->get_Value() << std::endl;
    }
    std::clog << __func__ << ": Finish" << std::endl;
}

PDF 파일에서 XML로 데이터 추출

Form 클래스는 ExportXml 메서드를 사용하여 PDF 파일에서 XML 파일로 데이터를 내보낼 수 있게 해줍니다. XML로 데이터를 내보내려면 Form 클래스의 객체를 생성한 다음 FileStream 객체를 사용하여 ExportXml 메서드를 호출해야 합니다. 그 다음 FileStream 객체를 닫고 Form 객체를 해제해야 합니다.

다음 코드 조각은 XML 파일로 데이터를 내보내는 방법을 보여줍니다.

void ExtractFormFieldsToXML() {
    std::clog << __func__ << ": Start" << std::endl;
    // 경로 이름을 위한 문자열
    String _dataDir("C:\\Samples\\Parsing\\");

    // 파일 이름을 위한 문자열
    String infilename(_dataDir + u"StudentInfoFormElectronic.pdf");
    String xmlFileName(_dataDir + u"StudentInfoFormElectronic.xml");

    auto form = MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + infilename);
    auto fdfOutputStream = System::IO::File::OpenWrite(xmlFileName);

    // 데이터 내보내기
    form->ExportXml(fdfOutputStream);

    // 파일 스트림 닫기
    fdfOutputStream->Close();
    std::clog << __func__ << ": Finish" << std::endl;
}

PDF 파일에서 FDF로 데이터 내보내기

Form 클래스는 ExportFdf 메서드를 사용하여 PDF 파일에서 FDF 파일로 데이터를 내보낼 수 있습니다. 데이터를 FDF로 내보내기 위해서는 Form 클래스의 객체를 생성한 후 FileStream 객체를 사용하여 ExportFdf 메서드를 호출해야 합니다. 그 후 Form 클래스의 Save 메서드를 사용하여 PDF 파일을 저장할 수 있습니다.

다음 코드 스니펫은 데이터를 FDF 파일로 내보내는 방법을 보여줍니다.

void ExtractFormExportFDF() {
    std::clog << __func__ << ": Start" << std::endl;
    // 경로 이름을 위한 문자열
    String _dataDir("C:\\Samples\\Parsing\\");

    // 파일 이름을 위한 문자열
    String infilename(_dataDir + u"StudentInfoFormElectronic.pdf");
    String fdfFileName(_dataDir+ u"StudentInfoFormElectronic.fdf");

    //String fdfFileName = Paths.get(_dataDir, "student.xfdf").toString();
    auto form = MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + infilename);

    auto fdfOutputStream = System::IO::File::OpenWrite(fdfFileName);

    // 데이터 내보내기
    form->ExportFdf(fdfOutputStream);

    // 파일 스트림 닫기
    fdfOutputStream->Close();
    std::clog << __func__ << ": Finish" << std::endl;
}

PDF 파일에서 XFDF로 데이터 내보내기

Aspose PDF for C++의 Form 클래스는 ExportXfdf 메서드를 사용하여 PDF 파일에서 XFDF 파일로 데이터를 내보낼 수 있습니다. XFDF로 데이터를 내보내려면 Form 클래스의 객체를 생성한 후 FileStream 객체를 사용하여 ExportXfdf 메서드를 호출해야 합니다.

마지막으로, Form 클래스의 Save 메서드를 사용하여 PDF 파일을 저장할 수 있습니다.

다음 코드 스니펫은 XFDF 파일로 데이터를 내보내는 방법을 보여줍니다.

void ExtractFormExportXFDF() {
    std::clog << __func__ << ": Start" << std::endl;
    // 경로 이름에 대한 문자열
    String _dataDir("C:\\Samples\\Parsing\\");

    // 파일 이름에 대한 문자열
    String infilename("StudentInfoFormElectronic.pdf");
    String fdfFileName("StudentInfoFormElectronic.xfdf");

    //String fdfFileName = Paths.get(_dataDir, "student.xfdf").toString();
    auto form = MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + infilename);

    auto fdfOutputStream = System::IO::File::OpenWrite(fdfFileName);

    // 데이터 내보내기
    form->ExportXfdf(fdfOutputStream);

    // 파일 스트림 닫기
    fdfOutputStream->Close();
    std::clog << __func__ << ": Finish" << std::endl;
}