Werken met documenteigenschappen

Werken met documenteigenschappen

Werken met Documenteigenschappen

Deze gids laat zien hoe u de metadata van een Word-document kunt lezen en beheren — de eigenschappen die zichtbaar zijn in het Info/Eigenschappen-paneel van Word, plus eventuele door de applicatie gedefinieerde aangepaste waarden. Document.BuiltInDocumentProperties en Document.CustomDocumentProperties onthullen deze twee categorieën, die uiteindelijk beide zijn opgebouwd uit dezelfde onderliggende DocumentProperty-representatie.


Ingebouwde Documenteigenschappen

Document.BuiltInDocumentProperties retourneert een BuiltInDocumentProperties collectie die de standaardmetadata bevat die Word voor elk document bijhoudt: beschrijvende velden zoals Title, Subject, Author, Manager, Company, Category, Keywords en Comments; tijdstempels zoals CreatedTime, LastSavedTime en LastPrinted, samen met LastSavedBy en RevisionNumber; en statistieken zoals Words, Characters, CharactersWithSpaces, Lines, Paragraphs en Pages. Security geeft de beschermingsstatus van het document weer als een DocumentSecurity waarde, en Template, NameOfApplication en TotalEditingTime beschrijven de auteuromgeving. Omdat BuiltInDocumentProperties een vaste, bekende set eigenschappen is, worden individuele waarden gelezen en geschreven als gewone eigenschappen (BuiltInDocumentProperties.Author = "...") in plaats van op naam opgezocht.

Aangepaste Documenteigenschappen

Document.CustomDocumentProperties retourneert een CustomDocumentProperties collectie voor door de applicatie gedefinieerde metadata die niet deel uitmaakt van de ingebouwde set van Word. Verschillende Add(name, value) overloads maken een nieuwe eigenschap aan op basis van een naam en een getypeerde waarde (string, getal, boolean of datum, afhankelijk van de overload), en AddLinkToContent(name, linkSource) maakt een eigenschap aan waarvan de waarde gekoppeld is aan en een gemarkeerd bereik van inhoud in het document bijhoudt in plaats van een statische waarde te bevatten. Indexering op naam (bijv. properties[name]) en Contains(name) zoeken een eigenschap op, IndexOf(name) geeft de positie terug, en Remove(name)/RemoveAt(index) verwijderen er een.

Het DocumentProperty-object en gedeelde collectie-basis

Beide BuiltInDocumentProperties en CustomDocumentProperties zijn afgeleid van de abstracte DocumentPropertyCollection, die een indexer definieert op naam, GetEnumerator(), Contains(name), IndexOf(name) en Count — zodat de twee collecties op dezelfde manier worden geïnspecteerd, hoewel ingebouwde eigenschappen vaststaan en aangepaste eigenschappen open-ended zijn. Individueel heeft een DocumentProperty een Name, een niet-getypeerde Value, en een Type (een PropertyType enum-waarde: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray of Other). IsLinkToContent en LinkSource geven aan of de eigenschap is gekoppeld aan documentinhoud in plaats van een statische waarde te bevatten (zie AddLinkToContent hierboven). Omdat Value niet-getypeerd is, biedt DocumentProperty getypeerde accessors — ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() en ToString() — om deze als een specifiek type te lezen zonder een expliciete cast.

Documentbeveiliging

BuiltInDocumentProperties.Security rapporteert een DocumentSecurity waarde die de beschermingsstatus van het document beschrijft: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced of ReadOnlyExceptAnnotations. Dit weerspiegelt de opgeslagen beschermingsmetadata van het document zoals gelezen uit de bestandeigenschappen.


Tips en best practices

  • Gebruik de getypeerde accessors (ToInt(), ToDouble(), ToDateTime(), ToBool()) op DocumentProperty.Value in plaats van de niet-getypeerde object waarde direct te casten, omdat het onderliggende opslagtype per PropertyType kan variëren.
  • Controleer Contains(name) voordat u indexeert in een van beide eigenschapcollecties op naam (bijv. properties[name]) wanneer een eigenschap mogelijk niet bestaat, om te voorkomen dat een ontbrekende-eigenschap-case als een exceptiepoging wordt afgehandeld.
  • Gebruik CustomDocumentProperties.AddLinkToContent(name, linkSource) wanneer de waarde van een aangepaste eigenschap altijd een gemarkeerd deel van het document moet weerspiegelen, in plaats van handmatig een statische aangepaste eigenschap opnieuw te synchroniseren telkens wanneer die inhoud verandert.
  • Beschouw BuiltInDocumentProperties statistieken (Words, Characters, Pages en soortgelijke) als de waarden die in de metadata van het bestand zijn opgeslagen in plaats van altijd-live berekende tellingen — vernieuw ze expliciet als het document is gewijzigd sinds ze voor het laatst zijn weggeschreven.
  • Lees BuiltInDocumentProperties.Security om de verklaarde beschermingsstatus van een document te controleren voordat u beslist of verdere bescherming-gerelateerde verwerking nodig is.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Het indexeren van een CustomDocumentProperties collectie op naam geeft niets bruikbaars terugDe eigenschap bestaat niet in dit documentRoep eerst Contains(name) aan, of voeg de eigenschap toe met de juiste Add(name, value) overload
