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 obiecteleRunindividual. - Limitează
Range.Replacela cea mai mică zonă care acoperă ceea ce vrei să modifici — apeleaz-o pe zona unuiParagraphsau a unuiSectionî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.AddReplyca noduriCommentî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 adiacent | Textul adiacent se află într-un Run diferit, cu propria sa instanță de Font | Localizaț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ționate | Replace a fost apelat pe Document.Range în loc de intervalul unui nod mai restrâns | Apelează Replace pe Paragraph specific, Section, sau pe Range al altui nod |
Un paragraf arată ca un element de listă, dar IsListItem este fals | Bula/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ștepta | Editările mici repetate împarte secvențele fără a le reuni | Apelează 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: |
|---|---|
Run | Un span de text care partajează un singur set de formatare a caracterelor. |
Font | Formatare la nivel de caracter — nume, dimensiune, îngroșat, cursiv, culoare și altele. |
Paragraph | Nod compus care conține run-urile și formatarea unui paragraf. |
ParagraphFormat | Formatare la nivel de paragraf — aliniere, indentări, spațiere, paginare. |
ParagraphCollection | Colecție tipizată de noduri Paragraph, de exemplu Body.Paragraphs. |
Range | O zonă contiguă a documentului; acceptă Text, Replace și Delete. |
Comment | Un comentariu în fir de discuție ancorat la o locație din text. |
CommentCollection | Colecția de comentarii a documentului. |
ListFormat | Controlează dacă și cum un paragraf participă la o listă. |