Εργασία με Ιδιότητες Εγγράφου

Εργασία με Ιδιότητες Εγγράφου

Εργασία με Ιδιότητες Εγγράφου

Αυτός ο οδηγός δείχνει πώς να διαβάσετε και να διαχειριστείτε τα μεταδεδομένα ενός εγγράφου Word — τις ιδιότητες που είναι ορατές στον πίνακα Πληροφορίες/Ιδιότητες του Word, καθώς και τυχόν προσαρμοσμένες τιμές που ορίζονται από την εφαρμογή. Document.BuiltInDocumentProperties και Document.CustomDocumentProperties εκθέτουν αυτές τις δύο κατηγορίες, και οι δύο τελικά βασίζονται στην ίδια υποκείμενη αναπαράσταση DocumentProperty.


Ενσωματωμένες Ιδιότητες Εγγράφου

Document.BuiltInDocumentProperties επιστρέφει μια συλλογή BuiltInDocumentProperties που καλύπτει τα τυπικά μεταδεδομένα που παρακολουθεί το Word για κάθε έγγραφο: περιγραφικά πεδία όπως Title, Subject, Author, Manager, Company, Category, Keywords και Comments; χρονοσημαίνοντες όπως CreatedTime, LastSavedTime και LastPrinted, μαζί με LastSavedBy και RevisionNumber; και στατιστικά όπως Words, Characters, CharactersWithSpaces, Lines, Paragraphs και Pages. Security αναφέρει την κατάσταση προστασίας του εγγράφου ως τιμή DocumentSecurity, και τα Template, NameOfApplication και TotalEditingTime περιγράφουν το περιβάλλον δημιουργίας. Επειδή το BuiltInDocumentProperties είναι ένα σταθερό, γνωστό σύνολο ιδιοτήτων, οι μεμονωμένες τιμές διαβάζονται και γράφονται ως συνηθισμένες ιδιότητες (BuiltInDocumentProperties.Author = "...") αντί να αναζητούνται με όνομα.

Προσαρμοσμένες Ιδιότητες Εγγράφου

Document.CustomDocumentProperties επιστρέφει μια συλλογή CustomDocumentProperties για μεταδεδομένα που ορίζονται από την εφαρμογή και δεν αποτελούν μέρος του ενσωματωμένου συνόλου του Word. Πολλές υπερφορτώσεις Add(name, value) δημιουργούν μια νέα ιδιότητα από ένα όνομα και μια τιμή τύπου (συμβολοσειρά, αριθμός, boolean ή ημερομηνία, ανάλογα με την υπερφόρτωση), και το AddLinkToContent(name, linkSource) δημιουργεί μια ιδιότητα της οποίας η τιμή είναι συνδεδεμένη και παρακολουθεί μια επισημασμένη περιοχή περιεχομένου στο έγγραφο αντί να διατηρεί μια στατική τιμή. Η ευρετηρίαση με όνομα (π.χ. properties[name]) και το Contains(name) αναζητούν μια ιδιότητα, το IndexOf(name) επιστρέφει τη θέση της, και τα Remove(name)/RemoveAt(index) τη διαγράφουν.

Το Αντικείμενο DocumentProperty και η Βάση Κοινόχρηστης Συλλογής

Και τα BuiltInDocumentProperties και CustomDocumentProperties προέρχονται από το αφηρημένο DocumentPropertyCollection, το οποίο ορίζει έναν ευρετηριαστή με όνομα, GetEnumerator(), Contains(name), IndexOf(name) και Count — έτσι οι δύο συλλογές εξετάζονται με τον ίδιο τρόπο, παρόλο που οι ενσωματωμένες ιδιότητες είναι σταθερές και οι προσαρμοσμένες ιδιότητες είναι ανοιχτού τύπου. Ατομικά, ένα DocumentProperty έχει ένα Name, ένα μη τυποποιημένο Value και ένα Type (μια τιμή enum PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray ή Other). Τα IsLinkToContent και LinkSource αναφέρουν εάν η ιδιότητα είναι συνδεδεμένη με το περιεχόμενο του εγγράφου αντί να κρατά μια στατική τιμή (δείτε το AddLinkToContent παραπάνω). Επειδή το Value είναι μη τυποποιημένο, το DocumentProperty παρέχει τυποποιημένους πρόσβατες — ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() και ToString() — για να το διαβάσετε ως συγκεκριμένο τύπο χωρίς ρητή μετατροπή.

