Εργασία με κείμενο

Εργασία με Κείμενο

Το κείμενο σε ένα έγγραφο Word οργανώνεται σε κόμβους Run (διαδοχικοί χαρακτήρες που μοιράζονται την ίδια μορφοποίηση γραμματοσειράς) που ομαδοποιούνται μέσα σε κόμβους Paragraph. Το Aspose.Words FOSS για .NET εκθέτει και τα δύο άμεσα, μαζί με Font για μορφοποίηση χαρακτήρων, ParagraphFormat για μορφοποίηση επιπέδου παραγράφου και Range για ανάγνωση ή αντικατάσταση κειμένου σε οποιοδήποτε τμήμα του δέντρου. Αυτός ο οδηγός καλύπτει τα runs και τις γραμματοσειρές, τη μορφοποίηση παραγράφων, την ανάγνωση και αντικατάσταση κειμένου, τα σχόλια και τη μορφοποίηση λιστών σε επίπεδο παραγράφου.


Runs και Μορφοποίηση Χαρακτήρων

Ένα Run αντιπροσωπεύει ένα τμήμα κειμένου που μοιράζεται ένα σύνολο μορφοποίησης· η ιδιότητα Text του περιέχει το απλό κείμενο και η ιδιότητα Font του (ένα αντικείμενο Font) περιέχει τη μορφοποίηση επιπέδου χαρακτήρων — Name, Size, Bold, Italic, Underline, Color, HighlightColor, Subscript/Superscript, StrikeThrough, και πολλά άλλα. Το Font.ClearFormatting() επαναφέρει τη γραμματοσειρά ενός run στις προεπιλογές. Τα runs μιας παραγράφου είναι διαθέσιμα μέσω της ιδιότητας Runs, ένα RunCollection.


Παράγραφοι και Μορφοποίηση Παραγράφων

Paragraph είναι ένας σύνθετος κόμβος που περιέχει τα runs (και άλλο ενσωματωμένο περιεχόμενο) μιας παραγράφου· οι παράγραφοι ενός εγγράφου ή του σώματος εκτίθενται ως ParagraphCollection (Body.Paragraphs). Το Paragraph.ParagraphFormat (ένα αντικείμενο ParagraphFormat) ελέγχει τη διάταξη επιπέδου παραγράφου — Alignment, εσοχές (LeftIndent, RightIndent, FirstLineIndent), διάστιχο (SpaceBefore, SpaceAfter, LineSpacing, LineSpacingRule), και τη συμπεριφορά σε σελιδοποίηση (KeepTogether, KeepWithNext, PageBreakBefore, WidowControl). Το ParagraphFormat.ClearFormatting() επαναφέρει αυτά στις προεπιλογές, και το Paragraph.JoinRunsWithSameFormatting() συγχωνεύει τα διαδοχικά runs που φέρουν ταυτόσημη μορφοποίηση.


Ανάγνωση και Αντικατάσταση Κειμένου με Range

Κάθε κόμβος που περιέχει περιεχόμενο — ένα Document, Section, Paragraph ή Run — εκθέτει ένα Range. Το Range.Text επιστρέφει το απλό κείμενο όλων των στοιχείων εντός αυτού του εύρους, και το Range.Replace(pattern, replacement) εκτελεί μια λειτουργία εύρεσης-αντικατάστασης περιορισμένη μόνο σε αυτό το εύρος, ώστε να μπορείτε, για παράδειγμα, να αντικαταστήσετε κείμενο μέσα σε μια παράγραφο χωρίς να επηρεάσετε το υπόλοιπο του εγγράφου. Το Range.Delete() αφαιρεί εντελώς το περιεχόμενο του εύρους.


Comments

Ένας κόμβος Comment ενώνει ένα σχόλιο σε θέση στο κείμενο· δημιουργήστε έναν με το new Comment(doc, author, initial, dateTime) και ορίστε το κείμενο του σώματος με το SetText(text), στη συνέχεια εισάγετέ τον στο έγγραφο όπως οποιονδήποτε άλλο κόμβο. Το Comment.AddReply(author, initial, dateTime, text) προσθέτει μια αλληλουχική απάντηση, και τα RemoveReply(reply) / RemoveAllReplies() τα αφαιρούν. Τα σχόλια ενός εγγράφου συλλέγονται σε ένα CommentCollection.


Μορφοποίηση λίστας σε επίπεδο παραγράφου

Paragraph.ListFormat (ένα αντικείμενο ListFormat) αναφέρει και ελέγχει εάν μια παράγραφος είναι μέρος λίστας: τα IsListItem και ListLevelNumber αναφέρουν την τρέχουσα κατάσταση της, τα ApplyBulletDefault() και ApplyNumberDefault() μετατρέπουν μια παράγραφο σε προεπιλεγμένο στοιχείο λίστας με κουκίδες ή αριθμημένο, τα ListIndent() / ListOutdent() αλλάζουν το επίπεδο εμφώλευσης της λίστας, και το RemoveNumbers() την επαναφέρει σε κανονική παράγραφο.


