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 << "フィールド名 :" << formField->get_PartialName() << std::endl;
std::cout << "値 : " << 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;
}