Travailler avec du texte

Travailler avec le texte

Le texte d’un document Word est organisé en nœuds Run (caractères contigus partageant la même mise en forme de police) regroupés dans des nœuds Paragraph. Aspose.Words FOSS pour .NET expose les deux directement, ainsi que Font pour la mise en forme des caractères, ParagraphFormat pour la mise en forme au niveau du paragraphe, et Range pour la lecture ou le remplacement de texte sur n’importe quelle partie de l’arbre. Ce guide couvre les runs et les polices, la mise en forme des paragraphes, la lecture et le remplacement de texte, les commentaires et la mise en forme des listes au niveau du paragraphe.


Runs et mise en forme des caractères

Un Run représente une plage de texte qui partage un même jeu de mise en forme; sa propriété Text contient le contenu en texte brut et sa propriété Font (un objet Font) contient la mise en forme au niveau des caractères — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough, et bien d’autres. Font.ClearFormatting() réinitialise la police d’un run aux valeurs par défaut. Les runs d’un paragraphe sont accessibles via sa propriété Runs, un RunCollection.


Paragraphes et mise en forme des paragraphes

Paragraph est un nœud composite contenant les runs (et autre contenu en ligne) d’un paragraphe ; les paragraphes d’un document ou d’un corps sont exposés comme un ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (un objet ParagraphFormat) contrôle la mise en page au niveau du paragraphe — Alignment, retraits (LeftIndent, RightIndent, FirstLineIndent), espacement (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), et comportement de pagination (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() réinitialise ceux-ci aux valeurs par défaut, et Paragraph.JoinRunsWithSameFormatting() fusionne les runs adjacents qui ont une mise en forme identique.


Lecture et remplacement du texte avec Range

Chaque nœud qui contient du contenu — un Document, Section, Paragraph ou Run — expose un Range. Range.Text renvoie le texte brut de tout ce qui se trouve dans cette plage, et Range.Replace(pattern, replacement) effectue une recherche-remplacement limitée à cette plage, de sorte que vous pouvez, par exemple, remplacer du texte à l’intérieur d’un paragraphe sans toucher au reste du document. Range.Delete() supprime le contenu de la plage entièrement.


Comments

Un nœud Comment ancre un commentaire à un emplacement dans le texte; créez-en un avec new Comment(doc, author, initial, dateTime) et définissez son texte principal avec SetText(text), puis insérez-le dans le document comme n’importe quel autre nœud. Comment.AddReply(author, initial, dateTime, text) ajoute une réponse en chaîne, et RemoveReply(reply) / RemoveAllReplies() les suppriment. Les commentaires d’un document sont rassemblés dans un CommentCollection.


Mise en forme des listes au niveau du paragraphe

Paragraph.ListFormat (un objet ListFormat) indique et contrôle si un paragraphe fait partie d’une liste: IsListItem et ListLevelNumber rapportent son état actuel, ApplyBulletDefault() et ApplyNumberDefault() transforment un paragraphe en élément de liste à puces ou numéroté par défaut, ListIndent() / ListOutdent() modifient son niveau d’imbrication dans la liste, et RemoveNumbers() le reconvertit en paragraphe ordinaire.


Conseils et meilleures pratiques

  • Définissez les propriétés de police sur DocumentBuilder.Font avant d’écrire du texte avec le constructeur plutôt que d’écrire le texte d’abord et de reformater ensuite les objets Run individuellement.
  • Limitez la portée de Range.Replace à la plus petite plage qui couvre ce que vous souhaitez réellement modifier — appelez-le sur la plage d’un Paragraph ou d’un Section plutôt que sur l’ensemble du document lorsque la modification ne doit pas s’appliquer à tout le document.
  • Appelez Paragraph.JoinRunsWithSameFormatting() après une série de modifications programmatiques afin d’éviter une structure de cours inutilement fragmentée.
  • Utilisez ListFormat.ApplyBulletDefault() / ApplyNumberDefault() pour obtenir rapidement une liste par défaut plutôt que de construire les définitions de listes manuellement lorsque les valeurs par défaut intégrées sont suffisantes.
  • Lisez les résultats de Comment.AddReply en tant que nœuds Comment eux-mêmes — les réponses sont des objets de commentaire complets, pas de simples chaînes.

Problèmes courants

ProblèmeCauseCorrection
Le formatage d’un Run Font ne modifie pas visuellement le texte adjacentLe texte adjacent se trouve dans un Run différent avec sa propre instance FontLocalisez et formatez chaque Run affecté, ou définissez le formatage via DocumentBuilder.Font avant l’écriture
Range.Replace modifie le texte en dehors de la zone prévueReplace a été appelé sur Document.Range au lieu de la plage d’un nœud plus restreintAppelez Replace sur le Paragraph spécifique, Section, ou le Range d’un autre nœud
Un paragraphe ressemble à un élément de liste mais IsListItem est fauxLe puce/numéro est du texte manuel, pas une vraie mise en forme de listeAppliquez une vraie mise en forme de liste avec ListFormat.ApplyBulletDefault() ou ApplyNumberDefault() au lieu de caractères tapés
Le document comporte beaucoup plus de nœuds Run que prévuDes petites modifications répétées divisent les séquences sans les rejoindreAppelez Paragraph.JoinRunsWithSameFormatting() après des lots de modifications

FAQ

Quelle est la différence entre Run et Paragraph?

Un Run est une tranche de texte partageant un même jeu de formatage de caractères (Font); un Paragraph est le nœud composite qui contient un ou plusieurs runs (et d’autres contenus en ligne) ainsi que le formatage au niveau du paragraphe (ParagraphFormat).

Comment lire tout le texte d’un document ou d’une section?

Lisez la propriété Text du Range de ce nœud — par exemple, document.Range.Text ou section.Range.Text.

Comment puis-je rechercher et remplacer du texte dans un seul paragraphe?

Appelez Replace(pattern, replacement) sur le Range de ce Paragraph plutôt que sur Document.Range.

Comment ajouter un commentaire à un document?

Créez-le avec new Comment(doc, author, initial, dateTime), définissez son texte avec SetText(text) et insérez-le dans l’arbre; répondez-lui avec Comment.AddReply(author, initial, dateTime, text).

Comment transformer un paragraphe en élément de liste à puces?

Appelez ApplyBulletDefault() sur le ListFormat de ce paragraphe; utilisez ApplyNumberDefault() pour une liste numérotée à la place.


API Reference Résumé

Classe/MéthodeDescription
RunUn span de texte partageant un même ensemble de formatage de caractères.
FontMise en forme au niveau des caractères — nom, taille, gras, italique, couleur, et plus.
ParagraphNœud composite contenant les runs et la mise en forme d’un paragraphe.
ParagraphFormatMise en forme au niveau du paragraphe — alignement, retraits, espacement, pagination.
ParagraphCollectionCollection typée de nœuds Paragraph, par ex. Body.Paragraphs.
RangeUne zone contiguë du document ; prend en charge Text, Replace et Delete.
CommentUn commentaire en fil de discussion ancré à un emplacement dans le texte.
CommentCollectionLa collection de commentaires du document.
ListFormatContrôle si et comment un paragraphe participe à une liste.

Voir aussi

 Français