.NET で遷移フィールドを使用する方法

.NET で遷移フィールドを使用する方法

.NET におけるトランジショナル フィールドの操作方法

Aspose.Words FOSS for .NET は、古い Word フィールドタイプのグループ(バーコードフィールドや、Open-XML 以前の互換性フィールドの一部)を、名前空間内の専用クラスを通じて表します Aspose.Words.Fields 名前空間で、非公式に呼ばれる transitional フィールドです。このガイドでは、これらのフィールドの検索、読み取り、設定方法を示します。すべての遷移フィールドクラスは、基底 Field 型から派生し、汎用の Field オブジェクトが Document.Range.Fields.


ステップバイステップ ガイド

ステップ 1: ドキュメント内のトランジショナル フィールドを見つける

Document.Range.Fields を列挙し、各フィールドの Type(FieldType 値)を該当する定数 — FieldBarcode、FieldDisplayBarcode、FieldMergeBarcode、FieldBidiOutline、FieldEQ、FieldFootnoteRef、または FieldInfo — と比較します。その後、汎用 Field を対応するクラスにキャストして固有のプロパティにアクセスします。キャストする前に必ず Type を確認してください。誤ったフィールド クラスにキャストすると InvalidCastException がスローされます。


ステップ 2: DISPLAYBARCODE または MERGEBARCODE フィールドを設定する

FieldDisplayBarcode(DISPLAYBARCODE フィールド)と FieldMergeBarcode(MERGEBARCODE フィールド、メールマージ用の IMergeFieldSurrogate も実装しています)は、同じバーコード構成プロパティのセットを共有します:BarcodeType、BarcodeValue、SymbolHeight、SymbolRotation、ScalingFactor、ForegroundColor、BackgroundColor、PosCodeStyle、CaseCodeStyle、ErrorCorrectionLevel、DisplayText、AddStartStopChar、および FixCheckDigit。フィールドインスタンスにこれらを設定し、Update() を呼び出して、ドキュメントを保存する前に Result が新しい構成を反映するようにします。


ステップ 3: レガシー BARCODE(郵便)フィールドデータを読み取る

FieldBarcode は、一般的なバーコードではなく、米国郵便バーコード(POSTNET)フィールドである古い BARCODE フィールドを実装しています — Step 2 の BarcodeType/BarcodeValue プロパティは共有しません。その代わり、PostalAddress(バーコードがエンコードする住所)、FacingIdentificationMark、IsUSPostalAddress、および IsBookmark を公開します。これらのプロパティを読み取る前に、Field.Type を FieldType.FieldBarcode と特に比較してください。DISPLAYBARCODE または MERGEBARCODE フィールドを FieldBarcode にキャストすると、期待するプロパティが公開されないためです。


ステップ 4: カスタムジェネレータでバーコード画像をレンダリングする

この FOSS エディションはバーコードフィールドデータを保持していますが、バーコードレンダリングエンジンは含まれていません。BarcodeParameters は、バーコードフィールドファミリーのいずれか(Step 2 の DISPLAYBARCODE/MERGEBARCODE プロパティと Step 3 の郵便プロパティ)から設定を統合し、レンダラに渡される単一のオブジェクトにまとめるパススルーコンテナです。IBarcodeGenerator を実装し、GetBarcodeImage(parameters) とレガシーの GetOldBarcodeImage(parameters) を公開して実際の画像レンダリングを提供してください。実装が提供されない場合、バーコードフィールドは構成データのみを保持します。


ステップ 5: レガシー互換フィールドを扱う

