从AcroForm中提取数据
Contents
[
Hide
]
从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
表单 类允许您使用 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;
}