遷移フィールド
トランジショナル フィールド
このガイドでは、Aspose.Words FOSS for .NET におけるトランジショナル フィールドタイプ(レガシーバーコードおよび互換性フィールド)を扱う方法を示します。
Aspose.Words FOSS for .NET は、専用のクラスセットを通じて、特定の古い Word フィールドタイプを表します Aspose.Words.Fields 名前空間で、非公式に呼ばれる transitional フィールドです。これらは、後の Open XML フィールドの同等物が登場する前のフィールドですが、内部では有効です .docx レガシー ソースから開かれたドキュメントです。各遷移フィールドタイプは、独自の強く型付けされたクラスを持ち、次から派生します Field、汎用の Field オブジェクトが公開されている Document.Range.Fields.
バーコード フィールド
ドキュメント内でバーコードデータを生成または表示するフィールドクラスは 3 つあります: FieldBarcode(BARCODE フィールド — 独自の PostalAddress、IsBookmark、FacingIdentificationMark、IsUSPostalAddress プロパティを持つレガシー郵便バーコード)、FieldDisplayBarcode(DISPLAYBARCODE フィールド)、および FieldMergeBarcode(MERGEBARCODE フィールドで、メールマージ時に使用するための IMergeFieldSurrogate も実装しています)。FieldDisplayBarcode と FieldMergeBarcode は同じ汎用バーコード構成プロパティ — BarcodeType、BarcodeValue、SymbolHeight、SymbolRotation、ScalingFactor、ForegroundColor、BackgroundColor、PosCodeStyle、CaseCodeStyle、ErrorCorrectionLevel、DisplayText、AddStartStopChar、FixCheckDigit — を共有しますが、FieldBarcode にはこれらはありません。
BarcodeParameters クラスは、両方のプロパティセット(郵便住所プロパティと汎用バーコード構成プロパティ)の合成を公開するパススルー コンテナで、バーコードレンダラへ設定を渡すために使用されます。また、IBarcodeGenerator はカスタムレンダラが実装するインターフェースで、GetBarcodeImage(parameters) とレガシーな GetOldBarcodeImage(parameters) を公開します。Document.Range.Fields を反復処理し、Field.Type を FieldType.FieldBarcode、FieldType.FieldDisplayBarcode、または FieldType.FieldMergeBarcode と比較してこれらのフィールドを特定し、特定のフィールドクラスへキャストします — BarcodeValue と BarcodeType は FieldDisplayBarcode または FieldMergeBarcode にキャストした後にのみ利用可能で、FieldBarcode では使用できません。
レガシー互換性フィールド
4つの追加フィールドクラスは、比較的新しい文書ではあまり一般的でないが、レガシー.docxファイルにはまだ存在する古いWordフィールドコードをカバーします: FieldBidiOutline(右から左へのアウトライン番号付け用のBIDIOUTLINEフィールド)、FieldEQ(EQ方程式フィールドで、AsOfficeMath()を公開してその内容をOfficeMathオブジェクトに変換します)、FieldFootnoteRef(脚注または文末脚注マークを相互参照するFOOTNOTEREFフィールド)、およびFieldInfo(INFOフィールドで、InfoTypeとNewValueプロパティを介して文書の要約情報プロパティを読み書きします)。
これらのフィールドクラスはすべて同じFieldインターフェースを継承します: GetFieldCode()はフィールドの基礎となるコードテキストを返し、Update()はフィールドの結果を再評価し、Unlink()はフィールドを最後に計算された結果で置き換え、Remove()はドキュメントからフィールドを削除します。IFieldCodeTokenInfoProviderはFieldBarcode、FieldDisplayBarcode、FieldMergeBarcode、およびFieldInfoによって実装されます。これらのフィールドコードは単純な命令文字列を超える構造化スイッチを持つためです。
ヒントとベストプラクティス
- 汎用
Fieldを遷移フィールドクラスのいずれかにキャストする前に、必ずField.Typeを確認してください — 不適切なキャストはInvalidCastExceptionをスローします。 - バーコードフィールドのプロパティを変更した後に
Update()を呼び出し、ドキュメントが保存される前にResultが新しい構成を反映するようにします。 FieldEQ.AsOfficeMath()はEQフィールドが実際に方程式をエンコードしている場合にのみ成功します。呼び出す前にフィールドのResultが数式のようになっているか確認してください。- フィールドの現在の値を静的テキストとして固定し、後で再計算できないようにしたい場合は
Unlink()を使用してください。 - バーコードフィールドクラスはデータのみを保持します — このFOSSエディションにはバーコードレンダリングエンジンが含まれていないため、
GetBarcodeImage()の出力は提供するIBarcodeGenerator実装に依存します。
一般的な問題
| Issue | Cause | 修正 |
|---|---|---|
InvalidCastException を Field にキャストする際 | 誤った FieldType が想定されています | まず、対応する FieldType 定数に対して Field.Type をチェックしてください |
FieldEQ.AsOfficeMath() が予期しない結果を返します | フィールドに有効な数式指示が含まれていません | 変換前に GetFieldCode() の出力を確認してください |
| バーコードフィールドにレンダリングされた画像がありません | IBarcodeGenerator の実装が提供されていません | GetBarcodeImage() を実装するカスタムジェネレータを提供してください |
NewValue が変更された後、FieldInfo の値が更新されません | フィールドが更新されていません | NewValue を変更した後、フィールドで Update() を呼び出してください |
FAQ
これらのフィールドタイプにおける “transitional” とは何を意味しますか?
これは公式の Word 用語ではありません — このエディションの Aspose.Words.Fields 名前空間でフィールドクラスをグループ化し、古いフィールドコード(バーコードおよび Open-XML 以前の互換性フィールド)を、汎用の Field オブジェクトだけで処理するのではなく、独自の強く型付けされたクラスを通じて実装します。
このエディションはバーコード画像をレンダリングしますか?
いいえ。FieldBarcode、FieldDisplayBarcode、および FieldMergeBarcode はバーコードデータを保持し、IBarcodeGenerator インターフェイスを公開しますが、このエディションには組み込みのバーコードレンダリングエンジンは同梱されていません — 独自の IBarcodeGenerator 実装を提供する必要があります。
EQ フィールドを OfficeMath 方程式に変換できますか?
はい、FieldEQ.AsOfficeMath() を使用します。ただし、フィールドのコードが実際に方程式をエンコードしていることが条件です。
ドキュメント内のすべての遷移フィールドをどのように見つけますか?
Document.Range.Fields を列挙し、各 Field.Type を関連する FieldType 定数 (FieldBarcode、FieldDisplayBarcode、FieldMergeBarcode、FieldBidiOutline、FieldEQ、FieldFootnoteRef、FieldInfo) と比較します。
API Reference の概要
| クラス / メソッド | 説明 |
|---|---|
FieldBarcode | BARCODE フィールドを実装します |
FieldDisplayBarcode | DISPLAYBARCODE フィールドを実装します |
FieldMergeBarcode | MERGEBARCODE メールマージバーコードフィールドを実装します |
BarcodeParameters | ジェネレータに渡されるバーコード設定のコンテナ |
IBarcodeGenerator | カスタムバーコード画像レンダラのインターフェース |
FieldBidiOutline | BIDIOUTLINE フィールドを実装します |
FieldEQ | EQ 方程式フィールドを実装します; AsOfficeMath() は OfficeMath に変換されます |
FieldFootnoteRef | FOOTNOTEREF フィールドを実装します |
FieldInfo | INFO ドキュメントプロパティフィールドを実装します |