Informace o dokumentu
Informace o dokumentu
Tento průvodce ukazuje, jak číst a zapisovat metadata dokumentu pomocí Aspose.Words FOSS pro .NET. Každý načtený nebo nově vytvořený Document obsahuje dva typy metadat vedle svého obsahu: pevnou sadu vestavěných vlastností (autor, název, počet slov a podobně) a otevřenou sadu vlastních vlastností, které si můžete definovat sami. Aspose.Words FOSS pro .NET také implementuje pole Word, která zobrazují tato metadata uvnitř těla dokumentu — AUTHOR, COMMENTS a DOCPROPERTY — takže hodnoty vlastností se mohou objevit jako živý, aktualizovatelný text.
Vestavěné vlastnosti dokumentu
Document.BuiltInDocumentProperties vrací kolekci BuiltInDocumentProperties s jednou vlastností pro každé standardní pole metadata Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime a statistiky jako Pages, Words, Characters, CharactersWithSpaces, Paragraphs a Lines. Protože BuiltInDocumentProperties je odvozen od DocumentPropertyCollection, podporuje také vyhledávání podle názvu pomocí svého indexeru, Contains(), IndexOf() a enumeraci přes GetEnumerator(). Stejná kolekce je vystavena na PlainTextDocument.BuiltInDocumentProperties při práci s prostým textovým vstupem.
Vlastní vlastnosti dokumentu
Document.CustomDocumentProperties vrací kolekci CustomDocumentProperties pro vlastnosti, které aplikace definuje sama — libovolné páry název/hodnota, které Word ukládá vedle vestavěné sady. Přidejte vlastnost pomocí Add(name, value), který je přetížen napříč CustomDocumentProperties pro typy hodnot, které může vlastnost obsahovat; získáte ji podle názvu pomocí indexeru, např. properties[name]; a odstraňujete položky pomocí Remove(name), RemoveAt(index) nebo Clear(). AddLinkToContent(name, linkSource) vytvoří vlastnost, jejíž hodnota je spojena se záložkou nebo oblastí uvnitř dokumentu místo uložení jako pevná hodnota.
Každý záznam v kterékoliv kolekci — vestavěné nebo vlastní — je DocumentProperty, který vystavuje Name, Value a Type (hodnota PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray nebo Other), plus IsLinkToContent a LinkSource pro propojené vlastnosti. DocumentProperty poskytuje pomocné funkce pro konverzi, jako jsou ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() a ToByteArray() pro získání podkladové hodnoty v požadovaném typu .NET.
Pole informací o dokumentu
Tři podtřídy Field zpřístupňují metadata dokumentu jako pole uvnitř samotného těla dokumentu: FieldAuthor (pole AUTHOR s AuthorName vlastností), FieldComments (pole COMMENTS s Text vlastností), a FieldDocProperty (pole DOCPROPERTY, které načte pojmenovanou vlastnost dokumentu — vestavěnou nebo vlastní — do dokumentu). Stejně jako každé Field, tyto tři sdílejí základní životní cyklus Field: GetFieldCode() pro načtení podkladového kódu pole, Result / DisplayResult pro načtení poslední vypočtené hodnoty, Update() pro přepočet hodnoty, Unlink() pro nahrazení pole jeho statickým výsledkem a Remove() pro jeho smazání. Vložte pole s informacemi o dokumentu pomocí DocumentBuilder.InsertField(fieldCode) — například kód pole AUTHOR nebo DOCPROPERTY "Company" — nebo pomocí přetížení InsertField(fieldType, updateField) s hodnotou FieldType, jako je FieldType.FieldAuthor, FieldType.FieldComments nebo FieldType.FieldDocProperty.
Protože FieldDocProperty čte jakoukoli vlastnost dokumentu, ke které je svázáno, změna podkladové hodnoty BuiltInDocumentProperties nebo CustomDocumentProperties a následné volání Update() — nebo Document.UpdateFields() pro obnovení všech polí v dokumentu najednou — přenese novou hodnotu do zobrazeného výsledku pole.
Tipy a osvědčené postupy
- Nastavte vestavěné vlastnosti, jako jsou
Title,AuthoraSubject, před uložením — Word a další aplikace je čtou zBuiltInDocumentPropertiespro výpisy dokumentů a indexování vyhledávání. - Použijte
DocumentProperty.Typeke kontrolePropertyTypevlastnosti před voláním konkrétního konverzního pomocníka (ToInt(),ToDateTime()atd.), abyste se vyhnuli nesouladu konverze u vlastnosti, kterou jste nevytvořili sami. AddLinkToContent()udržuje vlastní vlastnost synchronizovanou s obsahem dokumentu (např. s oblastí označenou záložkou) místo pevné hodnoty — použijte ji, když má vlastnost vždy odrážet to, co je momentálně v dokumentu.- Zavolejte
Document.UpdateFields()po změně vlastností dokumentu, aby jakákoli poleFieldDocProperty,FieldAuthorneboFieldComments, která jsou již v těle dokumentu, převzala nové hodnoty. BuiltInDocumentPropertiesaCustomDocumentPropertiesjsou oba dostupné naPlainTextDocumenti naDocument, takže metadata se přenášejí i v případě, že načtený obsah je prostý text.
Časté problémy
| Problém | Příčina | Oprava |
|---|---|---|
Indexér vrací null pro vlastní vlastnost | Vlastnost ještě nebyla přidána | Nejprve zavolejte CustomDocumentProperties.Add(name, value) nebo před čtením zkontrolujte Contains(name) |
FieldDocProperty zobrazuje zastaralou hodnotu po změně vlastnosti | Pole nebylo aktualizováno | Zavolejte Update() na pole, nebo Document.UpdateFields() pro obnovení každého pole v dokumentu |
DocumentProperty.ToInt() / ToDateTime() vyhazuje | Skutečná Type vlastnosti neodpovídá požadované konverzi | Zkontrolujte DocumentProperty.Type před výběrem, který konverzní pomocník zavolat |
FAQ
Jaký je rozdíl mezi vestavěnými a vlastními vlastnostmi dokumentu?
Vestavěné vlastnosti (Document.BuiltInDocumentProperties) jsou pevná sada definovaná formátem OOXML — Author, Title, Pages a podobně. Vlastní vlastnosti (Document.CustomDocumentProperties) jsou otevřená, aplikací definovaná sada dvojic název/hodnota přidaná pomocí Add().
Jak mohu nastavit vlastní vlastnost tak, aby sledovala obsah dokumentu místo pevné hodnoty?
Použijte CustomDocumentProperties.AddLinkToContent(name, linkSource), který propojí hodnotu vlastnosti se záložkou nebo rozsahem v dokumentu místo uložení statické hodnoty.
Aktualizuje se při změně vlastnosti dokumentu automaticky i pole, která ji zobrazují?
Ne — volejte Update() na konkrétním poli nebo Document.UpdateFields() pro přepočítání každého pole v dokumentu, včetně výskytů FieldDocProperty, FieldAuthor a FieldComments.
Mohu číst vlastnosti dokumentu z prostého textového dokumentu?
Ano. PlainTextDocument poskytuje stejné BuiltInDocumentProperties a CustomDocumentProperties vlastnosti jako Document.
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
Document.BuiltInDocumentProperties | Standardní sbírka metadat OOXML (Author, Title, Pages, atd.) |
Document.CustomDocumentProperties | Kolekce vlastností název/hodnota definovaná aplikací |
CustomDocumentProperties.Add() / indexer podle názvu / AddLinkToContent() | Přidat, získat nebo vytvořit obsahový odkaz na vlastní vlastnost |
DocumentProperty | Jednotlivý vstup vlastnosti; Value, Type a ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() pomocníci převodu |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS a DOCPROPERTY pole; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Vloží pole pomocí kódu pole nebo FieldType |