XFAフォームの操作

Formクラスは、静的なAcroFormを扱う機能を提供し、FormクラスのGetFieldFacade(..)メソッドを使用して特定のフィールドインスタンスを取得できます。しかし、XFAフィールドはForm.GetFieldFacade(..)メソッドを介してアクセスすることはできません。代わりに、Document.Form.XFAを使用してフィールド値を取得/設定し、XFAフィールドテンプレートを操作します(フィールドプロパティを設定します)。

以下のコードスニペットもAspose.PDF.Drawingライブラリで動作します。

XFAフィールドを埋める

以下のコードスニペットは、XFAフォームのフィールドを埋める方法を示しています。 次のコードスニペットは、XFAフォームのフィールドを埋める方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// XFAフォームをロード
Document doc = new Document(dataDir + "FillXFAFields.pdf");

// XFAフォームフィールドの名前を取得
string[] names = doc.Form.XFA.FieldNames;

// フィールド値を設定
doc.Form.XFA[names[0]] = "Field 0";
doc.Form.XFA[names[1]] = "Field 1";
dataDir = dataDir + "Filled_XFA_out.pdf";
// 更新されたドキュメントを保存
doc.Save(dataDir);

XFAからAcroformへの変換

動的フォームは、“XML Forms Architecture” として知られるXML仕様に基づいています。 動的フォームは、「XML Forms Architecture」として知られるXML仕様に基づいています。

現在、PDFはデータとPDFフォームを統合するための2つの異なる方法をサポートしています:

  • AcroForms(Acrobatフォームとしても知られています)、PDF 1.2形式の仕様で導入され、含まれています。
  • Adobe XML Forms Architecture(XFA)フォームは、PDF 1.5形式の仕様でオプション機能として導入されました(XFA仕様はPDF仕様には含まれておらず、参照のみです。)

XFAフォームのページを抽出または操作することはできません。なぜなら、フォームの内容はランタイム(XFAフォームの表示中)にアプリケーション内で生成されるからです。Aspose.PDFには、開発者がXFAフォームを標準のAcroFormsに変換する機能があります。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET にアクセスしてください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// 動的XFAフォームを読み込む
Document document = new Document(dataDir + "DynamicXFAToAcroForm.pdf");

// フォームフィールドのタイプを標準AcroFormに設定する
document.Form.Type = FormType.Standard;

dataDir = dataDir + "Standard_AcroForm_out.pdf";
// 結果のPDFを保存する
document.Save(dataDir);

XFAフィールドプロパティを取得する

フィールドプロパティにアクセスするには、まず Document.Form.XFA.Teamplate を使用してフィールドテンプレートにアクセスします。次のコードスニペットは、XFAフォームフィールドのX座標とY座標を取得する手順を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_Forms();

// XFAフォームをロード
Document doc = new Document(dataDir + "GetXFAProperties.pdf");

string[] names = doc.Form.XFA.FieldNames;

// フィールド値を設定
doc.Form.XFA[names[0]] = "Field 0";
doc.Form.XFA[names[1]] = "Field 1";

// フィールド位置を取得
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["x"].Value);

// フィールド位置を取得
Console.WriteLine(doc.Form.XFA.GetFieldTemplate(names[0]).Attributes["y"].Value);

dataDir = dataDir + "Filled_XFA_out.pdf";
// 更新されたドキュメントを保存
doc.Save(dataDir);