Het lezen van de waarde van een aangepaste eigenschap geeft het verkeerde typeDocumentProperty.Value is ongetypeerde object; de aanroeper ging uit van een type dat niet overeenkomt met TypeGebruik de overeenkomstige getypeerde accessor (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) op basis van DocumentProperty.Type
De waarde van een gekoppelde aangepaste eigenschap lijkt verouderdDe eigenschap is gekoppeld via AddLinkToContent, en de gekoppelde inhoud is gewijzigd zonder dat het document correct is bijgewerktControleer of het bladwijzerbereik linkSource nog steeds de beoogde inhoud weergeeft
Word-statistieken (Words, Pages, enzovoort) komen niet overeen met de feitelijke huidige inhoud van het documentIngebouwde statistieken weerspiegelen opgeslagen metadata, niet een live hertellingBereken opnieuw en werk de relevante BuiltInDocumentProperties-waarden bij als een actuele telling vereist is

FAQ

Hoe lees of stel ik de auteur en titel van het document in?

Gebruik Document.BuiltInDocumentProperties.Author en .Title direct — het zijn gewone string-eigenschappen van de BuiltInDocumentProperties-collectie die bereikbaar is via Document.BuiltInDocumentProperties.

Hoe voeg ik toepassingsspecifieke metadata toe die geen standaard Word-eigenschap is?

Gebruik Document.CustomDocumentProperties.Add(name, value) met de naam en waarde van de eigenschap; de juiste overload van Add wordt geselecteerd op basis van het type van de waarde.

Wat is het verschil tussen BuiltInDocumentProperties en CustomDocumentProperties?

BuiltInDocumentProperties is de vaste set van standaard metadata-velden van Word (auteur, titel, statistieken, enzovoort), benaderd als benoemde eigenschappen. CustomDocumentProperties is een open-ended, benoemde collectie van DocumentProperty waarden voor door de applicatie gedefinieerde metadata, benaderd via naam met de indexer (bijv. properties[name]) en Contains.

Hoe lees ik een aangepaste eigenschap zonder van tevoren het exacte opgeslagen type te kennen?

Haal de DocumentProperty op door de collectie te indexeren (bijv. properties[name]), controleer de Type (een PropertyType-waarde), en gebruik de bijpassende getypeerde accessor zoals ToInt(), ToDouble(), ToDateTime() of ToBool() op de Value.

Hoe zorg ik ervoor dat een aangepaste eigenschap een stuk documentinhoud bijhoudt?

Gebruik CustomDocumentProperties.AddLinkToContent(name, linkSource), waarbij je een bladwijzernaam doorgeeft als linkSource; de waarde van de eigenschap weerspiegelt dan die bladwijzerinhoud in plaats van een statische waarde.


API Reference Samenvatting

Klasse/MethodeBeschrijving
Document.BuiltInDocumentPropertiesStandaardmetadata-velden van Word (auteur, titel, statistieken, beveiliging, enzovoort)
Document.CustomDocumentPropertiesDoor de applicatie gedefinieerde benoemde metadata-eigenschappen
CustomDocumentProperties.Add(name, value)Voeg een aangepaste eigenschap toe met een naam en een getypte waarde
CustomDocumentProperties.AddLinkToContent(name, linkSource)Voeg een aangepaste eigenschap toe die gekoppeld is aan gemarkeerde documentinhoud
DocumentPropertyCollectionGedeelde abstracte basis voor beide eigenschapcollecties
DocumentPropertyDe naam, ongetypeerde waarde en PropertyType van een enkele eigenschap
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool()Getypeerde accessors voor de waarde van een eigenschap
PropertyTypeEnum die het waardetype van een DocumentProperty beschrijft
DocumentSecurityEnum die de beschermingsstatus van een document beschrijft, via BuiltInDocumentProperties.Security

Zie ook

 Nederlands