Tabla de contenidos

Visión general

Gestionar los metadatos de documentos en varios formatos de archivo puede ser un desafío. GroupDocs.Metadata para .NET simplifica esto al proporcionar un sistema de etiquetado que unifica propiedades comunes de metadatos (p. ej., Título, Autor, Fecha de creación) bajo etiquetas. En esta guía práctica, exploraremos cómo encontrar, añadir, copiar, actualizar y eliminar metadatos usando etiquetas con GroupDocs.Metadata para .NET.

GroupDocs.Metadata usa etiquetas para marcar propiedades importantes de metadatos en un archivo, sin importar el formato del documento o el estándar de metadatos. Cada etiqueta pertenece a una categoría que agrupa etiquetas relacionadas para facilitar su descubrimiento.
Por ejemplo:
Etiquetas de contenido: describen el contenido de un archivo (p. ej., idioma, género, tema, calificación)
Etiquetas de persona: identifican a personas u organizaciones relacionadas con el contenido (p. ej., creador del documento, editor, empresa)
Etiquetas de tiempo: representan marcas temporales en el ciclo de vida del archivo (p. ej., fecha de creación, última hora de modificación, fecha de impresión)
(Otras categorías incluyen Legal, Origen, Herramienta, etc., cada una agrupando etiquetas pertinentes.)

Usando estas etiquetas, puede buscar y manipular metadatos de forma unificada en documentos Word, PDFs, imágenes y más.
Por ejemplo, una etiqueta “Autor” o “Creador” en la categoría Persona coincidirá con la propiedad de autor en un documento Word o en un PDF sin necesidad de conocer el nombre del campo de metadatos específico del formato. Esto hace que las etiquetas sean extremadamente útiles para organizar archivos y automatizar tareas de gestión de metadatos.

Casos de uso

En esta sección, presentaremos diferentes casos de uso que resaltan las aplicaciones prácticas.

Encontrar propiedades de metadatos por etiqueta

Un caso de uso común es encontrar entradas de metadatos en un archivo mediante su etiqueta. Esto es particularmente útil para mejorar la capacidad de búsqueda: puede obtener información específica de cualquier documento sin preocuparse por su formato.

Pasos

  1. Cargue el archivo en un objeto Metadata.
  2. Encuentre propiedades usando FindProperties() con un predicado basado en etiquetas. Puede filtrar por una etiqueta específica o una categoría completa.
  3. Itere a través de los resultados para inspeccionar o utilizar los metadatos.
// 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}");
    }
}

Añadiendo propiedades de metadatos por etiqueta

A veces un archivo puede carecer de ciertos metadatos (p. ej., no se registra una “Última fecha de impresión”). Usando GroupDocs.Metadata, puede añadir una propiedad de metadatos especificando una etiqueta, y la API la colocará en el paquete de metadatos apropiado si el formato lo permite.

Pasos

  1. Cargue el archivo en un objeto Metadata.
  2. Llame a AddProperties() con un predicado para identificar dónde agregar, y proporcione el valor de la nueva propiedad.
  3. Compruebe el valor devuelto para ver cuántas propiedades se añadieron.
  4. Guarde el documento (si desea conservar los cambios).

Por ejemplo, el código a continuación añade una fecha/hora “Última impresión” a un documento si aún no la tiene:

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");
    }
}

Aquí usamos Tags.Time.Printed – la etiqueta para la fecha “Impreso” dentro de la categoría Tiempo. El predicado p.Tags.Contains(Tags.Time.Printed) apunta a la propiedad de metadato conocida de impresión. Si la propiedad falta, AddProperties la añadirá con el valor que proporcionamos (DateTime.Now en este caso). El método devuelve el número de propiedades añadidas (afectadas), que mostramos en pantalla. Finalmente, guardamos el archivo para persistir los nuevos metadatos.

Copiar propiedades de metadatos por etiqueta

A veces, puede que desee copiar solo tipos específicos de metadatos, como nombres de autores o fechas de creación. El método CopyTo le permite usar un predicado para filtrar las propiedades a copiar. Aquí se muestra cómo copiar únicamente los metadatos relacionados con autores o fechas de creación:

