Lucrul cu text

Lucrul cu textul

Textul dintr-un document Word este organizat în noduri Run (caractere contigue care împărtășesc aceeași formatare de font) grupate în interiorul nodurilor Paragraph. Aspose.Words FOSS pentru .NET expune ambele direct, împreună cu Font pentru formatarea caracterelor, ParagraphFormat pentru formatarea la nivel de paragraf și Range pentru citirea sau înlocuirea textului în orice parte a arborelui. Acest ghid acoperă runs și fonts, formatarea paragrafelor, citirea și înlocuirea textului, comentariile și formatarea listelor la nivel de paragraf.


Runs și formatarea caracterelor

A Run reprezintă o porțiune de text care partajează un set de formatare; proprietatea sa Text conține conținutul textului simplu și proprietatea sa Font (un obiect Font) conține formatarea la nivel de caracter — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough și multe altele. Font.ClearFormatting() resetează fontul unui run la valorile implicite. Run-urile unui paragraf sunt disponibile prin proprietatea sa Runs, un RunCollection.


Paragrafe și formatarea paragrafelor

Paragraph este un nod compozit care conține run-urile (și alte conținuturi inline) ale unui paragraf; paragrafele unui document sau ale corpului sunt expuse ca un ParagraphCollection (Body.Paragraphs). Paragraph.ParagraphFormat (un obiect ParagraphFormat) controlează aspectul la nivel de paragraf — Alignment, indentările (LeftIndent, RightIndent, FirstLineIndent), spațierea (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule) și comportamentul de paginare (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). ParagraphFormat.ClearFormatting() resetează acestea la valorile implicite, iar Paragraph.JoinRunsWithSameFormatting() combină run-urile adiacente care au aceeași formatare.


Citirea și înlocuirea textului cu Range

Fiecare nod care conține conținut — un Document, Section, Paragraph sau Run — expune un Range. Range.Text returnează textul simplu al tuturor elementelor din acea zonă, iar Range.Replace(pattern, replacement) efectuează o căutare-și-înlocuire limitată la acea zonă, astfel încât, de exemplu, să poți înlocui textul dintr-un paragraf fără a atinge restul documentului. Range.Delete() elimină complet conținutul zonei.


Comments

Un nod Comment ancorează un comentariu la o locație din text; creează-l cu new Comment(doc, author, initial, dateTime) și setează textul corpului cu SetText(text), apoi inserează-l în document ca pe orice alt nod. Comment.AddReply(author, initial, dateTime, text) atașează un răspuns în lanț, iar RemoveReply(reply) / RemoveAllReplies() le elimină. Comentariile unui document sunt colectate într-un CommentCollection.


Formatarea listelor la nivel de paragraf

Paragraph.ListFormat (un obiect ListFormat) raportează și controlează dacă un paragraf face parte dintr-o listă: IsListItem și ListLevelNumber raportează starea curentă, ApplyBulletDefault() și ApplyNumberDefault() transformă un paragraf într-un element de listă cu marcatori sau numerotat implicit, ListIndent() / ListOutdent() modifică nivelul de imbricare al listei, iar RemoveNumbers() îl readuce la un paragraf obișnuit.


Sfaturi și bune practici

  • Setează proprietățile fontului pe DocumentBuilder.Font înainte de a scrie text cu constructorul, în loc să scrii textul mai întâi și să reformatezi ulterior obiectele Run individual.
  • Limitează Range.Replace la cea mai mică zonă care acoperă ceea ce vrei să modifici — apeleaz-o pe zona unui Paragraph sau a unui Section în loc de întregul document când modificarea nu trebuie să se aplice pe tot documentul.
  • Apelă Paragraph.JoinRunsWithSameFormatting() după o serie de editări programatice pentru a evita o structură de rulare inutil fragmentată.
  • Folosește ListFormat.ApplyBulletDefault() / ApplyNumberDefault() pentru o listă rapidă implicită în loc să construiești manual definițiile listelor atunci când valorile implicite încorporate sunt suficiente.
  • Citește rezultatele Comment.AddReply ca noduri Comment în sine — răspunsurile sunt obiecte de comentariu complete, nu șiruri simple.

Probleme comune

ProblemăCauzăRemediere
Formatarea unui Run Font nu modifică vizual textul adiacentTextul adiacent se află într-un Run diferit, cu propria sa instanță de FontLocalizați și formatați fiecare Run afectat, sau setați formatarea prin DocumentBuilder.Font înainte de scriere
Range.Replace modifică textul în afara zonei intenționateReplace a fost apelat pe Document.Range în loc de intervalul unui nod mai restrânsApelează Replace pe Paragraph specific, Section, sau pe Range al altui nod
Un paragraf arată ca un element de listă, dar IsListItem este falsBula/numărul este text manual, nu o formatare reală de listăAplică formatarea reală de listă cu ListFormat.ApplyBulletDefault() sau ApplyNumberDefault() în loc de caractere tastate
Documentul are mult mai multe noduri Run decât se așteptaEditările mici repetate împarte secvențele fără a le reuniApelează Paragraph.JoinRunsWithSameFormatting() după loturi de editări

FAQ

Care este diferența dintre Run și Paragraph?

Un Run este o porțiune de text care împărtășește un set de formatare a caracterelor (Font); un Paragraph este nodul compozit care conține unul sau mai multe run-uri (și alte conținuturi inline) plus formatarea la nivel de paragraf (ParagraphFormat).

Cum pot citi tot textul dintr-un document sau secțiune?

Citește proprietatea Text a Range nodului respectiv — de exemplu, document.Range.Text sau section.Range.Text.

Cum găsesc și înlocuiesc textul într-un singur paragraf?

Apelează Replace(pattern, replacement) pe Range al Paragraph în loc de Document.Range.

Cum adaug un comentariu la un document?

Creează-l cu new Comment(doc, author, initial, dateTime), setează-i textul cu SetText(text) și inserează-l în arbore; răspunde-i cu Comment.AddReply(author, initial, dateTime, text).

Cum transform un paragraf într-un element de listă cu marcatori?

Apelează ApplyBulletDefault() pe ListFormat al acelui paragraf; folosește ApplyNumberDefault() pentru o listă numerotată în schimb.


API Reference Rezumat

Clasă/MetodăDescriere:
RunUn span de text care partajează un singur set de formatare a caracterelor.
FontFormatare la nivel de caracter — nume, dimensiune, îngroșat, cursiv, culoare și altele.
ParagraphNod compus care conține run-urile și formatarea unui paragraf.
ParagraphFormatFormatare la nivel de paragraf — aliniere, indentări, spațiere, paginare.
ParagraphCollectionColecție tipizată de noduri Paragraph, de exemplu Body.Paragraphs.
RangeO zonă contiguă a documentului; acceptă Text, Replace și Delete.
CommentUn comentariu în fir de discuție ancorat la o locație din text.
CommentCollectionColecția de comentarii a documentului.
ListFormatControlează dacă și cum un paragraf participă la o listă.

Vezi și:

 Română