Indice

Panoramica

Gestire i metadati dei documenti su vari formati di file può essere impegnativo. GroupDocs.Metadata per .NET semplifica il tutto fornendo un sistema di tagging per unificare le proprietà di metadati comuni (ad es. Titolo, Autore, Data di creazione) sotto forma di tag. In questa guida pratico esploreremo come trovare, aggiungere, copiare, aggiornare e rimuovere i metadati usando i tag con GroupDocs.Metadata per .NET.

GroupDocs.Metadata utilizza i tag per etichettare le proprietà di metadati importanti in un file, indipendentemente dal formato del documento o dallo standard di metadati. Ogni tag appartiene a una categoria che raggruppa tag correlati per facilitarne la scoperta.
Ad esempio:
Tag di Contenuto: descrivono il contenuto di un file (ad es. lingua, genere, soggetto, valutazione)
Tag di Persona: identificano persone o organizzazioni legate al contenuto (ad es. creatore del documento, editor, azienda)
Tag di Tempo: rappresentano i timestamp nel ciclo di vita del file (ad es. data di creazione, ultima modifica, data di stampa)
(Altre categorie includono Legale, Origine, Strumento, ecc., ciascuna raggruppa i tag pertinenti.)

Utilizzando questi tag, è possibile cercare e manipolare i metadati in modo unificato su documenti Word, PDF, immagini e molto altro.
Per esempio, un tag “Autore” o “Creatore” nella categoria Persona corrisponderà alla proprietà autore in un documento Word o in un PDF senza dover conoscere il nome del campo di metadati specifico del formato. Questo rende i tag estremamente utili per organizzare i file e automatizzare le attività di gestione dei metadati.

Casi d’uso

In questa sezione presenteremo diversi casi d’uso che evidenziano le applicazioni pratiche.

Trovare proprietà di metadati tramite tag

Un caso d’uso comune è trovare le voci di metadati in un file tramite il loro tag. Questo è particolarmente utile per migliorare la ricercabilità: è possibile recuperare informazioni specifiche da qualsiasi documento senza preoccuparsi del suo formato.

Passaggi

  1. Caricare il file in un oggetto Metadata.
  2. Trovare le proprietà usando FindProperties() con un predicato basato sui tag. È possibile filtrare per un tag specifico o per un’intera categoria.
  3. Iterare sui risultati per ispezionare o utilizzare i metadati.
// Load the source document (e.g., a PowerPoint file)
using (Metadata metadata = new Metadata("source.pptx"))
{
    // Find properties tagged as "last editor" or "last modified time"
    var properties = metadata.FindProperties(p => 
        p.Tags.Contains(Tags.Person.Editor) || 
        p.Tags.Contains(Tags.Time.Modified));

    // List the found properties and their values
    foreach (var property in properties)
    {
        Console.WriteLine($"Property name: {property.Name}, Value: {property.Value}");
    }
}

Aggiungere proprietà di metadati tramite tag

Talvolta un file può non contenere alcuni metadati (ad es. nessuna “Data di ultima stampa” registrata). Con GroupDocs.Metadata è possibile aggiungere una proprietà di metadati specificando un tag; l’API la inserirà nel pacchetto di metadati appropriato, se il formato lo supporta.

Passaggi

  1. Caricare il file in un oggetto Metadata.
  2. Chiamare AddProperties() con un predicato che identifica dove aggiungere e fornire il nuovo valore della proprietà.
  3. Controllare il valore restituito per vedere quante proprietà sono state aggiunte.
  4. Salvare il documento (se si desidera rendere permanenti le modifiche).
using (Metadata metadata = new Metadata("source.pdf"))
{
    if (metadata.FileFormat != FileFormat.Unknown && !metadata.GetDocumentInfo().IsEncrypted)
    {
        // Add a "Last Printed" date property if it's missing
        int affected = metadata.AddProperties(
            p => p.Tags.Contains(Tags.Time.Printed),
            new PropertyValue(DateTime.Now));

        Console.WriteLine("Properties added: " + affected);
        metadata.Save("output.pdf");
    }
}

Qui utilizziamo Tags.Time.Printed – il tag per la data “Stampato” nella categoria Tempo. Il predicato p.Tags.Contains(Tags.Time.Printed) mira alla proprietà di metadati “Printed” conosciuta. Se la proprietà è assente, AddProperties la aggiunge con il valore fornito (DateTime.Now in questo caso). Il metodo restituisce il numero di proprietà aggiunte (affected), che riportiamo a video. Infine, salviamo il file per rendere persistenti i nuovi metadati.

Copiare proprietà di metadati tramite tag

A volte si desidera copiare solo tipi specifici di metadati, come i nomi degli autori o le date di creazione. Il metodo CopyTo consente di utilizzare un predicato per filtrare le proprietà da copiare. Ecco come copiare solo i metadati relativi a autori o date di creazione:

