Administrar etiquetas de sensibilidad en presentaciones de PowerPoint con Java

Descripción general

Las etiquetas de sensibilidad de Microsoft Purview ayudan a las organizaciones a clasificar y gestionar documentos. Durante el procesamiento automático de presentaciones, una aplicación puede necesitar preservar una etiqueta existente, aplicar una etiqueta seleccionada por una política, actualizar su estado o migrar los metadatos de la etiqueta escritos por un flujo de trabajo más antiguo de Microsoft Information Protection (MIP).

Aspose.Slides expone los metadatos modernos de etiquetas de sensibilidad a través de IPresentation.getSensitivityLabels. Este método devuelve una ISensitivityLabelCollection que puede inspeccionarse y modificarse antes de que la presentación se guarde como PPTX.

Comprender las propiedades de las etiquetas de sensibilidad

Cada ISensitivityLabel contiene los siguientes metadatos:

Métodos Propósito
ISensitivityLabel.getId y ISensitivityLabel.setId Obtener o establecer el identificador de la etiqueta de sensibilidad en la política de Purview.
ISensitivityLabel.getSiteId y ISensitivityLabel.setSiteId Obtener o establecer el sitio asociado a la política de la etiqueta.
ISensitivityLabel.isEnabled y ISensitivityLabel.setEnabled Obtener o establecer si la etiqueta está habilitada.
ISensitivityLabel.isRemoved y ISensitivityLabel.setRemoved Obtener o establecer si la etiqueta ha sido eliminada. Establezca el valor a true cuando el estado de eliminación debe conservarse en los metadatos.
ISensitivityLabel.getAssignmentMethodType y ISensitivityLabel.setAssignmentMethodType Obtener o establecer si la etiqueta se aplicó automáticamente o mediante una decisión del usuario.
ISensitivityLabel.getContentMarkTypes Obtener los tipos de marcas de contenido asociados a la etiqueta.

La clase SensitivityLabelAssignmentType define cómo se asignó una etiqueta:

La clase SensitivityLabelContentType define la marca asociada a una etiqueta:

Valor Significado
SensitivityLabelContentType.None La etiqueta se aplicó por defecto o automáticamente.
SensitivityLabelContentType.Header Se asocia una marca de contenido de encabezado con la etiqueta.
SensitivityLabelContentType.Footer Se asocia una marca de contenido de pie de página con la etiqueta.
SensitivityLabelContentType.Watermark Se asocia una marca de contenido de marca de agua con la etiqueta.
SensitivityLabelContentType.Encryption Se asocia una protección de cifrado con la etiqueta.

Se pueden asociar varios tipos de marcas a una sola etiqueta.

Enumerar etiquetas de sensibilidad existentes

Lea la colección moderna de etiquetas de IPresentation.getSensitivityLabels y recorra sus elementos. El siguiente ejemplo muestra todas las propiedades y marcas de contenido almacenadas para cada etiqueta:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        System.out.println("Label ID: " + sensitivityLabel.getId());
        System.out.println("Site ID: " + sensitivityLabel.getSiteId());
        System.out.println("Enabled: " + sensitivityLabel.isEnabled());
        System.out.println("Removed: " + sensitivityLabel.isRemoved());
        System.out.println("Assignment method: " + sensitivityLabel.getAssignmentMethodType());

        for (Integer contentMarkType : sensitivityLabel.getContentMarkTypes()) {
            System.out.println("Content marking: " + contentMarkType);
        }
    }
} finally {
    presentation.dispose();
}

Agregar una etiqueta de sensibilidad con marca de contenido

Utilice ISensitivityLabelCollection.add con el identificador de la etiqueta, el identificador del sitio, el estado habilitado y el método de asignación. Después de que el método devuelva la nueva ISensitivityLabel, agregue los valores de marca requeridos mediante la lista devuelta por ISensitivityLabel.getContentMarkTypes.

El siguiente ejemplo agrega una etiqueta seleccionada manualmente asociada a marcas de pie de página y marca de agua, y luego guarda el resultado como PPTX:

