Documentinformatie
Documentinformatie
Deze gids laat zien hoe je documentmetadata kunt lezen en schrijven met Aspose.Words FOSS voor .NET. Elke geladen of nieuw aangemaakt Document bevat twee soorten metadata naast de inhoud: een vaste set ingebouwde eigenschappen (auteur, titel, woordtelling en soortgelijke) en een open-eindige set aangepaste eigenschappen die je zelf definieert. Aspose.Words FOSS voor .NET implementeert ook de Word-velden die deze metadata in de documentbody zichtbaar maken — AUTHOR, COMMENTS en DOCPROPERTY — zodat eigenschapswaarden kunnen verschijnen als live, bij te werken tekst.
Ingebouwde documenteigenschappen
Document.BuiltInDocumentProperties retourneert een BuiltInDocumentProperties collectie met één eigenschap voor elk standaard Word-metadata-veld: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime en statistieken zoals Pages, Words, Characters, CharactersWithSpaces, Paragraphs en Lines. Omdat BuiltInDocumentProperties afgeleid is van DocumentPropertyCollection, ondersteunt het ook opzoeken op naam via zijn indexeur, Contains(), IndexOf() en enumeratie via GetEnumerator(). Dezelfde collectie wordt blootgesteld op PlainTextDocument.BuiltInDocumentProperties bij het werken met platte-tekst invoer.
Aangepaste documenteigenschappen
Document.CustomDocumentProperties retourneert een CustomDocumentProperties collectie voor eigenschappen die een toepassing zelf definieert — willekeurige naam/waarde-paren die Word opslaat naast de ingebouwde set. Voeg een eigenschap toe met Add(name, value), die overbelast is over CustomDocumentProperties voor de waardetypen die een eigenschap kan bevatten; haal er een op naam op met de indexeur, bijv. properties[name]; en verwijder items met Remove(name), RemoveAt(index) of Clear(). AddLinkToContent(name, linkSource) maakt een eigenschap aan waarvan de waarde gekoppeld is aan een bladwijzer of bereik binnen het document in plaats van opgeslagen te worden als een vaste waarde.
Elke invoer in beide collecties — ingebouwd of aangepast — is een DocumentProperty, die Name, Value en Type blootlegt (een PropertyType waarde: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray of Other), plus IsLinkToContent en LinkSource voor gekoppelde eigenschappen. DocumentProperty biedt conversiehulpstukken zoals ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() en ToByteArray() voor het ophalen van de onderliggende waarde in het gewenste .NET type.
Documentinformatievelden
Drie Field subklassen exposeren documentmetadata als velden binnen het document zelf: FieldAuthor (het AUTHOR veld, met een AuthorName eigenschap), FieldComments (het COMMENTS veld, met een Text eigenschap), en FieldDocProperty (het DOCPROPERTY veld, dat een benoemde documenteigenschap — ingebouwd of aangepast — in het document leest). Net als elke Field delen deze drie de basis Field levenscyclus: GetFieldCode() om de onderliggende veldcode te lezen, Result / DisplayResult om de laatst berekende waarde te lezen, Update() om de waarde opnieuw te berekenen, Unlink() om het veld te vervangen door het statische resultaat, en Remove() om het te verwijderen. Voeg een document-informatieveld in met DocumentBuilder.InsertField(fieldCode) — bijvoorbeeld een veldcode van AUTHOR of DOCPROPERTY "Company" — of met de InsertField(fieldType, updateField) overload met een FieldType waarde zoals FieldType.FieldAuthor, FieldType.FieldComments of FieldType.FieldDocProperty.
Omdat FieldDocProperty leest welke documenteigenschap het ook bindt, zorgt het wijzigen van de onderliggende BuiltInDocumentProperties of CustomDocumentProperties waarde en vervolgens het aanroepen van Update() — of Document.UpdateFields() om elk veld in het document in één keer te vernieuwen — ervoor dat de nieuwe waarde wordt doorgevoerd in het weergegeven resultaat van het veld.
Tips en best practices
- Stel ingebouwde eigenschappen in, zoals
Title,AuthorenSubject, vóór het opslaan — Word en andere consumenten lezen deze vanuitBuiltInDocumentPropertiesvoor documentlijsten en zoekindexering. - Gebruik
DocumentProperty.Typeom dePropertyTypevan een eigenschap te controleren voordat je een specifieke conversiehulp (ToInt(),ToDateTime(), enz.) aanroept, om een conversie-mismatch te voorkomen op een eigenschap die je zelf niet hebt aangemaakt. AddLinkToContent()houdt een aangepaste eigenschap gesynchroniseerd met de documentinhoud (bijvoorbeeld een bladwijzerbereik) in plaats van een vaste waarde — gebruik het wanneer de eigenschap altijd moet weergeven wat zich momenteel in het document bevindt.- Roep
Document.UpdateFields()aan na het wijzigen van documenteigenschappen zodat eventueleFieldDocProperty,FieldAuthorofFieldCommentsvelden die al in de documenttekst staan, de nieuwe waarden oppikken. BuiltInDocumentPropertiesenCustomDocumentPropertieszijn beide beschikbaar opPlainTextDocumentevenals opDocument, zodat metadata wordt doorgegeven zelfs wanneer de geladen inhoud platte tekst is.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
De indexeerder retourneert null voor een aangepaste eigenschap | De eigenschap is nog niet toegevoegd | Roep CustomDocumentProperties.Add(name, value) eerst aan, of controleer Contains(name) voordat u leest |
FieldDocProperty toont een verouderde waarde na het wijzigen van een eigenschap | Het veld is niet ververst | Roep Update() aan op het veld, of Document.UpdateFields() om elk veld in het document te vernieuwen |
DocumentProperty.ToInt() / ToDateTime() gooit | De daadwerkelijke Type van de eigenschap komt niet overeen met de gevraagde conversie | Controleer DocumentProperty.Type voordat je kiest welke conversiehulp je aanroept |
FAQ
Wat is het verschil tussen ingebouwde en aangepaste documenteigenschappen?
Ingebouwde eigenschappen (Document.BuiltInDocumentProperties) vormen een vaste set gedefinieerd door het OOXML-formaat — Author, Title, Pages, en soortgelijke. Aangepaste eigenschappen (Document.CustomDocumentProperties) zijn een open-eindige, door de applicatie gedefinieerde set van naam/waarde-paren toegevoegd met Add().
Hoe kan ik een aangepaste eigenschap laten volgen wat er in het document staat in plaats van een vaste waarde?
Gebruik CustomDocumentProperties.AddLinkToContent(name, linkSource), die de waarde van de eigenschap koppelt aan een bladwijzer of bereik in het document in plaats van een statische waarde op te slaan.
Wordt een documenteigenschap bijwerken automatisch doorgevoerd in velden die deze weergeven?
Nee — roep Update() aan op het specifieke veld of Document.UpdateFields() om elk veld in het document opnieuw te berekenen, inclusief FieldDocProperty, FieldAuthor en FieldComments instanties.
Kan ik documenteigenschappen lezen uit een platte-tekstdocument?
Ja. PlainTextDocument maakt dezelfde BuiltInDocumentProperties en CustomDocumentProperties eigenschappen beschikbaar als Document.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
Document.BuiltInDocumentProperties | Standaard OOXML-metadataverzameling (Author, Title, Pages, enz.) |
Document.CustomDocumentProperties | Door de applicatie gedefinieerde naam/waarde-eigenschapcollectie |
CustomDocumentProperties.Add() / indexeerder op naam / AddLinkToContent() | Een aangepaste eigenschap toevoegen, ophalen of inhoudskoppelen |
DocumentProperty | Enkele eigenschapvermelding; Value, Type, en ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() conversiehulpjes |
FieldAuthor / FieldComments / FieldDocProperty | AUTHOR, COMMENTS, en DOCPROPERTY velden; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Voegt een veld in via veldcode of FieldType |