Jak pracovat s vlastnostmi dokumentu v .NET
Jak pracovat s vlastnostmi dokumentu v .NET
Každý dokument Word obsahuje dvě kategorie metadat — standardní pole, která Word sleduje pro každý soubor, a jakékoli hodnoty definované aplikací, které program přidal. Tento průvodce ukazuje, jak oba typy číst a nastavovat pomocí Aspose.Words FOSS pro .NET, s využitím Document.BuiltInDocumentProperties a Document.CustomDocumentProperties, které jsou nakonec postaveny na stejné reprezentaci DocumentProperty.
Průvodce krok za krokem
Krok 1: Čtení a nastavení vestavěných vlastností dokumentu
Document.BuiltInDocumentProperties vrací kolekci BuiltInDocumentProperties. Protože se jedná o pevně danou, známou sadu vlastností, hodnoty se čtou a zapisují jako běžné členy místo vyhledávání podle názvu — například BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords a .Comments pro popisná pole, nebo .CreatedTime, .LastSavedTime, .LastPrinted a .LastSavedBy pro časové značky. Statistiky jako .Characters, .CharactersWithSpaces, .Lines a .Bytes jsou také tímto způsobem dostupné, spolu s .Template a .HyperlinkBase.
Krok 2: Přidání vlastní vlastnosti dokumentu
Document.CustomDocumentProperties vrací CustomDocumentProperties kolekci pro metadata definovaná aplikací, která nejsou součástí vestavěné sady Wordu. Zavolejte jednu z přetížení Add(name, value) s názvem a typizovanou hodnotou — řetězec, číslo, boolean nebo datum, podle toho, která přetížení odpovídá typu hodnoty — a vytvořte novou vlastnost.
Krok 3: Propojit vlastní vlastnost s obsahem dokumentu
Místo statické hodnoty může vlastní vlastnost sledovat oblast obsahu označenou záložkou, takže její hodnota zůstává synchronizována s tímto obsahem. Zavolejte CustomDocumentProperties.AddLinkToContent(name, linkSource) a předávejte název záložky jako linkSource místo ručního opětovného synchronizování statické vlastnosti pokaždé, když se propojený obsah změní.
Krok 4: Vyhledat, zkontrolovat a odstranit vlastnosti
Jak BuiltInDocumentProperties, tak CustomDocumentProperties jsou odvozeny z abstraktního DocumentPropertyCollection, takže jsou prověřovány stejným způsobem: indexování podle názvu (např. properties[name]) získá vlastnost, Contains(name) kontroluje, zda existuje, IndexOf(name) vrací její pozici a Count uvádí, kolik vlastností kolekce obsahuje. Zavolejte Contains(name) před indexováním podle názvu, pokud může vlastní vlastnost neexistovat, abyste se vyhnuli zpracování chybějící vlastnosti jako výjimkové cesty. Odstraňte vlastnost pomocí Remove(name) nebo RemoveAt(index), nebo vymažte všechny vlastnosti v kolekci pomocí Clear().
Krok 5: Přečíst hodnotu vlastní vlastnosti, aniž byste předem znali její typ
Objekt DocumentProperty má Name, ne typizovaný Value a Type — hodnotu výčtu PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray nebo Other. Protože Value není typizovaný, použijte odpovídající typizovaný přístup místo přímého přetypování: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() nebo ToString(). Zkontrolujte IsLinkToContent a LinkSource, abyste zjistili, zda je vlastnost propojena s obsahem dokumentu (viz Krok 3), místo aby držela statickou hodnotu.
Krok 6: Zkontrolovat stav ochrany dokumentu
BuiltInDocumentProperties.Security hlásí DocumentSecurity hodnotu popisující uložená metadata ochrany dokumentu: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced nebo ReadOnlyExceptAnnotations. Přečtěte tuto vlastnost před tím, než se rozhodnete, zda je na načteném dokumentu potřeba další zpracování související s ochranou.
Časté problémy a opravy
Indexování CustomDocumentProperties kolekce podle jména nevrací nic použitelného. Vlastnost v tomto dokumentu neexistuje. Zavolejte Contains(name) nejprve, nebo přidejte vlastnost s odpovídajícím Add(name, value) přetížením.
Čtení hodnoty vlastní vlastnosti vrací nesprávný typ. DocumentProperty.Value je netypovaný object; volající předpokládal typ, který neodpovídá Type. Použijte odpovídající typovaný přístupový prvek (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) založený na DocumentProperty.Type.
Hodnota propojené vlastní vlastnosti vypadá zastaralá. Vlastnost je propojena přes AddLinkToContent, a obsah označený záložkou se změnil. Potvrďte, že linkSource záložka stále označuje oblast, která by měla poskytovat hodnotu vlastnosti.
Statistiky slov jako Characters or Lines neodpovídají skutečnému aktuálnímu obsahu dokumentu. Vestavěné statistiky odrážejí uložená metadata, ne živý přepočet. Přepočítejte a aktualizujte příslušné BuiltInDocumentProperties hodnoty, pokud je vyžadován aktuální počet.
Často kladené otázky
Jak mohu přečí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 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; odpovídající přetížení Add je vybráno na základě typu hodnoty.
Jaký je rozdíl mezi BuiltInDocumentProperties a CustomDocumentProperties?
BuiltInDocumentProperties je pevná sada standardních polí metadat ve Wordu, přístupná jako pojmenované členy. CustomDocumentProperties je otevřená, pojmenovaná kolekce hodnot DocumentProperty pro metadata definovaná aplikací, přístupná názvem přes indexer (např. properties[name]) a Contains.
Jak mohu nastavit vlastní vlastnost tak, aby sledovala část obsahu dokumentu místo statické hodnoty?
Použijte CustomDocumentProperties.AddLinkToContent(name, linkSource), předávejte název záložky jako linkSource; hodnota vlastnosti pak odráží tento záložkovaný obsah.
Jak mohu zkontrolovat, zda je dokument chráněn heslem?
Přečtěte Document.BuiltInDocumentProperties.Security, hodnotu DocumentSecurity; PasswordProtected naznačuje, že uložená metadata dokumentu deklarují ochranu heslem.