import com.aspose.slides.*;
import java.util.UUID;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    String labelIdentifier = "{11111111-2222-3333-4444-555555555555}";
    UUID siteIdentifier = UUID.fromString("aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee");
    boolean isEnabled = true;
    int assignmentMethod = SensitivityLabelAssignmentType.Privileged;

    ISensitivityLabel sensitivityLabel = sensitivityLabels.add(
            labelIdentifier,
            siteIdentifier,
            isEnabled,
            assignmentMethod);

    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Footer);
    sensitivityLabel.getContentMarkTypes().addItem(SensitivityLabelContentType.Watermark);

    presentation.save("presentation_with_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Actualizar una etiqueta de sensibilidad

Los valores de ISensitivityLabel son de lectura/escritura, excepto que la lista devuelta por ISensitivityLabel.getContentMarkTypes se modifica mediante sus operaciones de lista. Después de localizar la etiqueta requerida, puede actualizar su identificador, identificador del sitio, estado habilitado, método de asignación, estado de eliminación y tipos de marcas de contenido. Guarde la presentación para que los cambios se persistan.

El siguiente ejemplo actualiza el estado habilitado y el método de asignación de la primera etiqueta:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();

    if (sensitivityLabels.getCount() > 0) {
        ISensitivityLabel sensitivityLabel = sensitivityLabels.get_Item(0);
        sensitivityLabel.setEnabled(true);
        sensitivityLabel.setAssignmentMethodType(SensitivityLabelAssignmentType.Privileged);
    }

    presentation.save("presentation_with_updated_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Marcar una etiqueta de sensibilidad como eliminada

Para conservar el hecho de que una etiqueta fue eliminada, encuentre la etiqueta y llame a ISensitivityLabel.setRemoved con true. Esto conserva la entrada de la etiqueta mientras registra su estado eliminado. Si, en su lugar, necesita eliminar una entrada de la colección moderna, use ISensitivityLabelCollection.removeAt; use ISensitivityLabelCollection.clear para eliminar todas las entradas.

El siguiente ejemplo marca una etiqueta específica como eliminada y guarda la presentación actualizada:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISensitivityLabelCollection sensitivityLabels = presentation.getSensitivityLabels();
    String targetLabelIdentifier = "{11111111-2222-3333-4444-555555555555}";

    for (ISensitivityLabel sensitivityLabel : sensitivityLabels) {
        boolean isTargetLabel = sensitivityLabel.getId().equalsIgnoreCase(targetLabelIdentifier);

        if (isTargetLabel) {
            sensitivityLabel.setRemoved(true);
            break;
        }
    }

    presentation.save("presentation_with_removed_label.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Leer y migrar etiquetas de sensibilidad heredadas de MIP

Los flujos de trabajo basados en MIP más antiguos pueden almacenar los metadatos de etiquetas de sensibilidad en propiedades personalizadas del documento en lugar de la colección moderna de etiquetas. Lea esos metadatos con IDocumentProperties.getSensitivityLabels. El método analiza las propiedades personalizadas heredadas y devuelve una matriz de objetos ISensitivityLabel.

Para migrar los metadatos, añada cada etiqueta devuelta a la ISensitivityLabelCollection moderna mediante ISensitivityLabelCollection.add. Como añadir un identificador de etiqueta duplicado genera una excepción, el ejemplo verifica la colección de destino antes de copiar cada etiqueta. Puede añadir validaciones adicionales para confirmar que cada etiqueta heredada sigue existiendo en la política actual de Purview.

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation_with_legacy_labels.pptx");
try {
    ISensitivityLabel[] legacySensitivityLabels = presentation.getDocumentProperties().getSensitivityLabels();
    ISensitivityLabelCollection modernSensitivityLabels = presentation.getSensitivityLabels();

    for (ISensitivityLabel legacySensitivityLabel : legacySensitivityLabels) {
        boolean labelAlreadyExists = false;

        for (ISensitivityLabel modernSensitivityLabel : modernSensitivityLabels) {
            labelAlreadyExists = modernSensitivityLabel.getId().equalsIgnoreCase(
                    legacySensitivityLabel.getId());

            if (labelAlreadyExists) {
                break;
            }
        }

        if (!labelAlreadyExists) {
            modernSensitivityLabels.add(legacySensitivityLabel);
        }
    }

    presentation.save("presentation_with_modern_labels.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

La migración copia los objetos de etiqueta analizados a la colección moderna. No es necesario borrar todas las propiedades personalizadas del documento, por lo que los metadatos no relacionados permanecen intactos. Use IPresentation.save con SaveFormat.Pptx para escribir los metadatos modernos de etiquetas en un archivo PPTX.

Preguntas frecuentes

¿Añadir un tipo de marca de contenido crea un encabezado, pie de página o marca de agua visible en las diapositivas?

No. Los valores añadidos a través de la lista devuelta por ISensitivityLabel.getContentMarkTypes describen las marcas asociadas a la etiqueta de sensibilidad. No crean texto visible ni formas en la presentación. Añada el contenido de diapositiva correspondiente por separado si su flujo de trabajo debe representar esas marcas.

¿Cuál es la diferencia entre marcar una etiqueta como eliminada y borrarla de la colección?

Llamar a ISensitivityLabel.setRemoved con true mantiene la entrada de la etiqueta y registra su estado eliminado. Llamar a ISensitivityLabelCollection.removeAt elimina la entrada de la colección moderna. Elija la operación que coincida con los requisitos de retención de metadatos de su organización.

¿Puede una presentación contener tanto metadatos heredados de MIP como etiquetas de sensibilidad modernas?

Sí. Las etiquetas heredadas pueden permanecer en las propiedades personalizadas del documento mientras que las etiquetas modernas están disponibles a través de IPresentation.getSensitivityLabels. Use IDocumentProperties.getSensitivityLabels para leer los metadatos heredados y migrar solo las etiquetas válidas que no estén ya presentes en la colección moderna.

¿Qué ocurre cuando se añade una etiqueta con el mismo identificador más de una vez?

ISensitivityLabelCollection.add genera una excepción cuando la colección ya contiene una etiqueta con el mismo identificador. Verifique los valores existentes devueltos por ISensitivityLabel.getId antes de añadir o migrar etiquetas.

¿Qué formato de salida debe utilizarse para conservar las etiquetas de sensibilidad actualizadas?

Guarde la presentación como PPTX llamando a IPresentation.save con SaveFormat.Pptx, como se muestra en los ejemplos anteriores.