Passaggi

  1. Caricare sia il file di origine sia quello di destinazione usando la classe Metadata.
  2. Utilizzare il metodo CopyTo per trasferire i metadati dall’origine alla destinazione.
  3. Salvare il file di destinazione per applicare i metadati copiati.
using (Metadata sourceMetadata = new Metadata("source.xlsx"))
using (Metadata targetMetadata = new Metadata("target.pptx"))
{
    // Copy only Author (Creator) and Creation Date metadata properties
    sourceMetadata.CopyTo(targetMetadata, p =>
        p.Tags.Contains(Tags.Person.Creator) ||
        p.Tags.Contains(Tags.Time.Created));

    // Save the changes
    targetMetadata.Save();
}

In questo esempio, solo i metadati con i tag per Creator (nome dell’autore) e Created Date verranno copiati dal file Excel (source.xlsx) alla presentazione PowerPoint (target.pptx). Questa copia selettiva fornisce un controllo preciso sui metadati, facilitando la verifica che i documenti contengano esclusivamente le informazioni desiderate.

Aggiornare proprietà di metadati tramite tag

Oltre ad aggiungere nuovi metadati, spesso è necessario aggiornare i valori esistenti (ad esempio correggere il nome di un autore o uniformare le date). GroupDocs.Metadata offre il metodo SetProperties() a questo scopo. Usa i tag per trovare le proprietà target e ne aggiorna i valori. Se una proprietà target è assente, SetProperties può aggiungerla – combinando quindi aggiornamento e inserimento in un unico passo.

Passaggi

  1. Caricare il file in un oggetto Metadata.
  2. Chiamare SetProperties() con un filtro basato sui tag e il nuovo PropertyValue.
  3. Esaminare il conteggio restituito delle proprietà interessate (aggiornate o aggiunte).
  4. Salvare le modifiche sul file, se necessario.
using (Metadata metadata = new Metadata("source.pdf"))
{
    // Update all "Created" or "Modified" date properties to now
    int affected = metadata.SetProperties(
        p => p.Tags.Contains(Tags.Time.Created) || p.Tags.Contains(Tags.Time.Modified),
        new PropertyValue(DateTime.Now));

    Console.WriteLine("Properties updated or added: " + affected);
    metadata.Save("updated.pdf");
}

Nel predicato, Tags.Time.Created e Tags.Time.Modified sono i tag per la data di creazione e l’ultima modifica. Il codice troverà qualsiasi proprietà di metadati contrassegnata con uno dei due tag e la imposterà a DateTime.Now. Se, ad esempio, la proprietà “Created” non esiste nel file, la libreria la aggiungerà (poiché è una proprietà standard conosciuta per quel formato).

Rimuovere metadati tramite tag

Per motivi di privacy o conformità, può essere necessario eliminare alcuni metadati (ad es. nomi di autore o informazioni personali) dai documenti. I tag rendono semplice il target e la rimozione di tali metadati su formati diversi. Il metodo RemoveProperties() accetta un predicato come gli altri e rimuove tutte le voci corrispondenti.

Passaggi

  1. Caricare il file in un oggetto Metadata.
  2. Chiamare RemoveProperties() con un predicato basato sui tag che identifica le proprietà da eliminare.
  3. Verificare il conteggio delle proprietà rimosse restituito dal metodo.
  4. Salvare il file per applicare le modifiche.
using (Metadata metadata = new Metadata("source.docx"))
{
    // Remove properties that are tagged as Creator or Editor, or any string containing "John"
    int removedCount = metadata.RemoveProperties(p =>
        p.Tags.Contains(Tags.Person.Creator) ||
        p.Tags.Contains(Tags.Person.Editor) ||
        (p.Value.Type == MetadataPropertyType.String && p.Value.ToString().Contains("John"))
    );

    Console.WriteLine("Properties removed: " + removedCount);
    metadata.Save("cleaned.docx");
}

Questo predicato combina più criteri: verranno rimosse tutte le proprietà etichettate come Creator o Editor (entrambi nella categoria Persona) e, inoltre, qualsiasi metadato di tipo stringa che contenga la parola “John”. In uno scenario reale, una logica simile può essere usata per pulire i documenti da dati personali (come nomi di autori o clienti).

Conclusione

In questo articolo abbiamo dimostrato come la funzionalità di tagging di GroupDocs.Metadata per .NET consenta di aggiungere, copiare, trovare, aggiornare e rimuovere i metadati in modo unificato su molti tipi di documento. Sfruttando tag come Content, Person, Time, ecc., è possibile creare workflow che organizzano i file con metadati coerenti, migliorano la ricercabilità (ad es. trovare tutti i file per autore o data) e automatizzano la categorizzazione o la pulizia dei documenti.

Vedi anche

Prova gratuita

È possibile scaricare una versione di prova gratuita di GroupDocs.Metadata per .NET da releases.groupdocs.com. È inoltre possibile ottenere una licenza temporanea per provare tutte le funzionalità senza restrizioni da qui.