Συμβουλές και βέλτιστες πρακτικές

  • Ορίστε τις ιδιότητες γραμματοσειράς στο DocumentBuilder.Font πριν γράψετε κείμενο με τον builder αντί να γράψετε το κείμενο πρώτα και να μορφοποιήσετε ξανά τα μεμονωμένα αντικείμενα Run αργότερα.
  • Περιορίστε το Range.Replace στο μικρότερο εύρος που καλύπτει ό,τι θέλετε πραγματικά να αλλάξει — καλέστε το σε ένα εύρος Paragraph ή Section αντί για ολόκληρο το έγγραφο όταν η αλλαγή δεν πρέπει να ισχύει σε όλο το έγγραφο.
  • Καλέστε το Paragraph.JoinRunsWithSameFormatting() μετά από μια σειρά προγραμματιστικών επεξεργασιών για να αποφύγετε μια περιττά κατακερματισμένη δομή εκτελέσεων.
  • Χρησιμοποιήστε το ListFormat.ApplyBulletDefault() / ApplyNumberDefault() για μια γρήγορη προεπιλεγμένη λίστα αντί να δημιουργείτε ορισμούς λίστας χειροκίνητα όταν οι ενσωματωμένες προεπιλογές είναι επαρκείς.
  • Αναγνώστε τα αποτελέσματα του Comment.AddReply ως κόμβους Comment — οι απαντήσεις είναι πλήρη αντικείμενα σχολίων, όχι απλές συμβολοσειρές.

Συνηθισμένα Προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
Η μορφοποίηση του Font ενός Run δεν αλλάζει οπτικά το γειτονικό κείμενοΤο γειτονικό κείμενο βρίσκεται σε διαφορετικό Run με τη δική του εμφάνιση του FontΕντοπίστε και μορφοποιήστε κάθε επηρεαζόμενο Run, ή ορίστε τη μορφοποίηση μέσω DocumentBuilder.Font πριν τη γραφή
Range.Replace αλλάζει κείμενο εκτός της προοριζόμενης περιοχήςΤο Replace κλήθηκε στο Document.Range αντί για το εύρος ενός πιο στενού κόμβουΚαλέστε Replace στο συγκεκριμένο Paragraph, Section, ή στο Range άλλου κόμβου
Μια παράγραφος μοιάζει με στοιχείο λίστας αλλά το IsListItem είναι ψευδέςΗ κουκκίδα/αρίθμηση είναι χειροκίνητο κείμενο, όχι πραγματική μορφοποίηση λίσταςΕφαρμόστε πραγματική μορφοποίηση λίστας με ListFormat.ApplyBulletDefault() ή ApplyNumberDefault() αντί για πληκτρολογημένους χαρακτήρες
Το έγγραφο έχει πολύ περισσότερους Run κόμβους από το αναμενόμενοΕπαναλαμβανόμενες μικρές επεμβάσεις χωρίζουν τα τμήματα χωρίς να τα επαναενώσουνΚαλέστε Paragraph.JoinRunsWithSameFormatting() μετά από παρτίδες επεμβάσεων

FAQ

Ποια είναι η διαφορά μεταξύ Run και Paragraph;

Ένα Run είναι ένα τμήμα κειμένου που μοιράζεται ένα σύνολο μορφοποίησης χαρακτήρων (Font); ένα Paragraph είναι ο σύνθετος κόμβος που περιέχει μία ή περισσότερες εκτελέσεις (και άλλο ενσωματωμένο περιεχόμενο) συν μορφοποίηση επιπέδου παραγράφου (ParagraphFormat).

Πώς μπορώ να διαβάσω όλο το κείμενο σε ένα έγγραφο ή τμήμα;

Διαβάστε την ιδιότητα Text του Range αυτού του κόμβου — για παράδειγμα, document.Range.Text ή section.Range.Text.

Πώς μπορώ να βρω και να αντικαταστήσω κείμενο μόνο σε μία παράγραφο;

Καλέστε το Replace(pattern, replacement) στο Range του Paragraph αντί για το Document.Range.

Πώς μπορώ να προσθέσω ένα σχόλιο σε ένα έγγραφο;

Δημιουργήστε το με το new Comment(doc, author, initial, dateTime), ορίστε το κείμενό του με το SetText(text) και εισάγετέ το στο δένδρο· απαντήστε του με το Comment.AddReply(author, initial, dateTime, text).

Πώς μπορώ να μετατρέψω μια παράγραφο σε στοιχείο λίστας με κουκκίδες;

Καλέστε το ApplyBulletDefault() στο ListFormat της παραγράφου· χρησιμοποιήστε το ApplyNumberDefault() για αριθμημένη λίστα αντί αυτού.


API Reference Περίληψη

Κλάση/ΜέθοδοςΠεριγραφή
RunΈνα τμήμα κειμένου που μοιράζεται ένα σύνολο μορφοποίησης χαρακτήρων.
FontΜορφοποίηση σε επίπεδο χαρακτήρα — όνομα, μέγεθος, έντονο, πλάγιο, χρώμα και άλλα.
ParagraphΣύνθετος κόμβος που περιέχει τις ακολουθίες και τη μορφοποίηση μιας παραγράφου.
ParagraphFormatΜορφοποίηση σε επίπεδο παραγράφου — στοίχιση, εσοχές, απόσταση, σελιδοποίηση.
ParagraphCollectionΤυποποιημένη συλλογή Paragraph κόμβων, π.χ. Body.Paragraphs.
RangeΜια συνεχής περιοχή του εγγράφου; υποστηρίζει Text, Replace και Delete.
CommentΈνα νήμα σχολίου προσαρτημένο σε θέση στο κείμενο.
CommentCollectionΗ συλλογή σχολίων του εγγράφου.
ListFormatΕλέγχει αν και πώς μια παράγραφος συμμετέχει σε μια λίστα.

Δείτε επίσης

 Ελληνικά