Ασφάλεια Εγγράφου

BuiltInDocumentProperties.Security αναφέρει μια τιμή DocumentSecurity που περιγράφει την κατάσταση προστασίας του εγγράφου: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced ή ReadOnlyExceptAnnotations. Αυτό αντικατοπτρίζει τα αποθηκευμένα μεταδεδομένα προστασίας του εγγράφου όπως διαβάζονται από τις ιδιότητες του αρχείου.


Συμβουλές και Καλές Πρακτικές

  • Χρησιμοποιήστε τους τυποποιημένους πρόσβατες (ToInt(), ToDouble(), ToDateTime(), ToBool()) στο DocumentProperty.Value αντί να μετατρέπετε απευθείας την μη τυποποιημένη τιμή object, καθώς ο υποκείμενος τύπος αποθήκευσης μπορεί να διαφέρει ανά PropertyType.
  • Ελέγξτε το Contains(name) πριν κάνετε ευρετηρίαση σε οποιαδήποτε συλλογή ιδιοτήτων κατά όνομα (π.χ. properties[name]) όταν μια ιδιότητα μπορεί να μην υπάρχει, ώστε να αποφύγετε το χειρισμό της περίπτωσης ελλιπούσας ιδιότητας ως διαδρομή εξαίρεσης.
  • Χρησιμοποιήστε το CustomDocumentProperties.AddLinkToContent(name, linkSource) όταν η τιμή μιας προσαρμοσμένης ιδιότητας πρέπει πάντα να αντανακλά ένα σελιδοσημασμένο τμήμα του εγγράφου, αντί να συγχρονίζετε χειροκίνητα μια στατική προσαρμοσμένη ιδιότητα κάθε φορά που αυτό το περιεχόμενο αλλάζει.
  • Αντιμετωπίστε τα στατιστικά BuiltInDocumentProperties (Words, Characters, Pages και παρόμοια) ως τις τιμές που αποθηκεύονται στα μεταδεδομένα του αρχείου αντί για πάντα ζωντανά υπολογιζόμενα σύνολα — ανανεώστε τα ρητά εάν το έγγραφο έχει αλλάξει από την τελευταία τους εγγραφή.
  • Διαβάστε το BuiltInDocumentProperties.Security για να ελέγξετε την δηλωμένη κατάσταση προστασίας ενός εγγράφου πριν αποφασίσετε αν απαιτείται περαιτέρω επεξεργασία σχετική με την προστασία.

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

ΠρόβλημαΑιτίαΔιόρθωση
Η ευρετηρίαση μιας συλλογής CustomDocumentProperties με βάση το όνομα δεν επιστρέφει τίποτα χρήσιμοΗ ιδιότητα δεν υπάρχει σε αυτό το έγγραφοΚαλέστε το Contains(name) πρώτα ή προσθέστε την ιδιότητα με την κατάλληλη υπερφόρτωση Add(name, value)
Η ανάγνωση της τιμής μιας προσαρμοσμένης ιδιότητας δίνει τον λανθασμένο τύποDocumentProperty.Value είναι ατυποποιημένο object; ο καλών υπέθεσε έναν τύπο που δεν ταιριάζει με το TypeΧρησιμοποιήστε τον αντίστοιχο τυποποιημένο accessor (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) βάσει του DocumentProperty.Type
Η τιμή μιας συνδεδεμένης custom property φαίνεται παλιάΗ ιδιότητα συνδέεται μέσω του AddLinkToContent, και το συνδεδεμένο περιεχόμενο άλλαξε χωρίς το έγγραφο να ενημερωθεί κατάλληλαΕπιβεβαιώστε ότι το σελιδοσημασμένο εύρος linkSource εξακολουθεί να αντανακλά το προοριζόμενο περιεχόμενο
Τα στατιστικά λέξεων (Words, Pages κ.λπ.) δεν ταιριάζουν με το πραγματικό τρέχον περιεχόμενο του εγγράφουΤα ενσωματωμένα στατιστικά αντανακλούν τα αποθηκευμένα μεταδεδομένα, όχι μια ζωντανή επαναμέτρησηΕπανυπολογίστε και ενημερώστε τις σχετικές τιμές BuiltInDocumentProperties εάν απαιτείται ενημερωμένος αριθμός

