Informații despre document
Informații despre document
Acest ghid arată cum să citiți și să scrieți metadatele documentului cu Aspose.Words FOSS pentru .NET. Fiecare Document încărcat sau creat recent conține două tipuri de metadate alături de conținutul său: un set fix de proprietăți încorporate (autor, titlu, număr de cuvinte și altele similare) și un set deschis de proprietăți personalizate pe care le definiți voi înșivă. Aspose.Words FOSS pentru .NET implementează, de asemenea, câmpurile Word care expun aceste metadate în corpul documentului — AUTHOR, COMMENTS și DOCPROPERTY — astfel încât valorile proprietăților pot apărea ca text viu, actualizabil.
Proprietăți încorporate ale documentului
Document.BuiltInDocumentProperties returnează o colecție BuiltInDocumentProperties cu o proprietate pentru fiecare câmp standard de metadate Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime și statistici precum Pages, Words, Characters, CharactersWithSpaces, Paragraphs și Lines. Deoarece BuiltInDocumentProperties derivă din DocumentPropertyCollection, suportă, de asemenea, căutarea după nume prin indexatorul său, Contains(), IndexOf(), și enumerarea prin GetEnumerator(). Aceeași colecție este expusă pe PlainTextDocument.BuiltInDocumentProperties când se lucrează cu intrare text simplu.
Proprietăți personalizate ale documentului
Document.CustomDocumentProperties returnează o colecție CustomDocumentProperties pentru proprietăți pe care o aplicație le definește singură — perechi arbitrare nume/valoare pe care Word le stochează alături de setul încorporat. Adăugați o proprietate cu Add(name, value), care este supraîncărcată pe parcursul CustomDocumentProperties pentru tipurile de valori pe care o proprietate le poate conține; recuperați una după nume cu indexatorul, de ex. properties[name]; și eliminați intrările cu Remove(name), RemoveAt(index) sau Clear(). AddLinkToContent(name, linkSource) creează o proprietate a cărei valoare este legată de un semn de carte sau de un interval din document, în loc să fie stocată ca o valoare fixă.
Fiecare intrare în oricare dintre colecții — încorporată sau personalizată — este un DocumentProperty, care expune Name, Value și Type (o valoare PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray sau Other), plus IsLinkToContent și LinkSource pentru proprietăți legate. DocumentProperty furnizează ajutoare de conversie precum ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() și ToByteArray() pentru a recupera valoarea de bază în tipul .NET dorit.
Câmpuri de informații despre document
Trei subclase Field expun metadatele documentului ca și câmpuri în corpul documentului: FieldAuthor (câmpul AUTHOR, cu o proprietate AuthorName), FieldComments (câmpul COMMENTS, cu o proprietate Text), și FieldDocProperty (câmpul DOCPROPERTY, care citește o proprietate de document numită — încorporată sau personalizată — în document). Ca orice Field, aceste trei împărtășesc ciclul de viață de bază Field: GetFieldCode() pentru a citi codul câmpului de bază, Result / DisplayResult pentru a citi ultima valoare calculată, Update() pentru a recalcula valoarea, Unlink() pentru a înlocui câmpul cu rezultatul său static și Remove() pentru a-l șterge. Inserează un câmp de informații despre document cu DocumentBuilder.InsertField(fieldCode) — de exemplu un cod de câmp AUTHOR sau DOCPROPERTY "Company" — sau cu suprasarcina InsertField(fieldType, updateField) utilizând o valoare FieldType precum FieldType.FieldAuthor, FieldType.FieldComments sau FieldType.FieldDocProperty.
Deoarece FieldDocProperty citește orice proprietate de document la care este legat, schimbarea valorii de bază BuiltInDocumentProperties sau CustomDocumentProperties și apoi apelarea Update() — sau Document.UpdateFields() pentru a reîmprospăta toate câmpurile din document simultan — propagă noua valoare în rezultatul afișat al câmpului.
Sfaturi și bune practici
- Definește proprietățile încorporate, cum ar fi
Title,AuthorșiSubject, înainte de a salva — Word și alți consumatori le citesc dinBuiltInDocumentPropertiespentru listările de documente și indexarea în căutare. - Folosește
DocumentProperty.Typepentru a verificaPropertyTypeal unei proprietăți înainte de a apela un ajutor de conversie specific (ToInt(),ToDateTime(), etc.) pentru a evita o nepotrivire de conversie pe o proprietate pe care nu ai creat-o tu. AddLinkToContent()menține o proprietate personalizată sincronizată cu conținutul documentului (cum ar fi o zonă marcată) în loc de o valoare fixă — folosește-l când proprietatea ar trebui să reflecte întotdeauna ceea ce se află în prezent în document.- Apelează
Document.UpdateFields()după ce ai modificat proprietățile documentului, astfel încât orice câmpuriFieldDocProperty,FieldAuthorsauFieldCommentsdeja prezente în corpul documentului să preia noile valori. BuiltInDocumentPropertiesșiCustomDocumentPropertiessunt ambele disponibile pePlainTextDocumentprecum și peDocument, astfel că metadatele circulă înapoi chiar și când conținutul încărcat este text simplu.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
Indexatorul returnează null pentru o proprietate personalizată | Proprietatea nu a fost adăugată încă | Apelă CustomDocumentProperties.Add(name, value) mai întâi, sau verifică Contains(name) înainte de a citi |
FieldDocProperty afișează o valoare învechită după modificarea unei proprietăți | Câmpul nu a fost actualizat | Apelă Update() pe câmp, sau Document.UpdateFields() pentru a reîmprospăta fiecare câmp din document |
DocumentProperty.ToInt() / ToDateTime() aruncă | Valoarea efectivă a proprietății Type nu corespunde conversiei solicitate | Verifică DocumentProperty.Type înainte de a alege ce ajutor de conversie să apelezi |
FAQ
Care este diferența dintre proprietățile documentului încorporate și cele personalizate?
Proprietățile încorporate (Document.BuiltInDocumentProperties) sunt un set fix definit de formatul OOXML — Author, Title, Pages și altele similare. Proprietățile personalizate (Document.CustomDocumentProperties) sunt un set deschis, definit de aplicație, de perechi nume/valoare adăugate cu Add().
Cum pot face ca o proprietate personalizată să urmărească conținutul documentului în loc de o valoare fixă?
Folosește CustomDocumentProperties.AddLinkToContent(name, linkSource), care leagă valoarea proprietății de un semn de carte sau de un interval din document, în loc să stocheze o valoare statică.
Actualizarea unei proprietăți a documentului actualizează automat câmpurile care o afișează?
Nu — apelează Update() pe câmpul specific sau Document.UpdateFields() pentru a recalcula fiecare câmp din document, inclusiv instanțele FieldDocProperty, FieldAuthor și FieldComments.
Pot citi proprietățile documentului dintr-un document text simplu?
Da. PlainTextDocument expune aceleași proprietăți BuiltInDocumentProperties și CustomDocumentProperties ca Document.
API Reference Rezumat
| Clasă / Metodă | Descriere: |
|---|---|
Document.BuiltInDocumentProperties | Colecție standard de metadate OOXML (Author, Title, Pages, etc.) |
Document.CustomDocumentProperties | Colecție de proprietăţi nume/valoare definită de aplicație |
CustomDocumentProperties.Add() / indexator prin nume / AddLinkToContent() | Adăugaţi, recuperaţi sau creaţi o legătură de conţinut pentru o proprietate personalizată |
DocumentProperty | Intrare de proprietate unică; Value, Type, şi ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() asistenţi de conversie |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS, și DOCPROPERTY câmpuri; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Inserează un câmp prin codul de câmp sau FieldType |