更新フィールド

典型的には、フィールドを入力 Microsoft Word すでに最新の値を含む。 例えば、フィールドが式やページ番号の場合、指定されたバージョンのドキュメントの正しい計算値が格納されます。 しかし、2つの文書をマージしたり、データをポップアップしたりするなどのフィールドでドキュメントを生成したり変更したりするアプリケーションがある場合は、理想的にはすべてのフィールドがドキュメントに有用なものでなければなりません。

フィールドの更新方法

文書が読み込まれるとき、 Aspose.Words 行動を模倣する Microsoft Word フィールドを自動的に更新するオプションがオフになります。 挙動は以下のようにまとめられます。

  • フィールドがそのまま残っている文書を開く/保存するとき
  • ドキュメントのすべてのフィールドを明示的に更新することができます。例えば、再構築 TOC 必要なとき
  • 印刷/レンダリングをPDFにするか、 XPS ヘッダー/フッター内のページ番号に関するフィールドを更新
  • 実行時に mail merge すべてのフィールドが自動的に更新されます

フィールドの更新プログラム

ドキュメント全体でフィールドを明示的に更新するには、単に呼び出します UpdateFields メソッド。 文書の一部に含まれているフィールドを更新するには、 Range オブジェクトと呼び出し UpdateFields メソッド。 インスタグラム Aspose.Words, あなたが得ることができる Range ドキュメントツリー内のどのノードでも、 Section, HeaderFooter, Paragraph, 等。使用して GetRange プロパティ. 単一のフィールドの結果を呼び出して更新することができます Update メソッド。

レンダリング中のページ関連フィールドの自動更新

ドキュメントの変換を PDF や PDF などの固定ページ形式に実行する場合 XPS, それから Aspose.Words ページレイアウト関連フィールドを自動的に更新します PAGE, PAGEREF ドキュメントのヘッダ/フッターで見つかった。 この振る舞いは行動を模倣します Microsoft Word 文書を印刷するとき。

ドキュメント内の他のすべてのフィールドを更新したい場合は、呼び出しする必要があります UpdateFields ドキュメントをレンダリングする前に。

次の例では、ドキュメントをレンダリングする前に、すべてのフィールドを更新する方法を示します。

自動フィールドの更新 Mail Merge

実行時に <span notrans="<span notrans=" mail merge"="">????? ドキュメント内のすべてのフィールドが自動的に更新されます。 これは、 mail merge フィールドの更新の場合です。 プログラムが遭遇する mail merge フィールドと結果を更新する必要があります。これは、データソースから値をつかみ、フィールドに投入することを含みます。 ロジックは、もちろん複雑で、例えば文書の終端時/mail merge 地域は到達していますが、まだ合併するデータがまだあります。この領域は重複し、更新されたフィールドの新しいセットである必要があります。

汚い属性を持つフィールドを更新する

w:dirty は、ドキュメントが開いたときに指定したフィールドだけをリフレッシュするフィールドレベルの属性です。 ドキュメントが開いたら、このフィールドだけをリフレッシュするために、MS Word を指示します。 LoadOptions.setUpdateDirtyFields() プロパティを使用して、汚れた属性でフィールドを更新するかどうかを指定できます。 LoadOptions.setUpdateDirtyFields() の値がセットされるとき <span notrans="<span notrans=" true"="">????? すべてのフィールド true バリュー Field.IsDirty または FieldChar.IsDirty ドキュメントの読み込みにプロパティが更新されます。

次のコードの例では、汚れた属性を持つフィールドを更新する方法を示します。

保存する前にLastSavedTimeプロパティを更新する

使うことができます。 UpdateLastSavedTimeProperty 組み込みのドキュメントプロパティを更新するかどうか LastSavedTime 文書を保存するとき。

次のコードの例では、このプロパティを更新する方法を示します。