FAQ

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

Χρησιμοποιήστε απευθείας το Document.BuiltInDocumentProperties.Author και το .Title — είναι απλές ιδιότητες συμβολοσειράς στη συλλογή BuiltInDocumentProperties που προέρχεται από το Document.BuiltInDocumentProperties.

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

Χρησιμοποιήστε το Document.CustomDocumentProperties.Add(name, value) με το όνομα και την τιμή της ιδιότητας· η κατάλληλη υπερφόρτωση Add επιλέγεται με βάση τον τύπο της τιμής.

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

BuiltInDocumentProperties είναι το σταθερό σύνολο τυπικών πεδίων μεταδεδομένων του Word (συγγραφέας, τίτλος, στατιστικά κ.λπ.), προσβάσιμο ως ονομαστικές ιδιότητες. CustomDocumentProperties είναι μια ανοιχτή, ονομαστική συλλογή DocumentProperty τιμών για μεταδεδομένα ορισμένα από την εφαρμογή, προσβάσιμη με όνομα μέσω του δείκτη (π.χ. properties[name]) και Contains.

Πώς μπορώ να διαβάσω μια προσαρμοσμένη ιδιότητα χωρίς να γνωρίζω εκ των προτέρων τον ακριβή αποθηκευμένο τύπο της;

Ανακτήστε το DocumentProperty μέσω της ευρετηρίασης της συλλογής (π.χ. properties[name]), ελέγξτε το Type του (μια τιμή PropertyType), και χρησιμοποιήστε τον αντίστοιχο πρόσβαση τύπου όπως ToInt(), ToDouble(), ToDateTime() ή ToBool() στο Value του.

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

Χρησιμοποιήστε το CustomDocumentProperties.AddLinkToContent(name, linkSource), περνώντας ένα όνομα σελιδοδείκτη ως linkSource; η τιμή της ιδιότητας τότε αντανακλά το σελιδοδεικτικό περιεχόμενο αντί για μια στατική τιμή.


API Reference Περίληψη

Κλάση/ΜέθοδοςΠεριγραφή
Document.BuiltInDocumentPropertiesΤυπικά πεδία μεταδεδομένων του Word (συγγραφέας, τίτλος, στατιστικά, ασφάλεια, κ.λπ.)
Document.CustomDocumentPropertiesΚαθορισμένες από την εφαρμογή ονομαστικές ιδιότητες μεταδεδομένων
CustomDocumentProperties.Add(name, value)Προσθέστε μια προσαρμοσμένη ιδιότητα με όνομα και τιμή τύπου
CustomDocumentProperties.AddLinkToContent(name, linkSource)Προσθέστε μια προσαρμοσμένη ιδιότητα συνδεδεμένη με το περιεχόμενο του εγγράφου που έχει σελιδοδείκτη
DocumentPropertyCollectionΚοινή αφηρημένη βάση για τις δύο συλλογές ιδιοτήτων
DocumentPropertyΤο όνομα μίας μόνο ιδιότητας, η μη τυποποιημένη τιμή και PropertyType
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool()Τυποποιημένοι πρόσβατες για την τιμή μιας ιδιότητας
PropertyTypeΑπαρίθμηση που περιγράφει τον τύπο τιμής ενός DocumentProperty
DocumentSecurityΑπαρίθμηση που περιγράφει την κατάσταση προστασίας ενός εγγράφου, μέσω BuiltInDocumentProperties.Security

Δείτε επίσης

 Ελληνικά