レガシー .docx ファイルにまだ存在する古いフィールドコードをカバーするクラスが他に4つあります。FieldBidiOutline は、右から左へのアウトライン番号付け用の BIDIOUTLINE フィールドを実装しており、共通の Field 表面以外にプロパティは公開しません。FieldEQ は EQ 方程式フィールドを実装し、さらにその内容を OfficeMath オブジェクトに変換するための AsOfficeMath() を公開します—これはフィールドが実際に方程式をエンコードしている場合にのみ成功します。FieldFootnoteRef は脚注または文末注のマークを相互参照する FOOTNOTEREF フィールドを実装しており、共通の Field 表面以外にプロパティは公開しません。FieldInfo は INFO フィールドを実装し、その InfoType および NewValue プロパティを通じてドキュメントのサマリー情報プロパティの読み書きを行います。


ステップ 6: 移行フィールドの値を更新または固定する

すべての遷移フィールドクラスは GetFieldCode()(フィールドの基礎となるコードテキスト)、Update()(結果を再評価する)、Unlink()(フィールドを最後に計算された結果の静的テキストに置き換える)、および Remove()(フィールドを削除する)を継承します。フィールドの設定を変更した後は Update() を呼び出して Result が変更を反映するようにし、フィールドの現在の値を再計算可能にせず固定したい場合は Unlink() を使用します。


一般的な問題と対策

InvalidCastException キャスト時に Field 遷移フィールドクラスへ。 間違った FieldType が想定されました。確認してください Field.Type 一致するものに対して FieldType キャストする前の定数.

A DISPLAYBARCODE/MERGEBARCODE キャスト後にフィールドのプロパティが欠落しています。 フィールドは…にキャストされました FieldBarcode 代わりに FieldDisplayBarcode/FieldMergeBarcode (あるいは逆に)— これらのクラスはすべて3つともバーコードデータを表すにもかかわらず、異なるプロパティセットを公開しています。確認してください Field.Type キャストする前に。

バーコードフィールドはデータを保持していますが、画像はレンダリングされません。 いいえ IBarcodeGenerator 実装が提供されました。実装するカスタムジェネレーターを提供してください GetBarcodeImage(parameters) — このエディションには組み込みのバーコードレンダリングエンジンが同梱されていません。

FieldEQ.AsOfficeMath() 予期しない結果を返します。 フィールドに有効な方程式指示が含まれていません。フィールドの GetFieldCode() 変換を試みる前に出力を確認してください。

FieldInfo設定後に値が更新されません NewValue. 変更後にフィールドが更新されませんでした。呼び出す Update() フィールドを変更した後に NewValue.


よくある質問

これらのフィールドタイプにおける「transitional」は何を意味しますか?

これは公式の Word 用語ではありません — このエディションの Aspose.Words.Fields 名前空間でフィールドクラスをグループ化し、古いフィールドコード(バーコードフィールドおよび Open-XML 以前の互換性フィールド)を、汎用の Field オブジェクトだけで処理するのではなく、独自の強く型付けされたクラスを通じて実装します。

FieldBarcode は FieldDisplayBarcode と同じプロパティを使用しますか?

いいえ。FieldBarcode はレガシーな BARCODE(postal/POSTNET)フィールドを実装し、PostalAddress、FacingIdentificationMark、IsUSPostalAddress、IsBookmark を公開します。FieldDisplayBarcode と FieldMergeBarcode は別のプロパティセットを共有しており — BarcodeType、BarcodeValue、SymbolHeight、および関連するレンダリング設定です。

このエディションはバーコード画像をレンダリングしますか?

いいえ。FieldBarcode、FieldDisplayBarcode、および FieldMergeBarcode はバーコード設定データを保持し、IBarcodeGenerator インターフェイスを公開しますが、このエディションにはバーコードレンダリングエンジンが同梱されていません — 画像を生成するにはカスタムの IBarcodeGenerator 実装が必要です。

EQ フィールドを OfficeMath の方程式に変換できますか?

はい、FieldEQ.AsOfficeMath() を使用して、ただしフィールドのコードが実際に方程式をエンコードしていることが条件です。

ドキュメント内のすべての遷移フィールドをどうやって見つけますか?

Document.Range.Fields を列挙し、各 Field.Type を該当する FieldType 定数 (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo) と比較してください。


参照

 日本語