Remplacer les champs par du texte statique

Le remplacement des champs est souvent nécessaire lorsque vous souhaitez enregistrer votre document sous forme de copie statique. Par exemple, lors de l’envoi en pièce jointe dans un e-mail. La conversion de champs tels que DATE ou TIME en texte statique permettra au document d’afficher la même date que lors de son envoi. De plus, dans certaines situations, vous devrez peut-être supprimer les champs IF conditionnels de votre document et les remplacer par le résultat texte le plus récent. Par exemple, convertir le résultat du champ IF en texte statique afin qu’il ne change plus dynamiquement sa valeur lorsque les champs du document sont mis à jour.

Le schéma ci-dessous montre comment le champ IF est stocké dans un document:

  • le texte est entouré des nœuds de champs spéciaux – FieldStart et FieldEnd
  • le nœud FieldSeparator sépare le texte du champ en code de champ et résultat du champ
  • le code du champ définit le comportement général du champ, tandis que le résultat du champ conserve le résultat le plus récent lorsque ce champ est mis à jour via Microsoft Word ou Aspose.Words
  • le résultat du champ est ce qui est stocké dans le champ et affiché dans le document lors de sa visualisation

update-remove-a-field-aspose-words

La structure peut également être vue ci-dessous sous forme hiérarchique en utilisant le projet de démonstration “DocumentExplorer”.

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

Champs ne pouvant pas être remplacés par du texte

Le remplacement d’un champ par du texte statique ne fonctionne pas correctement pour certains champs d’un en-tête ou d’un pied de page.

Par exemple, si vous essayez de convertir le champ PAGE d’un en-tête ou d’un pied de page en texte statique, la même valeur sera affichée sur toutes les pages. En effet, les en-têtes et les pieds de page sont répétés sur plusieurs pages et lorsqu’ils restent sous forme de champs, ils sont traités spécialement pour afficher le résultat correct pour chaque page.

Cependant, dans l’en-tête, le champ PAGE se traduit bien en texte statique. Cette séquence de texte sera évaluée comme s’il s’agissait de la dernière page de la section, ce qui entraînera l’affichage de la dernière page sur toutes les pages par tout champ PAGE de l’en-tête.

L’exemple de code suivant montre comment remplacer le champ par son résultat le plus récent:

Convertir certains types de champs dans des parties de document spécifiques

Puisque la méthode ConvertFieldsToStaticText accepte deux paramètres: les propriétés CompositeNode et l’énumération FieldType, il est possible de passer n’importe quel nœud composite à cette méthode. Cela permet de convertir les champs en texte statique uniquement dans des parties spécifiques du document.

Par exemple, vous pouvez transmettre un objet Document et convertir les champs du type spécifié de l’ensemble du document en texte statique, ou vous pouvez transmettre un objet Body d’une section et convertir uniquement les champs trouvés dans ce corps.

L’énumération FieldType passée à la méthode ConvertFieldsToStaticText spécifie quel type de champs doit être converti en texte statique. Tout autre type de champ trouvé dans le document restera inchangé.

L’exemple de code suivant montre comment sélectionner des champs d’un type spécifique – targetFieldType dans un nœud spécifique – compositeNode, puis les convertir en texte statique:

L’exemple de code suivant montre comment convertir tous les champs IF d’un document en texte statique:

L’exemple de code suivant montre comment convertir tous les champs PAGE du corps d’un document en texte statique:

L’exemple de code suivant montre comment convertir tous les champs IF du dernier paragraphe en texte statique: