Actualizar campos

Normalmente, un campo insertado en Microsoft Word ya contiene un valor actualizado. Por ejemplo, si el campo es una fórmula o un número de página, contendrá el valor calculado correcto para la versión dada del documento. Pero si tiene una aplicación que genera o modifica un documento con campos, como fusionar dos documentos o completarlo con datos, lo ideal es que todos los campos se actualicen para que el documento sea útil.

Cómo actualizar campos

Cuando se carga un documento, Aspose.Words imita el comportamiento de Microsoft Word con la opción de actualizar campos automáticamente desactivada. El comportamiento se puede resumir de la siguiente manera:

  • cuando abres/guardas un documento, los campos permanecen intactos
  • puede actualizar explícitamente todos los campos de un documento, por ejemplo, reconstruir TOC, cuando lo necesite
  • cuando imprime/renderiza en PDF o XPS, los campos relacionados con la numeración de páginas en encabezados/pies de página se actualizan
  • cuando ejecuta Mail Merge todos los campos se actualizan automáticamente

Actualizar campos mediante programación

Para actualizar explícitamente los campos en todo el documento, simplemente llame al método UpdateFields. Para actualizar campos contenidos en parte de un documento, obtenga un objeto Range y llame al método UpdateFields. En Aspose.Words, puede obtener un Range para cualquier nodo en el árbol del documento, como Section, HeaderFooter, Paragraph, etc. utilizando la propiedad Node.Range. Puede actualizar el resultado de un solo campo llamando al método Update.

Actualización automática de campos relacionados con la página durante el renderizado

Cuando ejecuta la conversión de un documento a un formato de página fija, por ejemplo, a PDF o XPS, Aspose.Words actualizará automáticamente los campos PAGE relacionados con el diseño de página y PAGEREF se encuentra en los encabezados y pies de página del documento. Este comportamiento imita el comportamiento de Microsoft Word al imprimir un documento.

Si desea actualizar todos los demás campos del documento, debe llamar a UpdateFields antes de procesar el documento.

El siguiente ejemplo de código muestra cómo actualizar todos los campos antes de representar un documento:

Actualización automática de campo durante Mail Merge

Cuando ejecuta un mail merge, todos los campos del documento se actualizarán automáticamente. Esto se debe a que el Mail Merge es un caso de actualización de campo. El programa encuentra un campo Mail Merge y necesita actualizar su resultado, lo que implica tomar el valor de la fuente de datos e insertarlo en el campo. Por supuesto, la lógica es más complicada, por ejemplo, cuando se llega al final del documento/región Mail Merge pero todavía hay más datos por fusionar, entonces es necesario duplicar la región y actualizar el nuevo conjunto de campos.

Actualizar campos que tienen atributos sucios

w:dirty es un atributo a nivel de campo que actualizará solo el campo que especifique cuando se abra el documento. Le indica a MS Word que solo actualice este campo la próxima vez que se abra el documento. Puede utilizar la propiedad UpdateDirtyFields para especificar si se actualizan los campos con el atributo sucio. Cuando el valor de UpdateDirtyFields se establece en true, todos los campos que tienen un valor true para la propiedad Field.IsDirty o FieldChar.IsDirty se actualizan al cargar el documento.

El siguiente ejemplo de código muestra cómo actualizar campos que tienen el atributo sucio:

Actualizar la propiedad LastSavedTime antes de guardar

Puede utilizar la propiedad UpdateLastSavedTimeProperty para actualizar la propiedad LastSavedTime del documento incorporado correspondiente al guardar el documento.

El siguiente ejemplo de código muestra cómo actualizar esta propiedad: