AcroFormの変更
フィールド制限を取得または設定する
FormEditorクラスのSetFieldLimit(field, limit)メソッドは、フィールド制限を設定することを可能にします。これは、フィールドに入力できる文字数の最大値です。
void SetFieldLimitDom() {
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
textBoxField->set_MaxLen(15);
document->Save(_dataDir + u"GetValuesFromAllFields.pdf");
}
同様に、Aspose.PDFにはDOMアプローチを使用してフィールド制限を取得するメソッドがあります。 以下のコードスニペットは手順を示しています。
void GetFieldLimitDom() {
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = MakeObject<Document>(_dataDir + u"GetValuesFromAllFields.pdf");
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
Console::WriteLine(u"Limit: {0}", textBoxField->get_MaxLen());
}
同じ値をAspose.PDF.Facades名前空間を使用して設定および取得することもできます。次のコードスニペットを使用します。
using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Forms;
void SetFieldLimitFacade(){
String _dataDir("C:\\Samples\\");
// 制限付きフィールドを追加
auto form = MakeObject<Aspose::Pdf::Facades::FormEditor>(_dataDir + u"input.pdf", _dataDir + u"SetFieldLimit_out.pdf");
form->SetFieldLimit(u"textbox1", 15);
form->Save();
}
void GetFieldLimitFacade(){
String _dataDir("C:\\Samples\\");
// 制限付きフィールドを追加
auto form = MakeObject<Aspose::Pdf::Facades::Form>(_dataDir + u"input.pdf");
Console::WriteLine(u"Limit: {0}", form->GetFieldLimit(u"textbox1"));
}
フォームフィールドのカスタムフォントを設定する
Adobe PDFファイルのフォームフィールドは、特定のデフォルトフォントを使用するように設定できます。Aspose.PDFの初期バージョンでは、14種類のデフォルトフォントのみがサポートされていました。後のリリースでは、開発者が任意のフォントを適用できるようになりました。フォームフィールドで使用するデフォルトフォントを設定および更新するには、DefaultAppearance (Font font, double size, Color color) クラスを使用します。このクラスは、Aspose.PDF.InteractiveFeatures 名前空間の下にあります。このオブジェクトを使用するには、Field クラスの DefaultAppearance プロパティを使用します。
次のコードスニペットは、PDFフォームフィールドのデフォルトフォントを設定する方法を示しています。
void SetCustomFontForField() {
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = new Document(_dataDir + u"FormFieldFont14.pdf");
// ドキュメントから特定のフォームフィールドを取得
auto textBoxField = System::DynamicCast<TextBoxField>(document->get_Form()->idx_get(u"textbox1"));
// フォントオブジェクトを作成
auto font = Aspose::Pdf::Text::FontRepository::FindFont(u"ComicSansMS");
// フォームフィールドのフォント情報を設定
textBoxField->set_DefaultAppearance(MakeObject<Aspose::Pdf::Annotations::DefaultAppearance>(font, 10, System::Drawing::Color::get_Black()));
// 更新されたドキュメントを保存
document->Save(_dataDir + u"FormFieldFont14.pdf");
}
既存のフォームからフィールドを削除する
すべてのフォームフィールドは、Document オブジェクトの Form コレクションに含まれています。このコレクションは、フィールドを管理するためのさまざまなメソッドを提供しており、Delete メソッドも含まれています。特定のフィールドを削除したい場合は、フィールド名を Delete メソッドのパラメーターとして渡し、更新された PDF ドキュメントを保存します。次のコードスニペットは、PDF ドキュメントから特定のフィールドを削除する方法を示しています。
void DeleteFormField() {
String _dataDir("C:\\Samples\\");
// ドキュメントを開く
auto document = new Document(_dataDir + u"DeleteFormField.pdf");
// 名前で特定のフィールドを削除する
document->get_Form()->Delete(u"textbox1");
// 変更されたドキュメントを保存する
document->Save(_dataDir + u"DeleteFormField_out.pdf");
}