Извлечение данных из AcroForm
Извлечение полей формы из PDF документа
Aspose.PDF для C++ позволяет не только создавать поля формы и заполнять их, но и легко извлекать данные полей формы или информацию о полях формы из PDF-файлов.
В примере кода ниже мы демонстрируем, как перебрать каждую страницу в PDF, чтобы извлечь информацию обо всех AcroForms в PDF, а также значения полей формы. Этот пример кода предполагает, что вы не знаете названия полей формы заранее.
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 << "Имя поля :" << formField->get_PartialName() << std::endl;
std::cout << "Значение : " << formField->get_Value() << std::endl;
}
std::clog << __func__ << ": Finish" << std::endl;
}
Извлечение данных в XML из PDF-файла
Класс Form позволяет экспортировать данные в XML-файл из PDF-файла, используя метод ExportXml. Чтобы экспортировать данные в XML, необходимо создать объект класса Form, а затем вызвать метод ExportXml, используя объект FileStream. Далее следует закрыть объект 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;
}
Экспорт данных в FDF из PDF файла
Класс Form позволяет экспортировать данные в FDF файл из PDF файла с помощью метода ExportFdf. Для того чтобы экспортировать данные в FDF, необходимо создать объект класса Form и затем вызвать метод ExportFdf, используя объект FileStream. После этого вы можете сохранить PDF файл, используя метод Save класса Form.
Следующий фрагмент кода показывает, как экспортировать данные в 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;
}
Экспорт данных в XFDF из PDF файла
Aspose PDF для C++ с классом Form позволяет экспортировать данные в файл XFDF из PDF файла, используя метод ExportXfdf. Чтобы экспортировать данные в XFDF, необходимо создать объект класса Form и затем вызвать метод ExportXfdf, используя объект FileStream.
В конце вы можете сохранить PDF файл, используя метод Save класса Form.
Следующий фрагмент кода показывает, как экспортировать данные в файл 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;
}