遷移フィールド

トランジショナル フィールド

このガイドでは、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実装に依存します。

一般的な問題

IssueCause修正
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 の概要

クラス / メソッド説明
FieldBarcodeBARCODE フィールドを実装します
FieldDisplayBarcodeDISPLAYBARCODE フィールドを実装します
FieldMergeBarcodeMERGEBARCODE メールマージバーコードフィールドを実装します
BarcodeParametersジェネレータに渡されるバーコード設定のコンテナ
IBarcodeGeneratorカスタムバーコード画像レンダラのインターフェース
FieldBidiOutlineBIDIOUTLINE フィールドを実装します
FieldEQEQ 方程式フィールドを実装します; AsOfficeMath() は OfficeMath に変換されます
FieldFootnoteRefFOOTNOTEREF フィールドを実装します
FieldInfoINFO ドキュメントプロパティフィールドを実装します

参照

 日本語