Εργασία με Επεξεργάσιμες Περιοχές
Εργασία με Επεξεργάσιμες Περιοχές
Αυτός ο οδηγός δείχνει πώς να ελέγξετε και να αφαιρέσετε επεξεργάσιμες περιοχές – τις περιοχές που η λειτουργία “Restrict Editing” του Word εξαιρεί από τον γενικό περιορισμό επεξεργασίας ενός εγγράφου, προαιρετικά περιορισμένες σε συγκεκριμένο χρήστη ή ομάδα – στο Aspose.Words FOSS για .NET. Μια επεξεργάσιμη περιοχή περικλείεται στο δέντρο του εγγράφου από ένα ζευγάρι κόμβων σημειώματος, EditableRangeStart and EditableRangeEnd, και περιγράφεται συνολικά από το EditableRange κλάση προσκηνίου.
Εύρεση Επεξεργάσιμων Περιοχών σε Ένα Έγγραφο
Δεν υπάρχει μια ενιαία ιδιότητα συλλογής για επεξεργάσιμες περιοχές· βρείτε τις περιηγούμενοι το δέντρο κόμβων. CompositeNode.GetChildNodes(nodeType, isDeep) με NodeType.EditableRangeStart επιστρέφει κάθε κόμβο EditableRangeStart στο έγγραφο (ή σε υποδέντρο, εάν κληθεί σε κόμβο διαφορετικό από Document). Κάθε ιδιότητα EditableRangeStart.EditableRange επιστρέφει τότε το αντίστοιχο αντικείμενο προσκηνίου EditableRange.
Το Προσκήνιο EditableRange
EditableRange περιγράφει μια μοναδική επεξεργάσιμη περιοχή συνολικά: το Id την αναγνωρίζει, το SingleUser προαιρετικά ονομάζει έναν συγκεκριμένο χρήστη που επιτρέπεται να την επεξεργαστεί, και το EditorGroup (μια τιμή EditorType) προαιρετικά ονομάζει μια ομάδα επεξεργασίας αντ’ αυτού. Τα EditableRangeStart και EditableRangeEnd επιστρέφουν το ζεύγος κόμβων δείκτη που περικλείουν την περιοχή στο έγγραφο. Το EditableRange.Remove() αφαιρεί την επεξεργάσιμη περιοχή – αφαιρώντας την εξαίρεση περιορισμού επεξεργασίας για εκείνη την περιοχή, χωρίς να διαγράφει το περιεχόμενο του εγγράφου μέσα σε αυτήν.
Οι Κόμβοι Δείκτη: EditableRangeStart και EditableRangeEnd
EditableRangeStart και EditableRangeEnd είναι sealed Node υποκατηγορίες που σημειώνουν τα όρια μιας περιοχής στη ροή περιεχομένου του εγγράφου. EditableRangeStart.Id και EditableRangeEnd.Id προσδιορίζουν την περιοχή· EditableRangeStart.EditableRange προσεγγίζει άμεσα το αντικείμενο facade, και EditableRangeEnd.EditableRangeStart επιστρέφει στον αντίστοιχο αρχικό δείκτη. Ως κανονικοί κόμβοι, και οι δύο υποστηρίζουν τα τυπικά μέλη Node — ParentNode, Document, PreviousSibling, NextSibling και Remove() για τη διαγραφή του επιμέρους δείκτη.
Περιορισμός πρόσβασης με EditorType
EditorType καταμετρά τις ομάδες επεξεργασίας που μπορεί να αναφέρει ένα EditableRange.EditorGroup: Administrators, Contributors, Editors, Owners, Everyone, Current, None και Unspecified (διαθέσιμο επίσης ως Default, ψευδώνυμο για Unspecified).
Συμβουλές και βέλτιστες πρακτικές
- Χρησιμοποιήστε το
GetChildNodes(NodeType.EditableRangeStart, true)με τοisDeep: trueγια να εντοπίσετε επεξεργάσιμες περιοχές οπουδήποτε στο έγγραφο, όχι μόνο μεταξύ των άμεσων παιδιών ενός κόμβου. - Διαβάστε τα
EditableRange.SingleUserκαιEditorGroupμαζί για να καθορίσετε σε ποιον περιορίζεται μια περιοχή — η περιοχή μπορεί να περιορίζεται σε έναν συγκεκριμένο χρήστη, μια ομάδα επεξεργασίας ή κανένα. - Καλέστε το
EditableRange.Remove()(στο facade) αντί να αφαιρέσετε τα κόμβους δείκτηEditableRangeStartκαιEditableRangeEndξεχωριστά, ώστε και τα δύο άκρα της περιοχής να καθαρίζονται με συνέπεια.
Κοινά προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
| Δεν βρέθηκαν επεξεργάσιμες περιοχές παρόλο που το έγγραφο έχει περιορισμένη επεξεργασία | Η αναζήτηση χρησιμοποίησε την προεπιλεγμένη (ρηχή) κλήση GetChildNodes | Περάστε το isDeep: true ώστε η αναζήτηση να καλύπτει ολόκληρο το υποδέντρο του εγγράφου |
| Η αφαίρεση μιας επεξεργάσιμης περιοχής δεν αφαιρεί το κείμενο που περιέχεται | EditableRange.Remove() αφαιρεί μόνο τα σημεία περιοχής και την εξαίρεση επεξεργασίας, όχι το περιεχόμενο μεταξύ τους | Αυτό είναι αναμενόμενο – διαγράψτε το περιεχόμενο ξεχωριστά εάν πρέπει επίσης να αφαιρεθεί |
EditorGroup εμφανίζεται ως Unspecified παρόλο που το Word δείχνει μια ονομαστική ομάδα | Η ομάδα επεξεργαστή της περιοχής στο πηγαίο έγγραφο αντιστοιχεί σε EditorType.Unspecified/Default αντί για μία από τις τιμές της ονομαστικής ομάδας | Ελέγξτε επίσης το SingleUser – το εύρος ενδέχεται να περιορίζεται σε έναν μεμονωμένο χρήστη |
FAQ
Πώς μπορώ να βρω όλες τις επεξεργάσιμες περιοχές σε ένα έγγραφο;
Καλέστε Document.GetChildNodes(NodeType.EditableRangeStart, true), στη συνέχεια διαβάστε την ιδιότητα EditableRange σε κάθε κόμβο EditableRangeStart που επιστρέφεται.
Πώς μπορώ να διαπιστώ ποιος επιτρέπεται να επεξεργαστεί μια δεδομένη περιοχή;
Διαβάστε EditableRange.SingleUser (έναν συγκεκριμένο χρήστη) και EditableRange.EditorGroup (μια ομάδα επεξεργασίας EditorType) στο αντικείμενο προσκηνίου.
Πώς μπορώ να αφαιρέσω έναν περιορισμό επεξεργασίας από μέρος ενός εγγράφου;
Καλέστε Remove() στο αντικείμενο προσκηνίου EditableRange για αυτήν την περιοχή.
Ποια είναι η διαφορά μεταξύ EditableRangeStart.EditableRange και EditableRangeEnd.EditableRangeStart;
EditableRangeStart.EditableRange φθάνει στο αντικείμενο προσκηνής που περιγράφει ολόκληρο το εύρος άμεσα. EditableRangeEnd.EditableRangeStart επιστρέφει στον αντίστοιχο κόμβο δείκτη εκκίνησης, από τον οποίο μπορεί στη συνέχεια να φθάσει EditableRange.
API Reference Σύνοψη
| Κλάση / Enum | Περιγραφή |
|---|---|
EditableRange | Facade για μία επεξεργάσιμη περιοχή: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Κόμβος που σημειώνει την έναρξη ενός εύρους; Id, EditableRange |
EditableRangeEnd | Κόμβος που σημειώνει το τέλος ενός εύρους; Id, EditableRangeStart |
EditorType | Enum των ομάδων επεξεργασίας: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |