Informații despre document

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 și Subject, înainte de a salva — Word și alți consumatori le citesc din BuiltInDocumentProperties pentru listările de documente și indexarea în căutare.
  • Folosește DocumentProperty.Type pentru a verifica PropertyType al 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âmpuri FieldDocProperty, FieldAuthor sau FieldComments deja prezente în corpul documentului să preia noile valori.
  • BuiltInDocumentProperties și CustomDocumentProperties sunt ambele disponibile pe PlainTextDocument precum și pe Document, 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ățiCâmpul nu a fost actualizatApelă 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 solicitateVerifică 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.BuiltInDocumentPropertiesColecție standard de metadate OOXML (Author, Title, Pages, etc.)
Document.CustomDocumentPropertiesColecț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ă
DocumentPropertyIntrare de proprietate unică; Value, Type, şi ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() asistenţi de conversie
FieldAuthor / FieldComments / FieldDocPropertyAUTHOR, COMMENTS, și DOCPROPERTY câmpuri; Update(), Result, GetFieldCode()
DocumentBuilder.InsertField()Inserează un câmp prin codul de câmp sau FieldType

Vezi și:

 Română