Informazioni sul documento
Informazioni sul documento
Questa guida mostra come leggere e scrivere i metadati del documento con Aspose.Words FOSS per .NET. Ogni Document caricato o appena creato contiene due tipi di metadati accanto al suo contenuto: un set fisso di proprietà incorporate (autore, titolo, conteggio parole e simili) e un insieme aperto di proprietà personalizzate che definisci tu stesso. Aspose.Words FOSS per .NET implementa anche i campi Word che espongono questi metadati all’interno del corpo del documento — AUTHOR, COMMENTS e DOCPROPERTY — in modo che i valori delle proprietà possano apparire come testo live e aggiornabile.
Proprietà incorporate del documento
Document.BuiltInDocumentProperties restituisce una collezione BuiltInDocumentProperties con una proprietà per ciascun campo standard dei metadati di Word: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime e statistiche come Pages, Words, Characters, CharactersWithSpaces, Paragraphs e Lines. Poiché BuiltInDocumentProperties deriva da DocumentPropertyCollection, supporta anche la ricerca per nome tramite il suo indicizzatore, Contains(), IndexOf(), e l’enumerazione tramite GetEnumerator(). La stessa collezione è esposta su PlainTextDocument.BuiltInDocumentProperties quando si lavora con input di testo semplice.
Proprietà personalizzate del documento
Document.CustomDocumentProperties restituisce una collezione CustomDocumentProperties per le proprietà che un’applicazione definisce autonomamente — coppie nome/valore arbitrarie che Word memorizza accanto al set incorporato. Aggiungi una proprietà con Add(name, value), che è sovraccaricato su CustomDocumentProperties per i tipi di valore che una proprietà può contenere; recuperane una per nome con l’indicizzatore, ad es. properties[name]; e rimuovi le voci con Remove(name), RemoveAt(index) o Clear(). AddLinkToContent(name, linkSource) crea una proprietà il cui valore è collegato a un segnalibro o a un intervallo all’interno del documento piuttosto che memorizzato come valore fisso.
Ogni voce in entrambe le collezioni — incorporate o personalizzate — è un DocumentProperty, che espone Name, Value e Type (un valore PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray o Other), più IsLinkToContent e LinkSource per le proprietà collegate. DocumentProperty fornisce helper di conversione come ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool() e ToByteArray() per recuperare il valore sottostante nel tipo .NET desiderato.
Campi di Informazione del Documento
Tre sottoclassi Field espongono i metadati del documento come campi all’interno del corpo del documento stesso: FieldAuthor (il campo AUTHOR, con una proprietà AuthorName), FieldComments (il campo COMMENTS, con una proprietà Text), e FieldDocProperty (il campo DOCPROPERTY, che legge una proprietà del documento denominata — integrata o personalizzata — nel documento). Come ogni Field, questi tre condividono il ciclo di vita di base Field: GetFieldCode() per leggere il codice del campo sottostante, Result / DisplayResult per leggere l’ultimo valore calcolato, Update() per ricalcolare il valore, Unlink() per sostituire il campo con il suo risultato statico, e Remove() per eliminarlo. Inserisci un campo di informazioni sul documento con DocumentBuilder.InsertField(fieldCode) — ad esempio un codice campo di AUTHOR o DOCPROPERTY "Company" — o con il sovraccarico InsertField(fieldType, updateField) usando un valore FieldType come FieldType.FieldAuthor, FieldType.FieldComments, o FieldType.FieldDocProperty.
Poiché FieldDocProperty legge qualsiasi proprietà del documento a cui è associato, modificare il valore sottostante di BuiltInDocumentProperties o CustomDocumentProperties e poi chiamare Update() — o Document.UpdateFields() per aggiornare tutti i campi nel documento contemporaneamente — propaga il nuovo valore nel risultato visualizzato del campo.
Suggerimenti e Buone Pratiche
- Imposta le proprietà integrate come
Title,AuthoreSubjectprima di salvare — Word e altri consumatori le leggono daBuiltInDocumentPropertiesper gli elenchi dei documenti e l’indicizzazione della ricerca. - Usa
DocumentProperty.Typeper verificare ilPropertyTypedi una proprietà prima di chiamare un helper di conversione specifico (ToInt(),ToDateTime(), ecc.) per evitare una discrepanza di conversione su una proprietà che non hai creato tu. AddLinkToContent()mantiene una proprietà personalizzata sincronizzata con il contenuto del documento (come un intervallo contrassegnato) invece di un valore fisso — usala quando la proprietà dovrebbe sempre riflettere ciò che è attualmente nel documento.- Chiama
Document.UpdateFields()dopo aver modificato le proprietà del documento affinché eventuali campiFieldDocProperty,FieldAuthoroFieldCommentsgià presenti nel corpo del documento acquisiscano i nuovi valori. BuiltInDocumentPropertieseCustomDocumentPropertiessono entrambi disponibili suPlainTextDocumentcosì come suDocument, quindi i metadati vengono trasferiti anche quando il contenuto caricato è testo semplice.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
L’indicizzatore restituisce null per una proprietà personalizzata | La proprietà non è stata ancora aggiunta | Chiama CustomDocumentProperties.Add(name, value) prima, oppure controlla Contains(name) prima di leggere |
FieldDocProperty mostra un valore obsoleto dopo aver modificato una proprietà | Il campo non è stato aggiornato | Chiama Update() sul campo, oppure Document.UpdateFields() per aggiornare tutti i campi nel documento |
DocumentProperty.ToInt() / ToDateTime() lancia | Il Type effettivo della proprietà non corrisponde alla conversione richiesta | Verifica DocumentProperty.Type prima di scegliere quale helper di conversione chiamare |
FAQ
Qual è la differenza tra le proprietà di documento integrate e quelle personalizzate?
Le proprietà integrate (Document.BuiltInDocumentProperties) sono un insieme fisso definito dal formato OOXML — Author, Title, Pages e simili. Le proprietà personalizzate (Document.CustomDocumentProperties) sono un insieme aperto, definito dall’applicazione, di coppie nome/valore aggiunte con Add().
Come faccio a far sì che una proprietà personalizzata tracci il contenuto del documento anziché un valore fisso?
Usa CustomDocumentProperties.AddLinkToContent(name, linkSource), che collega il valore della proprietà a un segnalibro o a un intervallo nel documento anziché memorizzare un valore statico.
L’aggiornamento di una proprietà del documento aggiorna automaticamente i campi che la visualizzano?
No — chiama Update() sul campo specifico o Document.UpdateFields() per ricalcolare ogni campo nel documento, inclusi FieldDocProperty, FieldAuthor e FieldComments istanze.
Posso leggere le proprietà del documento da un documento di testo semplice?
Sì. PlainTextDocument espone le stesse proprietà BuiltInDocumentProperties e CustomDocumentProperties di Document.
API Reference Riepilogo
| Classe / Metodo | Descrizione |
|---|---|
Document.BuiltInDocumentProperties | Raccolta standard di metadati OOXML (Author, Title, Pages, ecc.) |
Document.CustomDocumentProperties | Raccolta di proprietà nome/valore definita dall’applicazione |
CustomDocumentProperties.Add() / indicizzatore per nome / AddLinkToContent() | Aggiungere, recuperare o collegare al contenuto una proprietà personalizzata |
DocumentProperty | Singola voce di proprietà; Value, Type, e ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() assistenti di conversione |
FieldAuthor / FieldComments / FieldDocProperty | Campi AUTHOR, COMMENTS e DOCPROPERTY; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | Inserisce un campo tramite codice campo o FieldType |