Aggiorna campi

In genere, un campo inserito in Microsoft Word contiene già un valore aggiornato. Ad esempio, se il campo è una formula o un numero di pagina, conterrà il valore calcolato corretto per la versione specifica del documento. Ma se hai un’applicazione che genera o modifica un documento con campi come unire due documenti o popolarlo con dati, allora idealmente tutti i campi devono essere aggiornati affinché il documento sia utile.

Come aggiornare i campi

Quando un documento viene caricato, Aspose.Words imita il comportamento di Microsoft Word con l’opzione di aggiornare automaticamente i campi disattivata. Il comportamento può essere così riassunto:

  • quando apri/salvi un documento i campi rimangono intatti
  • puoi aggiornare esplicitamente tutti i campi in un documento, ad esempio, ricostruire TOC, quando necessario
  • quando si stampa/esegui il rendering in PDF o XPS i campi relativi alla numerazione delle pagine nelle intestazioni/piè di pagina vengono aggiornati
  • quando esegui mail merge tutti i campi vengono aggiornati automaticamente

Aggiorna i campi a livello di codice

Per aggiornare in modo esplicito i campi nell’intero documento, chiama semplicemente il metodo UpdateFields. Per aggiornare i campi contenuti in una parte di un documento, ottenere un oggetto Range e chiamare il metodo UpdateFields. In Aspose.Words, puoi ottenere un Range per qualsiasi nodo nell’albero del documento, come Section, HeaderFooter, Paragraph, ecc. utilizzando la proprietà Node.Range. È possibile aggiornare il risultato di un singolo campo chiamando il metodo Update.

Aggiornamento automatico dei campi relativi alla pagina durante il rendering

Quando esegui la conversione di un documento in un formato a pagina fissa, ad esempio in PDF o XPS, Aspose.Words aggiornerà automaticamente i campi relativi al layout di pagina PAGE, PAGEREF trovati nelle intestazioni/piè di pagina del documento. Questo comportamento imita il comportamento di Microsoft Word durante la stampa di un documento.

Se desideri aggiornare tutti gli altri campi nel documento, devi chiamare UpdateFields prima di eseguire il rendering del documento.

Il seguente esempio di codice mostra come aggiornare tutti i campi prima di eseguire il rendering di un documento:

Aggiornamento automatico dei campi durante Mail Merge

Quando esegui un mail merge, tutti i campi del documento verranno aggiornati automaticamente. Questo perché il mail merge è un caso di aggiornamento sul campo. Il programma rileva un campo mail merge e deve aggiornarne il risultato, il che comporta il prelievo del valore dall’origine dati e l’inserimento nel campo. La logica è ovviamente più complicata, ad esempio, quando viene raggiunta la fine della regione del documento/mail merge ma ci sono ancora altri dati da unire, allora la regione deve essere duplicata e il nuovo set di campi aggiornato.

Aggiorna i campi con attributo sporco

w:dirty è un attributo a livello di campo che aggiornerà solo il campo specificato all’apertura del documento. Indica a MS Word di aggiornare questo campo solo la prossima volta che il documento viene aperto. È possibile utilizzare la proprietà UpdateDirtyFields per specificare se aggiornare i campi con l’attributo dirty. Quando il valore di UpdateDirtyFields è impostato su true, tutti i campi con valore true per la proprietà Field.IsDirty o FieldChar.IsDirty vengono aggiornati al caricamento del documento.

Il seguente esempio di codice mostra come aggiornare i campi con l’attributo dirty:

Aggiorna la proprietà LastSavedTime prima di salvare

È possibile utilizzare la proprietà UpdateLastSavedTimeProperty per aggiornare la proprietà del documento incorporata corrispondente LastSavedTime durante il salvataggio del documento.

L’esempio di codice seguente mostra come aggiornare questa proprietà: