Remplacer les champs par du Texte statique

Le remplacement des champs est souvent nécessaire lorsque vous souhaitez enregistrer votre document en tant que 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 conditionnels IF de votre document et les remplacer par le résultat de texte le plus récent à la place. 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 diagramme ci-dessous montre comment le champ IF est stocké dans un document:

  • le texte est entouré des nœuds de champ spéciaux - FieldStart et FieldEnd
  • le nœud FieldSeparator sépare le texte dans le champ en code de champ et résultat de champ
  • le code de 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 à l’aide de Microsoft Word ou Aspose.Words
  • le résultat du champ est ce qui est stocké dans le champ et affiché dans le document lorsqu’il est visualisé

update-remove-a-field-aspose-words

La structure peut également être vue ci-dessous sous forme hiérarchique à l’aide du projet de démonstration “DocumentExplorer”, fourni avec l’installateur Aspose.Words.

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

Champs qui ne peuvent 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 gérés de manière à afficher le résultat correct pour chaque page.

Cependant, dans l’en-tête, le champ PAGE se traduit bien par une exécution statique de texte. Cette série 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 de n’importe quel 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 en 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 aux champs d’être convertis en texte statique uniquement dans des parties spécifiques du document.

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

L’énumération FieldType transmise à 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 d’un corps de document en texte statique:

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