C++ を使用して AcroForm データを抽出する
Contents
[
Hide
]
PDF ドキュメントのすべてのフィールドから値を取得する
PDF ドキュメントのすべてのフィールドから値を取得するには、すべてのフォーム フィールドをナビゲートして、Value プロパティを使用して値を取得する必要があります。Form コレクションから各フィールドを取得し、Field と呼ばれる基本フィールド タイプでその Value プロパティにアクセスします。
次のコードスニペットは、PDF ドキュメントのすべてのフィールドの値を取得する方法を示しています。
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
void ExtractDataFromForm()
{
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
// すべてのフィールドから値を取得する
for(auto wa : document->get_Form())
{
auto formField = System::DynamicCast<Aspose::Pdf::Forms::Field>(wa);
Console::WriteLine(u"フィールド名 : {0} ", formField->get_PartialName());
Console::WriteLine(u"値 : {0} ", formField->get_Value());
}
}
PDFドキュメントの個々のフィールドから値を取得する
フォームフィールドのValueプロパティを使用して、特定のフィールドの値を取得できます。値を取得するには、DocumentオブジェクトのFormコレクションからフォームフィールドを取得します。この例では、TextBoxFieldを選択し、Valueプロパティを使用してその値を取得します。
次のコードスニペットは、PDFドキュメント内の個々のフィールドの値を取得する方法を示しています。
void GetValueFromIndividualField(){
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = MakeObject<Document>(_dataDir + u"GetValueFromField.pdf");
// フィールドを取得する
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
// フィールド値を取得する
Console::WriteLine(u"PartialName : {0} ", textBoxField->get_PartialName());
Console::WriteLine(u"Value : {0} ", textBoxField->get_Value());
}
送信ボタンのURLを取得するには、以下のコード行を使用します。
void GetSubmitButtonURL()
{
String _dataDir("C:\\Samples\\");
// Open document
auto document = MakeObject<Document>(_dataDir + u"GetValueFromField.pdf");
auto act = System::DynamicCast<Aspose::Pdf::Annotations::SubmitFormAction>(document->get_Form()->idx_get(1)->get_OnActivated());
if (act != nullptr)
Console::WriteLine(act->get_Url()->get_Name());
}
PDFファイルの特定の領域からフォームフィールドを取得する
時々、ドキュメント内のどこにフォームフィールドがあるかは分かっていても、その名前が分からないことがあります。例えば、印刷されたフォームの設計図しか持っていない場合です。Aspose.PDF for C++を使用すれば、これは問題ではありません。PDFファイルの特定の領域にどのフィールドがあるかを調べることができます。PDFファイルの特定の領域からフォームフィールドを取得するには:
- Documentオブジェクトを使用してPDFファイルを開く。
- その領域のフィールドを取得するために矩形オブジェクトを作成する。
- ドキュメントのFormsコレクションからフォームを取得する。
- フィールド名と値を表示する。
次のコードスニペットは、PDFファイルの特定の矩形領域内のフォームフィールドを取得する方法を示しています。
```cpp
void GetFormFieldsFromSpecificRegion()
{
String _dataDir("C:\\Samples\\");
// PDFファイルを開く
auto document = MakeObject<Aspose::Pdf::Document>(_dataDir + u"GetFieldsFromRegion.pdf");
// そのエリアのフィールドを取得するために長方形オブジェクトを作成
auto rectangle = MakeObject<Aspose::Pdf::Rectangle>(35, 30, 500, 500);
// 長方形エリア内のフィールドを取得
auto fields = document->get_Form()->GetFieldsInRect(rectangle);
// フィールド名と値を表示
for(auto field : fields)
{
// すべての配置の画像配置プロパティを表示
Console::WriteLine(u"Field Name: {0} - Field Value: {1}", field->get_FullName(), field->get_Value());
}
}