Creando campos con FieldBuilder

Creando campos con FieldBuilder

Construyendo campos con FieldBuilder

Esta guía muestra cómo construir un campo de Word desde cero en Aspose.Words FOSS para .NET usando FieldBuilder and FieldArgumentBuilder, en lugar de trabajar con un campo que ya existe en un documento. Para leer, actualizar o eliminar campos existentes, consulte la Trabajando con campos guía.


Creando un campo con FieldBuilder

FieldBuilder construye un campo a partir de tokens de código de campo — argumentos y conmutadores. Construye uno con new FieldBuilder(fieldType), pasando el FieldType del campo que deseas construir. Añade argumentos con el método sobrecargado AddArgument(argument), que acepta un string, int, double, un FieldBuilder anidado, o un FieldArgumentBuilder. Añade conmutadores con los métodos sobrecargados AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), o AddSwitch(switchName, switchArgument) (int/double).


Insertando el campo construido

Una vez que un FieldBuilder tiene sus argumentos y conmutadores, llama a BuildAndInsert(refNode) para insertarlo en el documento — una sobrecarga acepta un nodo Inline y inserta el campo antes de él, y otra acepta un Paragraph e inserta el campo al final de ese párrafo.


Componiendo argumentos complejos con FieldArgumentBuilder

FieldArgumentBuilder crea un argumento de campo complejo compuesto por campos, nodos y texto plano, para casos en los que un solo argumento necesita más que una cadena simple. Construye uno con new FieldArgumentBuilder(), luego llama a AddText(text) para añadir texto plano, a AddNode(node) para añadir un nodo Inline, o a AddField(fieldBuilder) para anidar otro campo (construido con su propio FieldBuilder) dentro del argumento. Pasa el FieldArgumentBuilder completado a FieldBuilder.AddArgument(argument) para usarlo como uno de los argumentos del campo externo.


Consejos y Mejores Prácticas

  • Utiliza FieldBuilder al construir un tipo de campo que no está respaldado por una de las clases de campo dedicadas (como FieldDate o FieldSymbol), o al generar códigos de campo de forma programática a partir de datos en lugar de escribirlos manualmente.
  • Anida un campo hijo dentro del argumento de un campo externo con FieldBuilder.AddArgument(FieldBuilder) para un caso sencillo, o crea un argumento mixto de texto, nodos y campos anidados con FieldArgumentBuilder cuando el argumento es más que un solo campo.
  • Elige la sobrecarga de BuildAndInsert(refNode) que coincida con el lugar donde deseas que se coloque el campo — antes de un nodo Inline específico, o al final de un Paragraph.
  • Después de BuildAndInsert, trata el resultado como cualquier otro campo en el árbol — por ejemplo, llama a Update() sobre él si el tipo de campo requiere una recalculación explícita.

Problemas Comunes

ProblemaCausaSolución
BuildAndInsert apunta a la ubicación incorrectaSe utilizó la sobrecarga incorrecta para el punto de inserción previstoPase un nodo Inline para insertarlo antes, o un Paragraph para insertarlo al final
Un argumento de campo no aceptará texto sin formato y un nodo juntosAddArgument se llamó con un único string/int/double en lugar de un argumento compuestoConstruya el argumento mixto con FieldArgumentBuilder (AddText, AddNode, AddField) y páselo a AddArgument
El valor del interruptor no se reconoce en el código de campo construidoAddSwitch(switchName) se utilizó cuando el interruptor realmente necesita un argumentoUtilice la sobrecarga AddSwitch(switchName, switchArgument) con el valor de cadena, entero o doble del interruptor

FAQ

¿Cuándo debo usar FieldBuilder en lugar de insertar un código de campo preformado?

Use FieldBuilder cuando necesite un control explícito sobre los argumentos y conmutadores de un campo mientras los construye programáticamente, en lugar de insertar una cadena de código de campo preformada.

¿Cómo agrego más de un argumento a un campo?

Llame a AddArgument una vez por argumento — está sobrecargado para string, int, double, un FieldBuilder anidado y FieldArgumentBuilder.

¿Puedo crear un campo cuyo argumento contenga una mezcla de texto y otro campo?

Sí — use FieldArgumentBuilder, llamando a AddText, AddNode y AddField según sea necesario, y luego páselo a FieldBuilder.AddArgument.

¿Cómo inserto realmente el campo creado en el documento?

Llame a BuildAndInsert(refNode), pasando ya sea un nodo Inline (se inserta antes de él) o un Paragraph (se inserta al final).


API Reference Resumen

Clase/MétodoDescripción
FieldBuilderConstruye un campo a partir de tokens de código de campo (argumentos y conmutadores)
FieldBuilder(fieldType)Constructor que recibe el FieldType para construir
FieldBuilder.AddArgument(argument)Añade un argumento (string, int, double, FieldBuilder o FieldArgumentBuilder)
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument)Añade un interruptor de campo, con o sin valor
FieldBuilder.BuildAndInsert(refNode)Inserta el campo construido antes de un nodo Inline o al final de un Paragraph
FieldArgumentBuilderConstruye un argumento de campo complejo a partir de texto, nodos y campos anidados
FieldArgumentBuilder.AddText(text)Añade texto plano al argumento
FieldArgumentBuilder.AddNode(node)Agrega un nodo Inline al argumento
FieldArgumentBuilder.AddField(fieldBuilder)Anida un campo creado por FieldBuilder en el argumento

Ver también

 Español