Εισαγωγή
Aspose.Words FOSS για .NET περιλαμβάνει το ίδιο μοντέλο αντικειμένων μορφοποίησης κειμένου όπως η εμπορική μηχανή Aspose.Words: Font για ιδιότητες επιπέδου εκτέλεσης, ParagraphFormat για ιδιότητες επιπέδου παραγράφου, ListFormat για αριθμημένες και κουκίδες λίστες, FrameFormat για τοποθετημένα πλαίσια κειμένου, και Range.Replace για εύρεση-αντικατάσταση. Αυτός ο οδηγός εστιάζει ειδικά σε αυτό το επίπεδο — μορφοποίηση και επανεγγραφή κειμένου που υπάρχει ήδη σε ένα έγγραφο — αντί για τη δημιουργία της δομής του εγγράφου από την αρχή (δείτε την δημοσίευση εισαγωγής για μια επισκόπηση της έκδοσης).
Η βιβλιοθήκη είναι αδειοδοτημένη υπό MIT χωρίς εγγενείς εξαρτήσεις και στοχεύει το .NET Standard 2.0, έτσι εκτελείται στο .NET Framework 4.6.2+ και .NET 6, 8 και 10. Εγκαταστήστε την μέσω NuGet, ή δημιουργήστε την από πηγή (δείτε το Γρήγορη Έναρξη παρακάτω). Ό,τι περιγράφεται εδώ λειτουργεί με .docx, .docm, .dotx, .dotm, και αρχεία Flat OPC που φορτώνονται με new Document(fileName), ή με έγγραφα που δημιουργούνται στη μνήμη με DocumentBuilder.
Επειδή το Aspose.Words FOSS για .NET είναι η αυθεντική βάση κώδικα Aspose.Words μειωμένη σε ένα ελεύθερο πυρήνα αντί για επανεγγραφή, το μοντέλο αντικειμένων Font, ParagraphFormat, ListFormat και FrameFormat μεταφέρεται άμεσα στη εμπορική Aspose.Words για .NET εάν ένα έργο αργότερα χρειάζεται διάταξη σελίδας, απόδοση ή τους επιπλέον μετατροπείς μορφής που αυτή η έκδοση εξαιρεί.
Κύρια χαρακτηριστικά
Μορφοποίηση επιπέδου εκτέλεσης με γραμματοσειρά
Κάθε Run εκθέτει μια ιδιότητα Font, και το DocumentBuilder.Font ορίζει τη γραμματοσειρά που θα εφαρμοστεί στο επόμενο κείμενο. Εκτός από τα προφανή Bold, Italic και Underline (ένα Underline enum με τιμές όπως Single, Double, Dotted, Dash, Wavy, και τις *Heavy παραλλαγές τους), το Font καλύπτει τα StrikeThrough, DoubleStrikeThrough, Superscript, Subscript, SmallCaps, AllCaps, Hidden, Shadow, Outline, Emboss, Engrave, Color, HighlightColor, Spacing, Position, Kerning, Scaling και EmphasisMark. Τα Font.Style, Font.StyleName και Font.StyleIdentifier συνδέουν μια εκτέλεση με ένα στυλ χαρακτήρα, και το Font.ClearFormatting() επαναφέρει τη άμεση μορφοποίηση μιας εκτέλεσης στα προεπιλεγμένα του στυλ. Το DocumentBuilder εκθέτει επίσης τα Bold, Italic και Underline απευθείας ως συντομεύσεις, συν το PushFont() και PopFont() για αποθήκευση και επαναφορά της τρέχουσας κατάστασης γραμματοσειράς του builder γύρω από μια προσωρινή αλλαγή μορφοποίησης.
Μορφοποίηση παραγράφων με ParagraphFormat
ParagraphFormat (προσιτό μέσω Paragraph.ParagraphFormat ή DocumentBuilder.ParagraphFormat) ελέγχει την στοίχιση μέσω του enum ParagraphAlignment (Left, Center, Right, Justify, Distributed, μαζί με τις αραβικές παραλλαγές kashida και τις διανεμημένες ταϊλανδικές), την εσοχή μέσω LeftIndent, RightIndent και FirstLineIndent (με ισοδύναμα CharacterUnit* για ανατολικοασιατικές διατάξεις), και το διάστημα μέσω SpaceBefore, SpaceAfter και LineSpacingRule/LineSpacing. Η συμπεριφορά σελιδοποίησης ελέγχεται με τα KeepTogether, KeepWithNext, PageBreakBefore και WidowControl, και το Bidi σηματοδοτεί μια παράγραφο ως δεξιά-προς-αριστερά. Τα προσαρμοσμένα σημεία στηλοθέτη βρίσκονται στο ParagraphFormat.TabStops, ένα TabStopCollection από αντικείμενα TabStop, το καθένα με ένα Position, ένα TabAlignment (Left, Center, Right, Decimal, Bar), και ένα TabLeader (None, Dots, Dashes, Line, Heavy, MiddleDot). Όπως και με το Font, τα ParagraphFormat.Style και StyleName συνδέουν την παράγραφο με ένα ονομασμένο Style, και το ClearFormatting() καθαρίζει τη άμεση μορφοποίηση παραγράφου.
Λίστες με ListFormat
ListFormat (στο Paragraph.ListFormat ή DocumentBuilder.ListFormat) εφαρμόζει μορφοποίηση λίστας σε μια παράγραφο: τα ApplyBulletDefault() και ApplyNumberDefault() την μετατρέπουν σε προεπιλεγμένη κουκίδωση ή αριθμημένη λίστα, το RemoveNumbers() αφαιρεί εντελώς τη μορφοποίηση λίστας, και τα ListIndent()/ListOutdent() τη μετακινούν μεταξύ επιπέδων λίστας. Το ListFormat.List επιστρέφει τον υποκείμενο ορισμό List, και το ListFormat.ListLevel επιστρέφει το ListLevel σε ισχύ για εκείνη την παράγραφο, το οποίο περιλαμβάνει ρυθμίσεις ανά επίπεδο όπως NumberStyle, NumberFormat, Alignment (ένα ListLevelAlignment του Left, Center ή Right), StartAt, RestartAfterLevel, ένα ειδικό για το επίπεδο Font, και TrailingCharacter (ένα ListTrailingCharacter των Tab, Space ή Nothing) που ελέγχει το κενό μεταξύ της ετικέτας λίστας και του κειμένου της παραγράφου. Οι νέοι ορισμοί λίστας προέρχονται από το ListCollection.Add(listTemplate) χρησιμοποιώντας μία από τις ενσωματωμένες προεπιλογές ListTemplate (BulletDefault, NumberArabicDot, NumberUppercaseRomanDot και παρόμοιες), ή το AddSingleLevelList για λίστα μονού επιπέδου· οι λίστες ενός εγγράφου απαριθμούνται μέσω του Document.Lists.
Πλαίσια κειμένου με FrameFormat
Paragraph.FrameFormat είναι ένα αντικείμενο αναφοράς μόνο για ανάγνωση: κάθε ιδιότητα σε αυτό αντικατοπτρίζει το τρέχουσα κατάσταση πλαισίου αντί να σας επιτρέπει να τη ρυθμίσετε απευθείας. IsFrame αναφέρει εάν η παράγραφος είναι αυτή τη στιγμή ένα πλαίσιο; Width, Height, και HeightRule αναφέρει το μέγεθός του; HorizontalPosition και VerticalPosition, μαζί με RelativeHorizontalPosition και RelativeVerticalPosition, αναφέρετε πού είναι αγκυροποιημένο σε σχέση με τη σελίδα, το περιθώριο, τη στήλη ή την παράγραφο; και HorizontalDistanceFromText/VerticalDistanceFromText αναφέρετε το κενό μεταξύ του πλαισίου και του περιβάλλοντος κυρίως κειμένου. HorizontalAlignment και VerticalAlignment αναφέρετε πώς ευθυγραμμίζεται το περιεχόμενο μέσα στο πλαίσιο.
Εύρεση και Αντικατάσταση με Range και IReplacingCallback
Range.Replace — διαθέσιμο στο Document.Range για πέρασμα ολόκληρου εγγράφου, ή στο Range οποιουδήποτε κόμβου — διαθέτει υπερφορτώσεις για ένα απλό ζεύγος μοτίβο/αντικατάσταση και για ένα ζεύγος μοτίβο/αντικατάσταση συνδυασμένο με μια παρουσία FindReplaceOptions, υποστηρίζοντας αντιστοίχιση με βάση regex. Τα FindReplaceOptions.MatchCase και FindWholeWordsOnly περιορίζουν τι θεωρείται αντιστοίχιση· το Direction (FindReplaceDirection.Forward ή Backward) ορίζει τη σειρά σάρωσης· τα ApplyFont και ApplyParagraphFormat επιτρέπουν σε ένα πέρασμα αντικατάστασης να μεταφέρει τη μορφοποίηση στο κείμενο αντικατάστασης· και ένα σύνολο σημαιών Ignore* (IgnoreDeleted, IgnoreInserted, IgnoreFields, IgnoreFieldCodes, IgnoreFootnotes, IgnoreStructuredDocumentTags, IgnoreShapes, IgnoreOfficeMath) εξαιρούν συγκεκριμένες κατηγορίες περιεχομένου από την αντιστοίχιση. Για λογική αντικατάστασης που μια σταθερή συμβολοσειρά δεν μπορεί να εκφράσει, υλοποιήστε το IReplacingCallback.Replacing(args) και ορίστε το ως FindReplaceOptions.ReplacingCallback (ή περάστε το σε έναν από τους FindReplaceOptions constructors που δέχεται άμεσα ένα callback); η παράμετρος args είναι ένα ReplacingArgs που εκθέτει τα Match, MatchNode, MatchOffset, και ένα settable Replacement string ώστε το callback να μπορεί να υπολογίσει μια τιμή ανά αντιστοίχιση. Ένα σχετικό ReplaceAction enum (Replace, Skip, Stop) περιγράφει τα πιθανά αποτελέσματα για μια μοναδική αντιστοίχιση κατά τη διάρκεια της λειτουργίας.
Γρήγορη Έναρξη
Aspose.Words FOSS για .NET είναι διαθέσιμο μέσω NuGet:
dotnet add package Aspose.Words.FOSSΓια να χτίσετε από τον πηγαίο κώδικα, αντί αυτού:
git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release
Έπειτα προσθέστε μια αναφορά έργου στο Aspose.Words.csproj. Για να μορφοποιήσετε το κείμενο καθώς το δημιουργείτε, ορίστε τις ιδιότητες του DocumentBuilder.Font (Bold, Italic, Underline), τις ιδιότητες του DocumentBuilder.ParagraphFormat (Alignment, εσοχές, απόσταση), και το DocumentBuilder.ListFormat (ApplyBulletDefault(), ApplyNumberDefault()) πριν καλέσετε το Write(), Writeln() ή InsertParagraph() — ο κατασκευαστής εφαρμόζει την τρέχουσα κατάσταση μορφοποίησης σε ό,τι γράφεται μέχρι να την αλλάξετε ξανά, ή να τυλίξετε μια προσωρινή αλλαγή σε PushFont()/PopFont(). Για να επαναμορφώσετε ή ξαναγράψετε κείμενο που ήδη υπάρχει σε ένα έγγραφο, ανοίξτε το με new Document(fileName) και καλέστε το Range.Replace() στο doc.Range — είτε η απλή υπερφόρτωση μοτίου/αντικατάστασης, είτε η υπερφόρτωση που δέχεται ένα FindReplaceOptions με MatchCase, FindWholeWordsOnly, ή ένα προσαρμοσμένο IReplacingCallback — στη συνέχεια Save() το αποτέλεσμα.
Υποστηριζόμενες μορφές
| Μορφή | Επέκταση | Ανάγνωση | Γράψτε |
|---|---|---|---|
| DOCX | .docx | ✓ | ✓ |
| DOCM | .docm | ✓ | ✓ |
| DOTX | .dotx | ✓ | ✓ |
| DOTM | .dotm | ✓ | ✓ |
| Flat OPC (όλες οι παραλλαγές) | (διάφορα) | ✓ | ✓ |
| Markdown | .md | ✓ | ✓ |
| Text | .txt | ✓ | ✓ |
Οι κλάσεις μορφοποίησης παραπάνω εφαρμόζονται με τον ίδιο τρόπο ανεξάρτητα από το σε ποια από αυτές τις μορφές φορτώνεται ή αποθηκεύεται ένα έγγραφο. Αυτή η έκδοση δεν υποστηρίζει DOC, RTF, ODT, HTML, EPUB, MHTML, MOBI, AZW3 ή WordML για ανάγνωση ή εγγραφή, και δεν υποστηρίζει PDF, XPS ή εξαγωγή εικόνας, καθώς η διάταξη σελίδας και η απόδοση βρίσκονται εκτός του πεδίου της.
Ανοιχτός Κώδικας & Άδειες
Aspose.Words FOSS για .NET κυκλοφορεί υπό την άδεια MIT, δωρεάν για εμπορική και προσωπική χρήση χωρίς δικαιώματα ή περιορισμούς αναδιανομής. Ο πλήρης πηγαίος κώδικας, συμπεριλαμβανομένων των Font, ParagraphFormat, ListFormat, FrameFormat και Range υλοποιήσεων που περιγράφονται παραπάνω, είναι διαθέσιμος στο GitHub στο Aspose.Words FOSS για το αποθετήριο .NET.