Reemplazar Campos con Texto Estático

A menudo es necesario reemplazar los campos cuando desea guardar su documento como una copia estática. Por ejemplo, al enviar como archivo adjunto en un correo electrónico. Convertir campos como DATE o TIME en texto estático permitirá que el documento muestre la misma fecha en que se envió. Además, en algunas situaciones, es posible que deba eliminar los campos condicionales IF 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 del campo define el comportamiento general del campo, mientras que el resultado del campo conserva el resultado más reciente cuando este campo se actualiza con 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 visualiza

update-remove-a-field-aspose-words

La estructura también se puede ver a continuación en forma jerárquica utilizando el proyecto de demostración “DocumentExplorer”, que se envía con el instalador Aspose.Words.

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

Campos Que No se pueden Reemplazar con Texto

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

Por ejemplo, al intentar convertir el campo PAGE en un encabezado o pie de página en texto estático, se mostrará 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 en 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 en todas las páginas.

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

Convierta 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 que los campos se conviertan en 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 en texto estático:

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

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

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