Informacje o dokumencie

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, Author i Subject, przed zapisaniem — Word i inne aplikacje odczytują je z BuiltInDocumentProperties w celu tworzenia list dokumentów i indeksowania wyszukiwania.
  • Użyj DocumentProperty.Type, aby sprawdzić PropertyType wł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 pola FieldDocProperty, FieldAuthor lub FieldComments już znajdujące się w ciele dokumentu pobrały nowe wartości.
  • BuiltInDocumentProperties i CustomDocumentProperties są dostępne zarówno w PlainTextDocument, jak i w Document, więc metadane są przekazywane dalej nawet gdy wczytana zawartość jest zwykłym tekstem.

Typowe problemy

ProblemPrzyczynaRozwiązanie
Indeksator zwraca null dla niestandardowej właściwościWłaściwość nie została jeszcze dodanaWywołaj CustomDocumentProperties.Add(name, value) najpierw, albo sprawdź Contains(name) przed odczytem
FieldDocProperty wyświetla przestarzałą wartość po zmianie właściwościPole nie zostało odświeżoneWywołaj Update() na polu, lub Document.UpdateFields(), aby odświeżyć wszystkie pola w dokumencie
DocumentProperty.ToInt() / ToDateTime() rzucaRzeczywisty Type właściwości nie pasuje do żądanej konwersjiSprawdź 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 / MetodaOpis
Document.BuiltInDocumentPropertiesStandardowa kolekcja metadanych OOXML (Author, Title, Pages, itp.)
Document.CustomDocumentPropertiesKolekcja 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ą
DocumentPropertyPojedynczy wpis własności; Value, Type, i ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() pomocnicze funkcje konwersji
FieldAuthor / FieldComments / FieldDocPropertyAUTHOR, COMMENTS i DOCPROPERTY pola; Update(), Result, GetFieldCode()
DocumentBuilder.InsertField()Wstawia pole za pomocą kodu pola lub FieldType

Zobacz także

 Polski