Πώς να εργαστείτε με τις ιδιότητες εγγράφου στο .NET

Πώς να εργαστείτε με τις ιδιότητες εγγράφου στο .NET

Πώς να εργάζεστε με τις ιδιότητες εγγράφου στο .NET

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


Οδηγός βήμα-βήμα

Βήμα 1: Διαβάστε και ορίστε τις ενσωματωμένες ιδιότητες εγγράφου

Document.BuiltInDocumentProperties επιστρέφει μια συλλογή BuiltInDocumentProperties. Δεδομένου ότι πρόκειται για ένα σταθερό, γνωστό σύνολο ιδιοτήτων, οι τιμές διαβάζονται και γράφονται ως συνηθισμένα μέλη αντί να αναζητούνται με όνομα — για παράδειγμα BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords και .Comments για πεδία περιγραφής, ή .CreatedTime, .LastSavedTime, .LastPrinted και .LastSavedBy για χρονικές σημάνσεις. Στατιστικά όπως .Characters, .CharactersWithSpaces, .Lines και .Bytes εκτίθενται επίσης με αυτόν τον τρόπο, μαζί με .Template και .HyperlinkBase.


Βήμα 2: Προσθήκη προσαρμοσμένης ιδιότητας εγγράφου

Document.CustomDocumentProperties επιστρέφει μια CustomDocumentProperties συλλογή για μεταδεδομένα που ορίζονται από την εφαρμογή και δεν αποτελούν μέρος του ενσωματωμένου συνόλου του Word. Καλέστε μία από τις Add(name, value) υπερφορτώσεις με ένα όνομα και μια τυποποιημένη τιμή — string, number, boolean, ή date, ανάλογα με το ποια υπερφόρτωση ταιριάζει με τον τύπο της τιμής — για να δημιουργήσετε μια νέα ιδιότητα.


Βήμα 3: Σύνδεση προσαρμοσμένης ιδιότητας με το περιεχόμενο του εγγράφου

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


Βήμα 4: Αναζήτηση, Έλεγχος και Αφαίρεση Ιδιοτήτων

Τόσο BuiltInDocumentProperties όσο και CustomDocumentProperties προέρχονται από την αφηρημένη DocumentPropertyCollection, έτσι ελέγχονται με τον ίδιο τρόπο: η πρόσβαση με βάση το όνομα (π.χ. properties[name]) ανακτά μια ιδιότητα, το Contains(name) ελέγχει αν υπάρχει, το IndexOf(name) επιστρέφει τη θέση της και το Count αναφέρει πόσες ιδιότητες περιέχει η συλλογή. Καλέστε το Contains(name) πριν την πρόσβαση με βάση το όνομα όταν μια προσαρμοσμένη ιδιότητα μπορεί να μην υπάρχει, ώστε να αποφύγετε τη διαχείριση μιας ελλιπούς ιδιότητας ως διαδρομή εξαίρεσης. Αφαιρέστε μια ιδιότητα με το Remove(name) ή το RemoveAt(index), ή διαγράψτε όλες τις ιδιότητες στη συλλογή με το Clear().


Βήμα 5: Ανάγνωση της τιμής μιας προσαρμοσμένης ιδιότητας χωρίς να γνωρίζετε εκ των προτέρων τον τύπο της

Ένα DocumentProperty διαθέτει ένα Name, ένα μη τυποποιημένο Value και ένα Type — μια τιμή enum PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray ή Other. Επειδή το Value είναι μη τυποποιημένο, χρησιμοποιήστε το αντίστοιχο τυποποιημένο accessor αντί για άμεση μετατροπή: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() ή ToString(). Ελέγξτε τα IsLinkToContent και LinkSource για να διαπιστώσετε εάν μια ιδιότητα είναι συνδεδεμένη με το περιεχόμενο του εγγράφου (δείτε το Step 3) αντί να περιέχει στατική τιμή.


Βήμα 6: Έλεγχος της κατάστασης προστασίας ενός εγγράφου

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


Κοινά Προβλήματα και Λύσεις

Δεικτοποίηση ενός CustomDocumentProperties η συλλογή με όνομα δεν επιστρέφει κάτι χρήσιμο. Η ιδιότητα δεν υπάρχει σε αυτό το έγγραφο. Κλήση Contains(name) πρώτα, ή προσθέστε την ιδιότητα με το κατάλληλο Add(name, value) υπερφόρτωση.

Η ανάγνωση της τιμής μιας προσαρμοσμένης ιδιότητας δίνει λάθος τύπο. DocumentProperty.Value είναι χωρίς τύπο object; ο καλών υποθέτει έναν τύπο που δεν ταιριάζει Type. Χρησιμοποιήστε την αντίστοιχη typed accessor (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) βάσει DocumentProperty.Type.

Η τιμή μιας συνδεδεμένης προσαρμοσμένης ιδιότητας φαίνεται παλιά. Η ιδιότητα είναι συνδεδεμένη μέσω AddLinkToContent, και το σελιδοσημασμένο περιεχόμενο άλλαξε. Επιβεβαιώστε το linkSource σελιδοδείκτη εξακολουθεί να σημειώνει το εύρος που πρέπει να τροφοδοτήσει την τιμή της ιδιότητας.

Στατιστικά λέξεων όπως Characters or Lines δεν ταιριάζουν με το πραγματικό τρέχον περιεχόμενο του εγγράφου. Οι ενσωματωμένες στατιστικές αντικατοπτρίζουν τα αποθηκευμένα μεταδεδομένα, όχι μια ζωντανή επαναμέτρηση. Επαναϋπολογίστε και ενημερώστε τα σχετικά BuiltInDocumentProperties τιμές εάν απαιτείται μια ενημερωμένη καταμέτρηση.


Συχνές Ερωτήσεις

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

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

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

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

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

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

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

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

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

Διαβάστε Document.BuiltInDocumentProperties.Security, μια τιμή DocumentSecurity; PasswordProtected υποδεικνύει ότι τα αποθηκευμένα μεταδεδομένα του εγγράφου δηλώνουν προστασία με κωδικό πρόσβασης.


Δείτε επίσης

 Ελληνικά