Práce s vlastnostmi dokumentu
Práce s vlastnostmi dokumentu
Tento průvodce ukazuje, jak číst a spravovat metadata dokumentu Word — vlastnosti viditelné v panelu Informace/Vlastnosti ve Wordu, plus jakékoli uživatelem definované vlastní hodnoty. Document.BuiltInDocumentProperties a Document.CustomDocumentProperties odhalují tyto dvě kategorie, které jsou nakonec postaveny na stejném podkladovém DocumentProperty reprezentaci.
Vestavěné vlastnosti dokumentu
Document.BuiltInDocumentProperties vrací kolekci BuiltInDocumentProperties, která zahrnuje standardní metadata, která Word sleduje pro každý dokument: popisná pole jako Title, Subject, Author, Manager, Company, Category, Keywords a Comments; časová razítka jako CreatedTime, LastSavedTime a LastPrinted, spolu s LastSavedBy a RevisionNumber; a statistiky jako Words, Characters, CharactersWithSpaces, Lines, Paragraphs a Pages. Security udává stav ochrany dokumentu jako hodnotu DocumentSecurity, a Template, NameOfApplication a TotalEditingTime popisují prostředí tvorby. Protože BuiltInDocumentProperties je pevná, známá sada vlastností, jednotlivé hodnoty se čtou a zapisují jako běžné vlastnosti (BuiltInDocumentProperties.Author = "...") místo toho, aby se vyhledávaly podle názvu.
Vlastní vlastnosti dokumentu
Document.CustomDocumentProperties vrací kolekci CustomDocumentProperties pro aplikací definovaná metadata, která nejsou součástí vestavěné sady Wordu. Několik přetížení Add(name, value) vytvoří novou vlastnost ze jména a typované hodnoty (řetězec, číslo, boolean nebo datum, podle přetížení) a AddLinkToContent(name, linkSource) vytvoří vlastnost, jejíž hodnota je propojena a sleduje záložkovaný rozsah obsahu v dokumentu místo statické hodnoty. Indexování podle jména (např. properties[name]) a Contains(name) vyhledají vlastnost, IndexOf(name) vrací její pozici a Remove(name)/RemoveAt(index) ji smažou.
Objekt DocumentProperty a základ sdílené kolekce
Obě BuiltInDocumentProperties i CustomDocumentProperties vycházejí z abstraktního DocumentPropertyCollection, který definuje indexér podle názvu, GetEnumerator(), Contains(name), IndexOf(name) a Count — takže obě kolekce jsou prohlíženy stejným způsobem, i když vestavěné vlastnosti jsou pevně dané a vlastní vlastnosti jsou otevřené. Individuálně má DocumentProperty Name, netypovaný Value a Type (hodnota výčtu PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray nebo Other). IsLinkToContent a LinkSource uvádějí, zda je vlastnost propojena s obsahem dokumentu místo toho, aby držela statickou hodnotu (viz AddLinkToContent výše). Protože Value není typovaný, DocumentProperty poskytuje typované přístupové metody — ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() a ToString() — pro čtení jako konkrétní typ bez explicitního přetypování.
Zabezpečení dokumentu
BuiltInDocumentProperties.Security hlásí DocumentSecurity hodnotu popisující stav ochrany dokumentu: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced nebo ReadOnlyExceptAnnotations. To odráží uložená metadata ochrany dokumentu načtená z vlastností souboru.
Tipy a osvědčené postupy
- Použijte typované přístupové metody (
ToInt(),ToDouble(),ToDateTime(),ToBool()) naDocumentProperty.Valuemísto přímého přetypování netypované hodnotyobject, protože podkladový typ úložiště se může lišit podlePropertyType. - Zkontrolujte
Contains(name)před indexováním do kterékoliv kolekce vlastností podle názvu (např.properties[name]), pokud vlastnost může neexistovat, abyste se vyhnuli zpracování situace chybějící vlastnosti jako výjimky. - Použijte
CustomDocumentProperties.AddLinkToContent(name, linkSource), když hodnota vlastní vlastnosti má vždy odrážet záložkovou část dokumentu, místo ručního synchronizování statické vlastní vlastnosti při každé změně tohoto obsahu. - Považujte statistiky
BuiltInDocumentProperties(Words,Characters,Pagesa podobně) za hodnoty uložené v metadatech souboru, nikoli za neustále živě počítané údaje — obnovte je explicitně, pokud se dokument od posledního zápisu změnil. - Přečtěte
BuiltInDocumentProperties.Security, abyste zkontrolovali deklarovaný stav ochrany dokumentu, než se rozhodnete, zda je potřeba další zpracování související s ochranou.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
Indexování kolekce CustomDocumentProperties podle názvu nevrací nic použitelného | Vlastnost v tomto dokumentu neexistuje | Nejdříve zavolejte Contains(name) nebo přidejte vlastnost s odpovídajícím přetížením Add(name, value) |
| Čtení hodnoty vlastní vlastnosti vrací nesprávný typ | DocumentProperty.Value je netypizovaný object; volající předpokládal typ, který neodpovídá Type | Použijte odpovídající typizovaný přístupový prvek (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) na základě DocumentProperty.Type |
| Hodnota propojené vlastní vlastnosti vypadá zastarale | Vlastnost je propojena přes AddLinkToContent a propojený obsah se změnil, aniž by byl dokument řádně aktualizován | Ověřte, že záložkový rozsah linkSource stále odráží zamýšlený obsah |
Statistiky slov (Words, Pages a další) neodpovídají skutečnému aktuálnímu obsahu dokumentu | Vestavěné statistiky odrážejí uložená metadata, nikoli živý přepočet | Přepočítejte a aktualizujte relevantní hodnoty BuiltInDocumentProperties, pokud je vyžadován aktuální počet |
FAQ
Jak mohu načíst nebo nastavit autora a název dokumentu?
Použijte Document.BuiltInDocumentProperties.Author a .Title přímo — jsou to obyčejné řetězcové vlastnosti ve sbírce BuiltInDocumentProperties, která je dosažitelná z Document.BuiltInDocumentProperties.
Jak mohu přidat metadata specifická pro aplikaci, která nejsou standardní vlastností Wordu?
Použijte Document.CustomDocumentProperties.Add(name, value) s názvem a hodnotou vlastnosti; vhodná přetížení Add je vybrána na základě typu hodnoty.
Jaký je rozdíl mezi BuiltInDocumentProperties a CustomDocumentProperties?
BuiltInDocumentProperties je pevná sada standardních metadatových polí Wordu (autor, název, statistiky a podobně), přístupná jako pojmenované vlastnosti. CustomDocumentProperties je otevřená, pojmenovaná kolekce DocumentProperty hodnot pro aplikací definovaná metadata, přístupná podle názvu prostřednictvím indexeru (např. properties[name]) a Contains.
Jak mohu přečíst vlastní vlastnost, aniž bych dopředu znal její přesný uložený typ?
Získejte DocumentProperty indexováním kolekce (např. properties[name]), zkontrolujte její Type (hodnota typu PropertyType) a použijte odpovídající typový přístupový prvek, jako jsou ToInt(), ToDouble(), ToDateTime() nebo ToBool(), na jejím Value.
Jak mohu nastavit vlastní vlastnost, aby sledovala část obsahu dokumentu?
Použijte CustomDocumentProperties.AddLinkToContent(name, linkSource), předáním názvu záložky jako linkSource; hodnota vlastnosti pak odráží tento záložkovaný obsah místo statické hodnoty.
API Reference Shrnutí
| Třída/Metoda | Popis: |
|---|---|
Document.BuiltInDocumentProperties | Standardní pole metadat aplikace Word (autor, název, statistiky, zabezpečení a podobně) |
Document.CustomDocumentProperties | Aplikací definované pojmenované vlastnosti metadat |
CustomDocumentProperties.Add(name, value) | Přidat vlastní vlastnost z názvu a typované hodnoty |
CustomDocumentProperties.AddLinkToContent(name, linkSource) | Přidat vlastní vlastnost propojenou s obsahem záložkovaného dokumentu |
DocumentPropertyCollection | Sdílená abstraktní základna pro obě kolekce vlastností |
DocumentProperty | Název jedné vlastnosti, netypovaná hodnota a PropertyType |
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool() | Typované přístupy k hodnotě vlastnosti |
PropertyType | Enum popisující typ hodnoty DocumentProperty |
DocumentSecurity | Enum popisující stav ochrany dokumentu, prostřednictvím BuiltInDocumentProperties.Security |