Informacje o dokumencie
Informacje o dokumencie
Ten przewodnik pokazuje, jak odczytywać i zapisywać metadane dokumentu przy użyciu Aspose.Words FOSS dla .NET. Każdy załadowany lub nowo utworzony Document zawiera dwa rodzaje metadanych wraz ze swoją treścią: stały zestaw wbudowanych właściwości (autor, tytuł, liczba słów i podobne) oraz otwarty zestaw własnych właściwości definiowanych przez Ciebie. Aspose.Words FOSS dla .NET implementuje także pola Word, które udostępniają te metadane w treści dokumentu — AUTHOR, COMMENTS i DOCPROPERTY — tak aby wartości właściwości mogły pojawiać się jako dynamiczny, aktualizowany tekst.
Wbudowane właściwości dokumentu
Document.BuiltInDocumentProperties zwraca kolekcję BuiltInDocumentProperties z jedną właściwością dla każdego standardowego pola metadanych Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime oraz statystyk, takich jak Pages, Words, Characters, CharactersWithSpaces, Paragraphs i Lines. Ponieważ BuiltInDocumentProperties dziedziczy po DocumentPropertyCollection, obsługuje również wyszukiwanie po nazwie za pomocą swojego indeksatora, Contains(), IndexOf() oraz enumerację poprzez GetEnumerator(). Ta sama kolekcja jest udostępniana w PlainTextDocument.BuiltInDocumentProperties przy pracy z tekstem zwykłym.
Własne właściwości dokumentu
Document.CustomDocumentProperties zwraca kolekcję CustomDocumentProperties dla właściwości definiowanych przez aplikację — dowolne pary nazwa/wartość, które Word przechowuje obok zestawu wbudowanego. Dodaj właściwość za pomocą Add(name, value), który jest przeciążony w CustomDocumentProperties dla typów wartości, jakie może przechowywać właściwość; odczytaj ją po nazwie przy użyciu indeksatora, np. properties[name]; oraz usuń wpisy za pomocą Remove(name), RemoveAt(index) lub Clear(). AddLinkToContent(name, linkSource) tworzy właściwość, której wartość jest powiązana z zakładką lub zakresem w dokumencie, a nie przechowywana jako stała wartość.
Każdy wpis w którejkolwiek kolekcji — wbudowanej lub własnej — jest DocumentProperty, który udostępnia Name, Value i Type (wartość PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray lub Other), a także IsLinkToContent i LinkSource dla właściwości powiązanych. DocumentProperty zapewnia pomocnicze funkcje konwersji, takie jak ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() i ToByteArray(), umożliwiające pobranie wartości podstawowej w żądanym typie .NET.
Pola informacji o dokumencie
Trzy podklasy Field udostępniają metadane dokumentu jako pola wewnątrz samego ciała dokumentu: FieldAuthor (pole AUTHOR z właściwością AuthorName), FieldComments (pole COMMENTS z właściwością Text), oraz FieldDocProperty (pole DOCPROPERTY, które odczytuje nazwane własności dokumentu — wbudowane lub niestandardowe — do dokumentu). Podobnie jak każde Field, te trzy dzielą podstawowy cykl życia Field: GetFieldCode() w celu odczytania kodu pola, Result / DisplayResult w celu odczytania ostatniej obliczonej wartości, Update() w celu ponownego obliczenia wartości, Unlink() w celu zastąpienia pola jego statycznym wynikiem oraz Remove() w celu usunięcia go. Wstaw pole informacji o dokumencie za pomocą DocumentBuilder.InsertField(fieldCode) — na przykład kod pola AUTHOR lub DOCPROPERTY "Company" — lub z przeciążeniem InsertField(fieldType, updateField) używając wartości FieldType, takiej jak FieldType.FieldAuthor, FieldType.FieldComments lub FieldType.FieldDocProperty.
Ponieważ FieldDocProperty odczytuje dowolną własność dokumentu, do której jest powiązany, zmiana bazowej wartości BuiltInDocumentProperties lub CustomDocumentProperties oraz następne wywołanie Update() — lub Document.UpdateFields(), aby odświeżyć wszystkie pola w dokumencie jednocześnie — powoduje propagację nowej wartości do wyświetlanego wyniku pola.
Wskazówki i najlepsze praktyki
- Ustaw wbudowane własności, takie jak
Title,AuthoriSubject, przed zapisaniem — Word i inne aplikacje odczytują je zBuiltInDocumentPropertiesw celu tworzenia list dokumentów i indeksowania wyszukiwania. - Użyj
DocumentProperty.Type, aby sprawdzićPropertyTypewłasności przed wywołaniem konkretnego pomocnika konwersji (ToInt(),ToDateTime()itp.), aby uniknąć niezgodności konwersji w własności, której nie utworzyłeś samodzielnie. AddLinkToContent()utrzymuje niestandardową własność zsynchronizowaną z treścią dokumentu (np. zakresem oznaczonym zakładką) zamiast stałej wartości — użyj go, gdy własność powinna zawsze odzwierciedlać aktualny stan dokumentu.- Wywołaj
Document.UpdateFields()po zmianie własności dokumentu, aby wszystkie polaFieldDocProperty,FieldAuthorlubFieldCommentsjuż znajdujące się w ciele dokumentu pobrały nowe wartości. BuiltInDocumentPropertiesiCustomDocumentPropertiessą dostępne zarówno wPlainTextDocument, jak i wDocument, więc metadane są przekazywane dalej nawet gdy wczytana zawartość jest zwykłym tekstem.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
Indeksator zwraca null dla niestandardowej właściwości | Właściwość nie została jeszcze dodana | Wywołaj CustomDocumentProperties.Add(name, value) najpierw, albo sprawdź Contains(name) przed odczytem |
FieldDocProperty wyświetla przestarzałą wartość po zmianie właściwości | Pole nie zostało odświeżone | Wywołaj Update() na polu, lub Document.UpdateFields(), aby odświeżyć wszystkie pola w dokumencie |
DocumentProperty.ToInt() / ToDateTime() rzuca | Rzeczywisty Type właściwości nie pasuje do żądanej konwersji | Sprawdź DocumentProperty.Type przed wybraniem, którego pomocnika konwersji wywołać |
FAQ
Jaka jest różnica między wbudowanymi a własnymi właściwościami dokumentu?
Wbudowane właściwości (Document.BuiltInDocumentProperties) to stały zestaw zdefiniowany przez format OOXML — Author, Title, Pages i podobne. Własne właściwości (Document.CustomDocumentProperties) to otwarty, definiowany przez aplikację zestaw par nazwa/wartość dodany przy użyciu Add().
Jak sprawić, aby własna właściwość śledziła zawartość dokumentu zamiast stałej wartości?
Użyj CustomDocumentProperties.AddLinkToContent(name, linkSource), które łączy wartość właściwości z zakładką lub zakresem w dokumencie, zamiast przechowywać statyczną wartość.
Czy aktualizacja właściwości dokumentu automatycznie aktualizuje pola, które ją wyświetlają?
Nie — wywołaj Update() na konkretnym polu lub Document.UpdateFields(), aby przeliczyć każde pole w dokumencie, w tym FieldDocProperty, FieldAuthor i FieldComments instances.
Czy mogę odczytać właściwości dokumentu z dokumentu tekstowego?
Tak. PlainTextDocument udostępnia te same BuiltInDocumentProperties i CustomDocumentProperties properties as Document.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
Document.BuiltInDocumentProperties | Standardowa kolekcja metadanych OOXML (Author, Title, Pages, itp.) |
Document.CustomDocumentProperties | Kolekcja własności nazwa/wartość zdefiniowana przez aplikację |
CustomDocumentProperties.Add() / indeksator według nazwy / AddLinkToContent() | Dodaj, pobierz lub połącz treścią własność niestandardową |
DocumentProperty | Pojedynczy wpis własności; Value, Type, i ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() pomocnicze funkcje konwersji |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS i DOCPROPERTY pola; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Wstawia pole za pomocą kodu pola lub FieldType |