Reemplazar campos con texto estático

A menudo es necesario reemplazar campos cuando desea guardar su documento como una copia estática. Por ejemplo, al enviar como archivo adjunto en un correo electrónico. La conversión de campos como DATE o TIME a texto estático permitirá que el documento muestre la misma fecha que cuando se envió. Además, en algunas situaciones, es posible que deba eliminar los campos IF condicionales de su documento y reemplazarlos con el resultado de texto más reciente. Por ejemplo, convertir el resultado del campo IF en texto estático para que ya no cambie dinámicamente su valor cuando se actualicen los campos del documento.

El siguiente diagrama muestra cómo se almacena el campo IF en un documento:

  • el texto está rodeado por los nodos de campo especiales – FieldStart y FieldEnd
  • el nodo FieldSeparator separa el texto dentro del campo en el código de campo y el resultado del campo
  • el código de campo define el comportamiento general del campo, mientras que el resultado del campo conserva el resultado más reciente cuando este campo se actualiza usando Microsoft Word o Aspose.Words
  • el resultado del campo es lo que se almacena en el campo y se muestra en el documento cuando se ve

update-remove-a-field-aspose-words

La estructura también se puede ver a continuación en forma jerárquica usando el proyecto de demostración DocumentExplorer.

update-remove-a-field-aspose-words-2

Campos que no se pueden reemplazar por texto

Reemplazar un campo con texto estático no funciona correctamente para algunos campos en un encabezado o pie de página.

Por ejemplo, intentar convertir el campo PAGE en un encabezado o pie de página en texto estático dará como resultado que se muestre el mismo valor en todas las páginas. Esto se debe a que los encabezados y pies de página se repiten en varias páginas y, cuando permanecen como campos, se manejan especialmente para que muestren el resultado correcto para cada página.

Sin embargo, en el encabezado, el campo PAGE se traduce bien como una ejecución de texto estático. Esta ejecución de texto se evaluará como si fuera la última página de la sección, lo que hará que cualquier campo PAGE en el encabezado muestre la última página sobre todas las páginas.

El siguiente ejemplo de código muestra cómo reemplazar el campo con su resultado más reciente:

Convertir ciertos tipos de campos en partes específicas del documento

Dado que el método ConvertFieldsToStaticText acepta dos parámetros: las propiedades CompositeNode y la enumeración FieldType, es posible pasar cualquier nodo compuesto a este método. Esto permite convertir campos a texto estático solo en partes específicas del documento.

Por ejemplo, puede pasar un objeto Document y convertir campos del tipo especificado de todo el documento a texto estático, o puede pasar un objeto Body de una sección y convertir solo los campos que se encuentran en ese cuerpo.

La enumeración FieldType pasada al método ConvertFieldsToStaticText especifica qué tipo de campos deben convertirse en texto estático. Cualquier otro tipo de campo que se encuentre en el documento permanecerá sin cambios.

El siguiente ejemplo de código muestra cómo seleccionar campos de un tipo específico – targetFieldType en un nodo específico – compositeNode y luego convertirlos a texto estático:

El siguiente ejemplo de código muestra cómo convertir todos los campos IF de un documento en texto estático:

El siguiente ejemplo de código muestra cómo convertir todos los campos PAGE en el cuerpo de un documento en texto estático:

El siguiente ejemplo de código muestra cómo convertir todos los campos IF del último párrafo en texto estático: