Creazione di campi con FieldBuilder

Creazione di campi con FieldBuilder

Costruire campi con FieldBuilder

Questa guida mostra come costruire un campo Word da zero in Aspose.Words FOSS per .NET usando FieldBuilder and FieldArgumentBuilder, invece di lavorare con un campo che esiste già in un documento. Per leggere, aggiornare o rimuovere campi esistenti, consulta il Lavorare con i campi guida.


Creare un campo con FieldBuilder

FieldBuilder crea un campo a partire dai token del codice campo — argomenti e switch. Costruiscine uno con new FieldBuilder(fieldType), passando il FieldType del campo che desideri creare. Aggiungi argomenti con il metodo sovraccaricato AddArgument(argument), che accetta un string, int, double, un FieldBuilder nidificato o un FieldArgumentBuilder. Aggiungi switch con i metodi sovraccaricati AddSwitch(switchName), AddSwitch(switchName, switchArgument) (string), o AddSwitch(switchName, switchArgument) (int/double).


Inserire il campo costruito

Una volta che un FieldBuilder ha i suoi argomenti e switch, chiama BuildAndInsert(refNode) per inserirlo nel documento — una sovraccarico accetta un nodo Inline e inserisce il campo prima di esso, e un’altra accetta un Paragraph e inserisce il campo alla fine di quel paragrafo.


Comporre argomenti complessi con FieldArgumentBuilder

FieldArgumentBuilder crea un argomento di campo complesso composto da campi, nodi e testo semplice, per i casi in cui un singolo argomento richiede più di una semplice stringa. Costruiscine uno con new FieldArgumentBuilder(), quindi chiama AddText(text) per aggiungere testo semplice, AddNode(node) per aggiungere un nodo Inline, o AddField(fieldBuilder) per annidare un altro campo (costruito con il proprio FieldBuilder) all’interno dell’argomento. Passa il FieldArgumentBuilder completato a FieldBuilder.AddArgument(argument) per usarlo come uno degli argomenti del campo esterno.


Suggerimenti e migliori pratiche

  • Usa FieldBuilder quando costruisci un tipo di campo che non è supportato da una delle classi di campo dedicate (come FieldDate o FieldSymbol), o quando generi codici di campo in modo programmatico a partire dai dati anziché crearli manualmente.
  • Annida un campo figlio all’interno dell’argomento di un campo esterno con FieldBuilder.AddArgument(FieldBuilder) per un caso semplice, oppure costruisci un argomento misto di testo, nodi e campi annidati con FieldArgumentBuilder quando l’argomento è più di un singolo campo.
  • Scegli il sovraccarico BuildAndInsert(refNode) che corrisponde al punto in cui desideri inserire il campo — prima di un nodo Inline specifico, oppure alla fine di un Paragraph.
  • Dopo BuildAndInsert, tratta il risultato come qualsiasi altro campo nell’albero — ad esempio, chiama Update() su di esso se il tipo di campo richiede una ricalcolazione esplicita.

Problemi comuni

ProblemaCauseCorrezione
BuildAndInsert punta alla posizione sbagliataÈ stato usato l’overload sbagliato per il punto di inserimento previstoPassa un nodo Inline per inserirlo prima, o un Paragraph per inserirlo alla sua fine
Un argomento di campo non accetta testo semplice e un nodo insiemeAddArgument è stato chiamato con un singolo string/int/double invece di un argomento compostoCostruisci l’argomento misto con FieldArgumentBuilder (AddText, AddNode, AddField) e passalo a AddArgument
Il valore dello switch non è riconosciuto nel codice di campo generatoAddSwitch(switchName) è stato usato quando lo switch in realtà richiede un argomentoUsa l’overload AddSwitch(switchName, switchArgument) con il valore stringa, int o double dello switch

FAQ

Quando dovrei usare FieldBuilder invece di inserire un codice campo preformato?

Usa FieldBuilder quando hai bisogno di un controllo esplicito sugli argomenti e le opzioni di un campo mentre li costruisci programmaticamente, invece di inserire una stringa di codice campo preformata.

Come aggiungo più di un argomento a un campo?

Chiama AddArgument una volta per argomento — è sovraccaricato per string, int, double, un FieldBuilder annidato e FieldArgumentBuilder.

Posso creare un campo il cui argomento contenga un mix di testo e un altro campo?

Sì — usa FieldArgumentBuilder, chiamando AddText, AddNode e AddField secondo necessità, quindi passalo a FieldBuilder.AddArgument.

Come faccio a inserire effettivamente il campo costruito nel documento?

Chiama BuildAndInsert(refNode), passando un nodo Inline (lo inserisce prima) o un Paragraph (lo inserisce alla sua fine).


API Reference Riepilogo

Classe/MetodoDescrizione
FieldBuilderCostruisce un campo dai token di codice campo (argomenti e interruttori)
FieldBuilder(fieldType)Costruttore che prende il FieldType da costruire
FieldBuilder.AddArgument(argument)Aggiunge un argomento (string, int, double, FieldBuilder o FieldArgumentBuilder)
FieldBuilder.AddSwitch(switchName) / AddSwitch(switchName, switchArgument)Aggiunge un interruttore di campo, con o senza valore
FieldBuilder.BuildAndInsert(refNode)Inserisce il campo costruito prima di un nodo Inline o alla fine di un Paragraph
FieldArgumentBuilderCostruisce un argomento di campo complesso da testo, nodi e campi nidificati
FieldArgumentBuilder.AddText(text)Aggiunge testo semplice all’argomento
FieldArgumentBuilder.AddNode(node)Aggiunge un nodo Inline all’argomento
FieldArgumentBuilder.AddField(fieldBuilder)Annida un campo costruito da FieldBuilder nell’argomento

Vedi anche

 Italiano