Πληροφορίες Εγγράφου
Πληροφορίες εγγράφου
Αυτός ο οδηγός δείχνει πώς να διαβάζετε και να γράφετε μεταδεδομένα εγγράφου με Aspose.Words FOSS για .NET. Κάθε φορτωμένο ή νεοδημιουργημένο Document περιέχει δύο είδη μεταδεδομένων μαζί με το περιεχόμενό του: ένα σταθερό σύνολο ενσωματωμένων ιδιοτήτων (συγγραφέας, τίτλος, αριθμός λέξεων και παρόμοια) και ένα ανοικτό σύνολο προσαρμοσμένων ιδιοτήτων που ορίζετε εσείς. Aspose.Words FOSS για .NET επίσης υλοποιεί τα πεδία Word που προβάλουν αυτά τα μεταδεδομένα μέσα στο σώμα του εγγράφου — AUTHOR, COMMENTS και DOCPROPERTY — ώστε οι τιμές των ιδιοτήτων να μπορούν να εμφανίζονται ως ζωντανό, ενημερώσιμο κείμενο.
Ενσωματωμένες ιδιότητες εγγράφου
Document.BuiltInDocumentProperties επιστρέφει μια συλλογή BuiltInDocumentProperties με μία ιδιότητα για κάθε τυπικό πεδίο μεταδεδομένων Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime, και στατιστικά όπως Pages, Words, Characters, CharactersWithSpaces, Paragraphs, και Lines. Επειδή το BuiltInDocumentProperties προέρχεται από το DocumentPropertyCollection, υποστηρίζει επίσης αναζήτηση με όνομα μέσω του ευρετηρίου του, Contains(), IndexOf(), και απαρίθμηση μέσω του GetEnumerator(). Η ίδια συλλογή εκτίθεται στο PlainTextDocument.BuiltInDocumentProperties όταν εργάζεστε με εισαγωγή απλού κειμένου.
Προσαρμοσμένες ιδιότητες εγγράφου
Document.CustomDocumentProperties επιστρέφει μια συλλογή CustomDocumentProperties για ιδιότητες που ορίζεται η ίδια η εφαρμογή — αυθαίρετα ζεύγη ονομαστικού/τιμής που το Word αποθηκεύει μαζί με το ενσωματωμένο σύνολο. Προσθέστε μια ιδιότητα με το Add(name, value), που είναι υπερφορτωμένο μέσω CustomDocumentProperties για τους τύπους τιμών που μπορεί να κρατήσει μια ιδιότητα· ανακτήστε μία με βάση το όνομα μέσω του ευρετηρίου, π.χ. properties[name]; και αφαιρέστε εγγραφές με Remove(name), RemoveAt(index) ή Clear(). Το AddLinkToContent(name, linkSource) δημιουργεί μια ιδιότητα της οποίας η τιμή είναι συνδεδεμένη με σελιδοδείκτη ή περιοχή μέσα στο έγγραφο αντί να αποθηκεύεται ως σταθερή τιμή.
Κάθε καταχώρηση σε οποιαδήποτε συλλογή — ενσωματωμένη ή προσαρμοσμένη — είναι ένα DocumentProperty, το οποίο εκθέτει Name, Value και Type (μια τιμή PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray ή Other), καθώς και IsLinkToContent και LinkSource για συνδεδεμένες ιδιότητες. Το DocumentProperty παρέχει βοηθητικά εργαλεία μετατροπής όπως ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() και ToByteArray() για την ανάκτηση της υποκείμενης τιμής στον επιθυμητό τύπο .NET.
Πεδία Πληροφοριών Εγγράφου
Τρία Field υποκατηγορίες εκθέτουν μεταδεδομένα εγγράφου ως πεδία μέσα στο ίδιο σώμα του εγγράφου: FieldAuthor (το πεδίο AUTHOR, με ιδιότητα AuthorName), FieldComments (το πεδίο COMMENTS, με ιδιότητα Text), και FieldDocProperty (το πεδίο DOCPROPERTY, το οποίο διαβάζει μια ονομαστική ιδιότητα εγγράφου — ενσωματωμένη ή προσαρμοσμένη — στο έγγραφο). Όπως κάθε Field, αυτά τα τρία μοιράζονται τον βασικό κύκλο ζωής Field: GetFieldCode() για ανάγνωση του υποκείμενου κώδικα πεδίου, Result / DisplayResult για ανάγνωση της τελευταίας υπολογισμένης τιμής, Update() για επαναϋπολογισμό της τιμής, Unlink() για αντικατάσταση του πεδίου με το στατικό του αποτέλεσμα, και Remove() για διαγραφή του. Εισάγετε ένα πεδίο πληροφοριών εγγράφου με DocumentBuilder.InsertField(fieldCode) — για παράδειγμα έναν κώδικα πεδίου AUTHOR ή DOCPROPERTY "Company" — ή με την υπερφόρτωση InsertField(fieldType, updateField) χρησιμοποιώντας μια τιμή FieldType όπως FieldType.FieldAuthor, FieldType.FieldComments, ή FieldType.FieldDocProperty.
Επειδή το FieldDocProperty διαβάζει οποιαδήποτε ιδιότητα εγγράφου είναι δεσμευμένο, η αλλαγή της υποκείμενης τιμής BuiltInDocumentProperties ή CustomDocumentProperties και στη συνέχεια η κλήση του Update() — ή του Document.UpdateFields() για να ανανεώσετε κάθε πεδίο στο έγγραφο μονομιάς — μεταβιβάζει τη νέα τιμή στο εμφανιζόμενο αποτέλεσμα του πεδίου.
Συμβουλές και Καλές Πρακτικές
- Ορίστε ενσωματωμένες ιδιότητες όπως
Title,AuthorκαιSubjectπριν από την αποθήκευση — το Word και άλλοι καταναλωτές τις διαβάζουν από τοBuiltInDocumentPropertiesγια καταχωρίσεις εγγράφων και ευρετηρίαση αναζήτησης. - Χρησιμοποιήστε το
DocumentProperty.Typeγια να ελέγξετε τοPropertyTypeμιας ιδιότητας πριν καλέσετε έναν συγκεκριμένο βοηθό μετατροπής (ToInt(),ToDateTime(), κ.λπ.) ώστε να αποφύγετε μια ασυμφωνία μετατροπής σε ιδιότητα που δεν δημιουργήσατε εσείς. - Το
AddLinkToContent()διατηρεί μια προσαρμοσμένη ιδιότητα συγχρονισμένη με το περιεχόμενο του εγγράφου (όπως μια περιορισμένη περιοχή με σελιδοδείκτη) αντί για μια σταθερή τιμή — χρησιμοποιήστε το όταν η ιδιότητα πρέπει πάντα να αντανακλά το τρέχον περιεχόμενο του εγγράφου. - Καλέστε το
Document.UpdateFields()μετά την αλλαγή των ιδιοτήτων του εγγράφου ώστε τυχόν πεδίαFieldDocProperty,FieldAuthorήFieldCommentsπου ήδη βρίσκονται στο σώμα του εγγράφου να υιοθετήσουν τις νέες τιμές. BuiltInDocumentPropertiesκαιCustomDocumentPropertiesείναι και τα δύο διαθέσιμα στοPlainTextDocumentκαθώς και στοDocument, έτσι τα μεταδεδομένα μεταφέρονται ακόμη και όταν το φορτωμένο περιεχόμενο είναι απλό κείμενο.
Συνηθισμένα προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
Ο ευρετηριαστής επιστρέφει null για μια προσαρμοσμένη ιδιότητα | Η ιδιότητα δεν έχει προστεθεί ακόμη | Καλέστε πρώτα το CustomDocumentProperties.Add(name, value), ή ελέγξτε το Contains(name) πριν από την ανάγνωση |
FieldDocProperty εμφανίζει μια παλιά τιμή μετά την αλλαγή μιας ιδιότητας | Το πεδίο δεν ανανεώθηκε | Καλέστε το Update() στο πεδίο, ή το Document.UpdateFields() για να ανανεώσετε κάθε πεδίο στο έγγραφο |
DocumentProperty.ToInt() / ToDateTime() ρίχνει | Η πραγματική Type της ιδιότητας δεν ταιριάζει με τη ζητούμενη μετατροπή | Ελέγξτε το DocumentProperty.Type πριν επιλέξετε ποιον βοηθό μετατροπής να καλέσετε |
FAQ
Ποια είναι η διαφορά μεταξύ ενσωματωμένων και προσαρμοσμένων ιδιοτήτων εγγράφου;
Οι ενσωματωμένες ιδιότητες (Document.BuiltInDocumentProperties) είναι ένα σταθερό σύνολο που ορίζεται από τη μορφή OOXML — Author, Title, Pages, και παρόμοια. Οι προσαρμοσμένες ιδιότητες (Document.CustomDocumentProperties) είναι ένα ανοιχτό, από την εφαρμογή καθορισμένο σύνολο ζευγών όνομα/τιμή που προστίθενται με Add().
Πώς μπορώ να κάνω μια προσαρμοσμένη ιδιότητα να παρακολουθεί το περιεχόμενο του εγγράφου αντί για μια σταθερή τιμή;
Χρησιμοποιήστε το CustomDocumentProperties.AddLinkToContent(name, linkSource), το οποίο συνδέει την τιμή της ιδιότητας με ένα σελιδοδείκτη ή μια περιοχή στο έγγραφο αντί να αποθηκεύει μια στατική τιμή.
Ενημερώνει η ενημέρωση μιας ιδιότητας εγγράφου αυτόματα τα πεδία που την εμφανίζουν;
Όχι — καλέστε το Update() στο συγκεκριμένο πεδίο ή το Document.UpdateFields() για να επανυπολογίσετε κάθε πεδίο στο έγγραφο, συμπεριλαμβανομένων των FieldDocProperty, FieldAuthor και FieldComments παραδειγμάτων.
Μπορώ να διαβάσω τις ιδιότητες του εγγράφου από ένα αρχείο απλού κειμένου;
Ναι. Το PlainTextDocument εκθέτει τις ίδιες BuiltInDocumentProperties και CustomDocumentProperties ιδιότητες όπως το Document.
API Reference Σύνοψη
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
Document.BuiltInDocumentProperties | Τυπική συλλογή μεταδεδομένων OOXML (Author, Title, Pages, κ.λπ.) |
Document.CustomDocumentProperties | Συλλογή ιδιοτήτων ονομα/τιμή που ορίζεται από την εφαρμογή |
CustomDocumentProperties.Add() / δείκτης κατά όνομα / AddLinkToContent() | Προσθήκη, ανάκτηση ή σύνδεση περιεχομένου μιας προσαρμοσμένης ιδιότητας |
DocumentProperty | Μοναδική καταχώρηση ιδιότητας· Value, Type, και ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() βοηθητικά προγράμματα μετατροπής |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS και DOCPROPERTY πεδία· Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Εισάγει ένα πεδίο με κώδικα πεδίου ή FieldType |