Pasos

  1. Cargue tanto el archivo de origen como el de destino usando la clase Metadata.
  2. Utilice el método CopyTo para transferir los metadatos del origen al destino.
  3. Guarde el archivo de destino para aplicar los metadatos copiados.
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();
}

En este ejemplo, solo se copiarán los metadatos con etiquetas para Creador (nombre del autor) y Fecha de creación del archivo Excel (source.xlsx) al PowerPoint (target.pptx). Esta copia selectiva le brinda un control preciso sobre sus metadatos, facilitando que sus documentos contengan exactamente la información que desea.

Actualizando propiedades de metadatos por etiqueta

Más allá de añadir nuevos metadatos, a menudo es necesario actualizar los valores existentes (por ejemplo, corregir el nombre de un autor o normalizar fechas). GroupDocs.Metadata ofrece el método SetProperties() para ello. Utiliza etiquetas para encontrar las propiedades objetivo y actualiza sus valores. Si una propiedad objetivo falta, SetProperties puede añadirla – combinando actualización y adición en un solo paso.

Pasos

  1. Cargue el archivo en un objeto Metadata.
  2. Llame a SetProperties() con un filtro basado en etiquetas y el nuevo PropertyValue.
  3. Inspeccione el recuento devuelto de propiedades afectadas (actualizadas o añadidas).
  4. Guarde los cambios en el archivo si es necesario.

Por ejemplo, supongamos que queremos actualizar la fecha de creación y la fecha de modificación de un documento a la fecha/hora actual (esto podría usarse para restablecer o estandarizar marcas temporales):

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");
}

En el predicado, Tags.Time.Created y Tags.Time.Modified son etiquetas para la fecha de creación y la última fecha de modificación, respectivamente. El código encontrará cualquier propiedad de metadatos marcada con cualquiera de esas etiquetas y les asignará DateTime.Now. Si, por ejemplo, una propiedad de fecha de creación no existía en los metadatos del archivo, la biblioteca la añadirá (pues es una propiedad estándar conocida para ese formato).

Eliminando metadatos por etiqueta

Por motivos de privacidad o cumplimiento, puede que necesite eliminar ciertos metadatos (p. ej., nombres de autores o información personal) de los documentos. Las etiquetas facilitan la identificación y eliminación de dichos metadatos en diferentes formatos. El método RemoveProperties() acepta un predicado al igual que los demás, y eliminará cualquier entrada que coincida.

Pasos

  1. Cargue el archivo en un objeto Metadata.
  2. Llame a RemoveProperties() con un predicado basado en etiquetas que identifique las propiedades a eliminar.
  3. Revise el número de propiedades eliminadas que devuelve el método.
  4. Guarde el archivo para aplicar los cambios.
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");
}

Este predicado combina varios criterios: cualquier propiedad etiquetada como Creador o Editor (ambas pertenecen a la categoría Persona) será eliminada, y adicionalmente cualquier metadato de tipo cadena que contenga “John” en su valor también será eliminado. En un escenario real, podría usar lógica similar para depurar documentos de datos personales (como nombres de autores o clientes).

Conclusión

En este artículo, demostramos cómo la función de etiquetado de GroupDocs.Metadata para .NET le permite añadir, copiar, encontrar, actualizar y eliminar metadatos de forma unificada en numerosos tipos de documentos. Al aprovechar etiquetas como Contenido, Persona, Tiempo, etc., puede crear flujos de trabajo que organicen archivos mediante metadatos consistentes, mejoren la capacidad de búsqueda (por ejemplo, encontrar todos los archivos por autor o por fecha) y automaticen la categorización o limpieza de documentos.

Ver también

Obtener una prueba gratuita

Puede descargar una versión de prueba gratuita de GroupDocs.Metadata para .NET desde releases.groupdocs.com. También puede adquirir una licencia temporal para probar todas las funciones y características sin restricciones desde aquí.