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);