コンピュータとインターネットの出現により、多くの情報がデジタルでキャプチャされます。さまざまな企業が、このプロセスをより効率的にするためのソリューションを考え出しました。そのような解決策の1つは、入力可能なPDFフォームです。 PDFフォームは、情報をデジタルで簡単に取得できるようにするための一般的な選択肢です。 PDFフォームは、調査データの取得または入場フォームとして使用できます。これに照らして、この記事では、C++を使用して入力可能なPDFフォームを作成、入力、および編集する方法について説明します。
- 入力可能なPDFフォームを作成、入力、編集するためのC++ API
- C++を使用して入力可能なPDFフォームを作成する
- C++を使用してPDFファイルの既存のフォームに入力します
- C++を使用してPDFフォームのフォームフィールドの値を変更する
- C++を使用して既存のPDFフォームからフォームフィールドを削除する
入力可能なPDFフォームを作成、入力、編集するためのC++ API
Aspose.PDF for C++は、PDFドキュメントの作成、読み取り、更新を可能にするC++ライブラリです。さらに、APIは、入力可能なPDFフォームの作成、入力、および編集をサポートします。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。
PM> Install-Package Aspose.PDF.Cpp
C++を使用して入力可能なPDFフォームを作成する
この例では、2つのテキストボックスと1つのラジオボタンを使用してフォームを最初から作成します。ただし、1つのテキストボックスは複数行で、もう1つは1行です。以下は、PDFファイルでフォームを作成する手順です。
- Documentクラスのインスタンスを作成します。
- ドキュメントに空白のページを追加します。
- TextBoxFieldクラスのインスタンスを作成します。
- FontSize、ColorなどのTextBoxFieldのプロパティを設定します。
- 2番目のTextBoxFieldのインスタンスを作成し、そのプロパティを設定します。
- Document->get_Form()->Add(System::SharedPtr field, int32_t pageNumber)メソッドを使用して、両方のテキストボックスをフォームに追加します。
- テーブルを作成します。
- RadioButtonFieldクラスのインスタンスを作成します。
- [Document->get_Form()->Add(System::SharedPtr field, int32_t pageNumber)]メソッドを使用してRadioButtonをフォームに追加します。
- RadioButtonOptionFieldクラスの2つのインスタンスを作成して、ラジオボタンのオプションを表します。
- OptionName、Width、Heightを設定し、RadioButtonField->Add(System::SharedPtr const & newItem)メソッドを使用してオプションをラジオボタンに追加します。
- Cell->get_Paragraphs()->Add(System::SharedPtr paragraph)メソッドを使用して、ラジオボタンのオプションをテーブルのセルに追加します。
- Document->Save(System::String outputFileName)メソッドを使用して出力ファイルを保存します。
次のサンプルコードは、C++を使用してPDFファイルにフォームを作成する方法を示しています。
// Documentクラスのインスタンスを作成します
auto pdfDocument = MakeObject<Document>();
// ドキュメントに空白のページを追加します
System::SharedPtr<Page> page = pdfDocument->get_Pages()->Add();
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle1 = MakeObject<Aspose::Pdf::Rectangle>(275, 740, 440, 770);
// TextBoxFieldを作成します
System::SharedPtr<TextBoxField> nameBox = MakeObject<TextBoxField>(pdfDocument, rectangle1);
nameBox->set_PartialName(u"nameBox1");
nameBox->get_DefaultAppearance()->set_FontSize(10);
nameBox->set_Multiline(true);
System::SharedPtr<Border> nameBorder = MakeObject<Border>(nameBox);
nameBorder->set_Width(1);
nameBox->set_Border(nameBorder);
nameBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
nameBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));
System::SharedPtr<Aspose::Pdf::Rectangle> rectangle2 = MakeObject<Aspose::Pdf::Rectangle>(275, 718, 440, 738);
// TextBoxFieldを作成します
System::SharedPtr<TextBoxField> mrnBox = MakeObject<TextBoxField>(pdfDocument, rectangle2);
mrnBox->set_PartialName(u"Box1");
mrnBox->get_DefaultAppearance()->set_FontSize(10);
System::SharedPtr<Border> mrnBorder = MakeObject<Border>(mrnBox);
mrnBox->set_Width(165);
mrnBox->set_Border(mrnBorder);
mrnBox->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
mrnBox->set_Color(Aspose::Pdf::Color::FromRgb(System::Drawing::Color::get_Red()));
// TextBoxFieldをフォームに追加します
pdfDocument->get_Form()->Add(nameBox, 1);
pdfDocument->get_Form()->Add(mrnBox, 1);
// テーブルを作成する
System::SharedPtr<Table> table = MakeObject<Table>();
table->set_Left(200);
table->set_Top(300);
table->set_ColumnWidths(u"120");
// ページにテーブルを追加します
page->get_Paragraphs()->Add(table);
// 行と列を作成する
System::SharedPtr<Row> r1 = table->get_Rows()->Add();
System::SharedPtr<Row> r2 = table->get_Rows()->Add();
System::SharedPtr<Cell> c1 = r1->get_Cells()->Add();
System::SharedPtr<Cell> c2 = r2->get_Cells()->Add();
// RadioButtonFieldを作成します
System::SharedPtr<RadioButtonField> rf = MakeObject<RadioButtonField>(page);
rf->set_PartialName(u"radio");
// RadioButtonFieldをフォームに追加します
pdfDocument->get_Form()->Add(rf, 1);
// ラジオボタンオプションを作成する
System::SharedPtr<RadioButtonOptionField> opt1 = MakeObject<RadioButtonOptionField>();
System::SharedPtr<RadioButtonOptionField> opt2 = MakeObject<RadioButtonOptionField>();
opt1->set_OptionName(u"Yes");
opt2->set_OptionName(u"No");
opt1->set_Width(15);
opt1->set_Height(15);
opt2->set_Width(15);
opt2->set_Height(15);
// RadioButtonFieldにオプションを追加します
rf->Add(opt1);
rf->Add(opt2);
System::SharedPtr<Border> opt1Border = MakeObject<Border>(opt1);
opt1->set_Border(opt1Border);
opt1->get_Border()->set_Width(1);
opt1->get_Border()->set_Style(BorderStyle::Solid);
opt1->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt1->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());
System::SharedPtr<TextFragment> opt1Fragment = MakeObject<TextFragment>(u"Yes");
opt1->set_Caption(opt1Fragment);
System::SharedPtr<Border> opt2Border = MakeObject<Border>(opt2);
opt2->set_Border(opt2Border);
opt2->get_Border()->set_Width(1);
opt2->get_Border()->set_Style(BorderStyle::Solid);
opt2->get_Characteristics()->set_Border(System::Drawing::Color::get_Black());
opt2->get_DefaultAppearance()->set_TextColor(System::Drawing::Color::get_Red());
System::SharedPtr<TextFragment> opt2Fragment = MakeObject<TextFragment>(u"No");
opt2->set_Caption(opt2Fragment);
// テーブルのセルにオプションを追加します
c1->get_Paragraphs()->Add(opt1);
c2->get_Paragraphs()->Add(opt2);
// 出力ファイルを保存します
pdfDocument->Save(u"OutputDirectory\\Fillable_PDF_Form_Out.pdf");
C++を使用してPDFファイルの既存のフォームに入力します
この例では、前の例で生成されたファイルを使用します。 Documentクラスを使用してファイルをロードし、そのフィールドに入力します。以下は、既存のPDFフォームのフィールドに入力する手順です。
- Documentクラスを使用してPDFファイルをロードします。
- Document->getForm()->idx_get(System::String name)メソッドを使用してTextBoxFieldsを取得します。
- TextBoxField->setValue(System::String value)メソッドを使用して、両方のTextBoxFieldの値を設定します。
- Document->getForm()->idx_get(System::String name)メソッドを使用して、RadioButtonFieldを取得します。
- RadioButtonField->setSelected(int32_t value)メソッドを使用して、RadioButtonFieldの値を設定します。
- Document->Save(System::String outputFileName)メソッドを使用して出力ファイルを保存します。
次のサンプルコードは、C++を使用してPDFファイルの既存のフォームに入力する方法を示しています。
// PDFファイルをロードします
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fillable_PDF_Form.pdf");
// テキストボックスフィールドを取得する
System::SharedPtr<TextBoxField> textBoxField1 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
System::SharedPtr<TextBoxField> textBoxField2 = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"Box1"));
// テキストボックスフィールドの値を設定します
textBoxField1->set_Value(u"A quick brown fox jumped over the lazy dog.");
textBoxField2->set_Value(u"A quick brown fox jumped over the lazy dog.");
// ラジオボタンフィールドを取得する
System::SharedPtr<RadioButtonField> radioField = System::DynamicCast<RadioButtonField>(pdfDocument->get_Form()->idx_get(u"radio"));
// ラジオボタンフィールドの値を設定します
radioField->set_Selected(1);
// 出力ファイルを保存します
pdfDocument->Save(u"OutputDirectory\\Fill_PDF_Form_Field_Out.pdf");
C++を使用してPDFフォームのフォームフィールドの値を変更する
Aspose.PDF for C++を使用すると、以前に入力されたフィールドの値を変更することもできます。この例では、前の例で生成されたファイルを使用して、最初のTextBoxFieldの値を変更します。これを実現するには、以下の手順に従ってください。
- Documentクラスを使用してPDFファイルをロードします。
- Document->getForm()->idx_get(System::String name)メソッドを使用して、TextBoxFieldを取得します。
- TextBoxField->setValue(System::String value)メソッドを使用して、TextBoxFieldの値を更新します。
- Document->Save(System::String outputFileName)メソッドを使用して出力ファイルを保存します。
次のサンプルコードは、C++を使用してPDFフォームのフィールドの値を変更する方法を示しています。
// PDFファイルをロードします
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// TextBoxFieldを取得します
System::SharedPtr<TextBoxField> textBoxField = System::DynamicCast<TextBoxField>(pdfDocument->get_Form()->idx_get(u"nameBox1"));
// TextBoxFieldの値を更新します
textBoxField->set_Value(u"Changed Value");
// TextBoxFieldを読み取り専用としてマークします
textBoxField->set_ReadOnly(true);
// 出力ファイルを保存します
pdfDocument->Save(u"OutputDirectory\\Modify_Form_Field_out.pdf");
C++を使用して既存のPDFフォームからフォームフィールドを削除する
APIを使用すると、既存のPDFフォームからフォームフィールドを削除することもできます。以下は、PDFフォームからフォームフィールドを削除する手順です。
- Documentクラスを使用してPDFファイルをロードします。
- Document->getForm()->Delete(System::String fieldName)メソッドを使用してフィールドを削除します。
- Document->Save(System::String outputFileName)メソッドを使用して出力ファイルを保存します。
次のサンプルコードは、C++を使用して既存のPDFフォームからフォームフィールドを削除する方法を示しています。
// PDFファイルをロードします
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Fill_PDF_Form_Field.pdf");
// フィールドを削除します
pdfDocument->get_Form()->Delete(u"nameBox1");
// 出力ファイルを保存します
pdfDocument->Save(u"OutputDirectory\\Delete_Form_Field_out.pdf");
無料ライセンスを取得する
無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。
結論
この記事では、C++を使用してPDFファイルでフォームを作成する方法を学習しました。さらに、PDFフォームの既存のフィールドに入力および変更する方法を学習しました。また、Aspose.PDF for C++APIを使用してPDFフォームからフォームフィールドを削除する方法も確認しました。 APIは、PDFファイルを操作するための一連の追加機能を提供します。これらの機能は、公式ドキュメントを参照することで詳細に調べることができます。 APIのいずれかの側面について質問がある場合は、無料サポートフォーラムまでお気軽にお問い合わせください。