Dokumentum információk
Dokumentum információ
Ez az útmutató bemutatja, hogyan kell olvasni és írni a dokumentum metaadatokat a Aspose.Words FOSS segítségével a .NET számára. Minden betöltött vagy újonnan létrehozott Document kétféle metaadatot tartalmaz a tartalma mellett: egy rögzített halmaz beépített tulajdonságot (szerző, cím, szavak száma és hasonló) és egy nyílt végű halmaz egyéni tulajdonságot, amelyet saját maga definiál. A Aspose.Words FOSS a .NET esetén szintén megvalósítja a Word mezőket, amelyek ezt a metaadatot a dokumentum törzsébe hozják — AUTHOR, COMMENTS és DOCPROPERTY — így a tulajdonságértékek élő, frissíthető szövegként jelenhetnek meg.
Beépített dokumentumtulajdonságok
Document.BuiltInDocumentProperties egy BuiltInDocumentProperties gyűjteményt ad vissza, amely minden szabványos Word metaadatmezőhöz egy tulajdonságot tartalmaz: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime, valamint statisztikákat, mint például Pages, Words, Characters, CharactersWithSpaces, Paragraphs és Lines. Mivel a BuiltInDocumentProperties a DocumentPropertyCollection -ból származik, támogatja a név szerinti keresést az indexelőjén keresztül, Contains(), IndexOf(), valamint a felsorolást a GetEnumerator() segítségével. Ugyanaz a gyűjtemény elérhető a PlainTextDocument.BuiltInDocumentProperties -nál, amikor egyszerű szöveges bemenettel dolgozik.
Egyéni dokumentumtulajdonságok
Document.CustomDocumentProperties egy CustomDocumentProperties gyűjteményt ad vissza az alkalmazás által saját maga által definiált tulajdonságokhoz — tetszőleges név/érték párok, amelyeket a Word a beépített halmaz mellett tárol. Tulajdonságot adjon hozzá a Add(name, value) segítségével, amely a CustomDocumentProperties -ban túlterhelt a tulajdonság által tárolható értéktípusokhoz; egyet név szerint kérhet le az indexerrel, például properties[name]; és bejegyzéseket távolíthat el a Remove(name), RemoveAt(index) vagy Clear() használatával. A AddLinkToContent(name, linkSource) egy olyan tulajdonságot hoz létre, amelynek értéke egy könyvjelzőhöz vagy a dokumentumon belüli tartományhoz van kapcsolva, ahelyett, hogy rögzített értékként lenne tárolva.
Minden bejegyzés bármelyik gyűjteményben – legyen az beépített vagy egyéni – egy DocumentProperty, amely elérhetővé teszi a Name, Value és Type (egy PropertyType érték: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray vagy Other), valamint a IsLinkToContent és LinkSource a kapcsolt tulajdonságokhoz. A DocumentProperty konverziós segédfüggvényeket biztosít, mint például a ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() és ToByteArray(), amelyek a kívánt .NET típusú alapérték lekérését teszik lehetővé.
Dokumentum-információs mezők
Három Field alosztály a dokumentum metaadatait mezőkként teszi elérhetővé a dokumentum törzsén belül: FieldAuthor (a AUTHOR mező, AuthorName tulajdonsággal), FieldComments (a COMMENTS mező, Text tulajdonsággal), és FieldDocProperty (a DOCPROPERTY mező, amely egy névvel ellátott dokumentumtulajdonságot – beépített vagy egyéni – olvas be a dokumentumba). Mint minden Field, ez a három a Field alap életciklust osztja: GetFieldCode() a mezőkód kiolvasásához, Result / DisplayResult az utolsó kiszámított érték kiolvasásához, Update() az érték újraszámításához, Unlink() a mező statikus eredménnyel való helyettesítéséhez, és Remove() a törléséhez. Helyezz be egy dokumentum-információs mezőt a DocumentBuilder.InsertField(fieldCode) használatával – például AUTHOR vagy DOCPROPERTY "Company" mezőkóddal – vagy a InsertField(fieldType, updateField) túlterheléssel, egy FieldType érték használatával, mint például FieldType.FieldAuthor, FieldType.FieldComments vagy FieldType.FieldDocProperty.
Mivel a FieldDocProperty azt a dokumentumtulajdonságot olvassa, amelyhez kötve van, az alapul szolgáló BuiltInDocumentProperties vagy CustomDocumentProperties érték módosítása, majd a Update() meghívása – vagy a Document.UpdateFields() a dokumentum összes mezőjének egyszerre frissítéséhez – átadja az új értéket a mező megjelenített eredményének.
Tippek és bevált gyakorlatok
- Állíts be beépített tulajdonságokat, mint például
Title,AuthorésSubject, a mentés előtt – a Word és egyéb felhasználók ezeket aBuiltInDocumentProperties-ből olvassák a dokumentumlisták és a keresőindexelés számára. - Használd a
DocumentProperty.Type-t egy tulajdonságPropertyTypeellenőrzésére, mielőtt egy konkrét konverziós segédprogramot (ToInt(),ToDateTime()stb.) hívnád, hogy elkerüld a konverziós eltérést egy olyan tulajdonság esetén, amelyet nem te hoztál létre. - A
AddLinkToContent()egy egyéni tulajdonságot szinkronban tart a dokumentum tartalmával (például egy könyvjelzőzött tartománnyal) egy rögzített érték helyett – használd, ha a tulajdonságnak mindig a dokumentumban jelenleg lévő állapotot kell tükröznie. - Hívd meg a
Document.UpdateFields()-t a dokumentumtulajdonságok módosítása után, hogy a dokumentum törzsében már létezőFieldDocProperty,FieldAuthorvagyFieldCommentsmezők felvehessék az új értékeket. BuiltInDocumentPropertiesésCustomDocumentPropertiesegyaránt elérhetők aPlainTextDocumentés aDocumentrendszerekben, így a metaadatok körbejárása megtörténik akkor is, ha a betöltött tartalom egyszerű szöveg.
Gyakori problémák
| Probléma | Oka | Javítás |
|---|---|---|
Az indexelő null értéket ad vissza egy egyedi tulajdonságra | A tulajdonság még nincs hozzáadva | Először hívd meg a CustomDocumentProperties.Add(name, value) függvényt, vagy ellenőrizd a Contains(name) értéket az olvasás előtt |
FieldDocProperty elavult értéket mutat egy tulajdonság megváltoztatása után | A mező nem frissült | Hívja meg a(z) Update() a mezőn, vagy a(z) Document.UpdateFields() a dokumentum összes mezőjének frissítéséhez |
DocumentProperty.ToInt() / ToDateTime() kivételt dob | A tulajdonság tényleges Type nem egyezik a kért konverzióval | Ellenőrizze a DocumentProperty.Type értékét, mielőtt kiválasztaná, melyik konverziós segédprogramot hívja meg |
FAQ
Mi a különbség a beépített és az egyéni dokumentumtulajdonságok között?
A beépített tulajdonságok (Document.BuiltInDocumentProperties) egy rögzített halmaz, amelyet az OOXML formátum határoz meg — Author, Title, Pages, és hasonlók. Az egyéni tulajdonságok (Document.CustomDocumentProperties) egy nyílt, alkalmazás által meghatározott név/érték párokból álló halmaz, amelyet a Add() segítségével adnak hozzá.
Hogyan tudom, hogy egy egyéni tulajdonság a dokumentum tartalmát kövesse ahelyett, hogy fix értéket tárolna?
Használja a CustomDocumentProperties.AddLinkToContent(name, linkSource) elemet, amely a tulajdonság értékét egy dokumentumbeli könyvjelzőhöz vagy tartományhoz köti, ahelyett, hogy statikus értéket tárolna.
A dokumentumtulajdonság frissítése automatikusan frissíti az azt megjelenítő mezőket?
Nem — hívd a Update() függvényt a konkrét mezőn, vagy a Document.UpdateFields()-t a dokumentum minden mezőjének újraszámításához, beleértve a FieldDocProperty, FieldAuthor és FieldComments példányokat.
Olvashatok dokumentum tulajdonságokat egy egyszerű szöveges dokumentumból?
Igen. A PlainTextDocument ugyanazokat a BuiltInDocumentProperties és CustomDocumentProperties tulajdonságokat teszi elérhetővé, mint a Document.
API Reference összefoglaló
| Osztály / Metódus | Leírás |
|---|---|
Document.BuiltInDocumentProperties | Standard OOXML metaadat-gyűjtemény (Author, Title, Pages, stb.) |
Document.CustomDocumentProperties | Alkalmazás által definiált név/érték tulajdonsággyűjtemény |
CustomDocumentProperties.Add() / név szerinti indexelő / AddLinkToContent() | Egyéni tulajdonság hozzáadása, lekérése vagy tartalomhivatkozása |
DocumentProperty | Egyetlen tulajdonság bejegyzés; Value, Type, és ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() konverziós segédfüggvények |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS, és DOCPROPERTY mezők; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Mező beszúrása mezőkóddal vagy FieldType |