Administrar propiedades de presentación en Android

Propiedades de documento en PowerPoint

Microsoft PowerPoint 2007 permite gestionar las propiedades del documento de los archivos de presentación. Todo lo que tienes que hacer es hacer clic en el icono de Office y luego en el elemento de menú Prepare | Properties | Advanced Properties de Microsoft PowerPoint 2007 como se muestra a continuación:

Seleccionar elemento del menú Advanced Properties **
todo:image_alt_text
Después de seleccionar el elemento del menú Advanced Properties, aparecerá un diálogo que le permitirá gestionar las propiedades del documento del archivo PowerPoint como se muestra a continuación:
Diálogo de propiedades **
todo:image_alt_text
En el Properties Dialog anterior, puedes ver que hay varias pestañas como General, Summary, Statistics, Contents y Custom. Todas estas pestañas permiten configurar diferentes tipos de información relacionada con los archivos de PowerPoint. La pestaña Custom se utiliza para gestionar las propiedades personalizadas de los archivos de PowerPoint.

Trabajar con propiedades de documento usando Aspose.Slides for Android via Java

Como describimos anteriormente, Aspose.Slides for Android via Java admite dos tipos de propiedades de documento, que son Built-in y Custom. Por lo tanto, los desarrolladores pueden acceder a ambos tipos de propiedades mediante la API de Aspose.Slides for Android via Java. Aspose.Slides for Android via Java proporciona la clase IDocumentProperties que representa las propiedades del documento asociadas a un archivo de presentación a través de la propiedad Presentation.DocumentProperties.

Los desarrolladores pueden usar la propiedad IDocumentProperties expuesta por el objeto Presentation para acceder a las propiedades del documento de los archivos de presentación como se describe a continuación:

Acceder a propiedades integradas

Estas propiedades expuestas por el objeto IDocumentProperties incluyen: Creator (Autor), Description, Keywords, Created (Fecha de creación), Modified (Fecha de modificación), Printed (Fecha de la última impresión), LastModifiedBy, Keywords, SharedDoc (¿Compartido entre diferentes productores?), PresentationFormat, Subject y Title.

// Instanciar la clase Presentation que representa la presentación
Presentation pres = new Presentation("Presentation.pptx");
try {
    // Crear una referencia al objeto IDocumentProperties asociado a Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Mostrar las propiedades integradas
    System.out.println("Category : " + dp.getCategory());
    System.out.println("Current Status : " + dp.getContentStatus());
    System.out.println("Creation Date : " + dp.getCreatedTime());
    System.out.println("Author : " + dp.getAuthor());
    System.out.println("Description : " + dp.getComments());
    System.out.println("KeyWords : " + dp.getKeywords());
    System.out.println("Last Modified By : " + dp.getLastSavedBy());
    System.out.println("Supervisor : " + dp.getManager());
    System.out.println("Modified Date : " + dp.getLastSavedTime());
    System.out.println("Presentation Format : " + dp.getPresentationFormat());
    System.out.println("Last Print Date : " + dp.getLastPrinted());
    System.out.println("Is Shared between producers : " + dp.getSharedDoc());
    System.out.println("Subject : " + dp.getSubject());
    System.out.println("Title : " + dp.getTitle());
} finally {
    if (pres != null) pres.dispose();
}

Modificar propiedades integradas

Modificar las propiedades integradas de los archivos de presentación es tan sencillo como acceder a ellas. Simplemente puedes asignar un valor de cadena a cualquier propiedad deseada y el valor de la propiedad será modificado. En el ejemplo a continuación, demostramos cómo podemos modificar las propiedades de documento integradas del archivo de presentación utilizando Aspose.Slides for Android via Java.

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Crear una referencia al objeto IDocumentProperties asociado a Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Establecer las propiedades integradas
    dp.setAuthor("Aspose.Slides for Android via Java");
    dp.setTitle("Modifying Presentation Properties");
    dp.setSubject("Aspose Subject");
    dp.setComments("Aspose Description");
    dp.setManager("Aspose Manager");
    
    // Guardar la presentación en un archivo
    pres.save("DocProps.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Este ejemplo modifica las propiedades integradas de la presentación, que pueden verse como se muestra a continuación:

Propiedades de documento integradas después de la modificación **
todo:image_alt_text

Añadir propiedades de documento personalizadas

Aspose.Slides for Android via Java también permite a los desarrolladores añadir valores personalizados para las propiedades de documento de la presentación. A continuación se muestra un ejemplo que indica cómo establecer las propiedades personalizadas para una presentación.

Presentation pres = new Presentation();
try {
    // Obtener propiedades del documento
    IDocumentProperties dProps = pres.getDocumentProperties();
    
    // Agregar propiedades personalizadas
    dProps.set_Item("New Custom", 12);
    dProps.set_Item("My Name", "Mudassir");
    dProps.set_Item("Custom", 124);
    
    // Obtener nombre de la propiedad en índice específico
    String getPropertyName = dProps.getCustomPropertyName(2);
    
    // Eliminar la propiedad seleccionada
    dProps.removeCustomProperty(getPropertyName);
    
    // Guardar la presentación
    pres.save("CustomDemo.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
Propiedades de documento personalizadas añadidas **
todo:image_alt_text

Acceder y modificar propiedades personalizadas

Aspose.Slides for Android via Java también permite a los desarrolladores acceder a los valores de las propiedades personalizadas. A continuación se muestra un ejemplo que indica cómo puedes acceder y modificar todas estas propiedades personalizadas para una presentación.

Presentation pres = new Presentation("Presentation.pptx");
try {
    // Crear una referencia al objeto DocumentProperties asociado a Presentation
    IDocumentProperties dp = pres.getDocumentProperties();
    
    // Acceder y modificar propiedades personalizadas
    for (int i = 0; i < dp.getCountOfCustomProperties(); i++) {
        // Mostrar nombres y valores de las propiedades personalizadas
        System.out.println("Custom Property Name : " + dp.getCustomPropertyName(i));
        System.out.println("Custom Property Value : " + dp.get_Item(dp.getCustomPropertyName(i)));
    
        // Modificar valores de las propiedades personalizadas
        dp.set_Item(dp.getCustomPropertyName(i), "New Value " + (i + 1));
    }
    
    // Guardar su presentación en un archivo
    pres.save("CustomDemoModified.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Este ejemplo modifica las propiedades personalizadas de la PPTX presentación. Las siguientes figuras muestran las propiedades personalizadas de la presentación antes y después de la modificación:

Propiedades personalizadas antes de la modificación **
todo:image_alt_text
Propiedades personalizadas después de la modificación **
todo:image_alt_text

Propiedades de documento avanzadas

Los dos nuevos métodos ReadDocumentProperties y UpdateDocumentProperties se han añadido a la interfaz IPresentationInfo. Proporcionan acceso rápido a las propiedades del documento y permiten cambiar y actualizar las propiedades sin cargar una presentación completa.

El escenario típico de cargar las propiedades, cambiar algún valor y actualizar el documento puede implementarse de la siguiente manera:

// leer la información de la presentación
IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("presentation.pptx");

// obtener las propiedades actuales
IDocumentProperties props = info.readDocumentProperties();

// establecer los nuevos valores de los campos Autor y Título
props.setAuthor("New Author");
props.setTitle("New Title");

// actualizar la presentación con nuevos valores
info.updateDocumentProperties(props);
info.writeBindedPresentation("presentation.pptx");

Existe otra forma de usar las propiedades de una presentación como plantilla para actualizar las propiedades en otras presentaciones:

IPresentationInfo info = PresentationFactory.getInstance().getPresentationInfo("template.pptx");
DocumentProperties template = (DocumentProperties) info.readDocumentProperties();

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

updateByTemplate("doc1.pptx", template);
updateByTemplate("doc2.odp", template);
updateByTemplate("doc3.ppt", template);
private static void updateByTemplate(String path, IDocumentProperties template) 
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

Se puede crear una nueva plantilla desde cero y luego usarla para actualizar múltiples presentaciones:

DocumentProperties template = new DocumentProperties();\

template.setAuthor("Template Author");
template.setTitle("Template Title");
template.setCategory("Template Category");
template.setKeywords("Keyword1, Keyword2, Keyword3");
template.setCompany("Our Company");
template.setComments("Created from template");
template.setContentType("Template Content");
template.setSubject("Template Subject");

updateByTemplate("doc1.pptx", template);
updateByTemplate("doc2.odp", template);
updateByTemplate("doc3.ppt", template);
private static void updateByTemplate(String path, IDocumentProperties template) 
{
    IPresentationInfo toUpdate = PresentationFactory.getInstance().getPresentationInfo(path);
    toUpdate.updateDocumentProperties(template);
    toUpdate.writeBindedPresentation(path);
}

Establecer idioma de revisión

Aspose.Slides proporciona la propiedad LanguageId (expuesta por la clase PortionFormat) para permitir establecer el idioma de revisión de un documento PowerPoint. El idioma de revisión es el idioma para el cual se verifica la ortografía y la gramática en PowerPoint.

Este código Java muestra cómo establecer el idioma de revisión para un PowerPoint: xxx Why is LanguageId missing from Java PortionFormat class?

Presentation pres = new Presentation(pptxFileName);
try {
    AutoShape autoShape = (AutoShape)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
    paragraph.getPortions().clear();

    Portion newPortion = new Portion();

    IFontData font = new FontData("SimSun");
    IPortionFormat portionFormat = newPortion.getPortionFormat();
    portionFormat.setComplexScriptFont(font);
    portionFormat.setEastAsianFont(font);
    portionFormat.setLatinFont(font);

    portionFormat.setLanguageId("zh-CN"); // establecer el Id de un idioma de revisión

    newPortion.setText("1。");
    paragraph.getPortions().add(newPortion);
} finally {
    if (pres != null) pres.dispose();
}

Establecer idioma predeterminado

Este código Java muestra cómo establecer el idioma predeterminado para una presentación completa de PowerPoint:

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");

Presentation pres = new Presentation(loadOptions);
try {
    // Añade una nueva forma rectangular con texto
    IAutoShape shp = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 150, 50);
    shp.getTextFrame().setText("New Text");

    // Comprueba el idioma de la primera porción
    System.out.println(shp.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat().getLanguageId());
} finally {
    if (pres != null) pres.dispose();
}

Ejemplo en vivo

Pruebe la aplicación en línea Aspose.Slides Metadata para ver cómo trabajar con propiedades de documento a través de la API de Aspose.Slides:

View & Edit PowerPoint Metadata

*Preguntas frecuentes

¿Cómo puedo eliminar una propiedad integrada de una presentación?

Las propiedades integradas forman parte integral de la presentación y no pueden eliminarse por completo. Sin embargo, puedes cambiar sus valores o establecerlas en vacío si la propiedad específica lo permite.

¿Qué ocurre si añado una propiedad personalizada que ya existe?

Si añades una propiedad personalizada que ya existe, su valor actual será sobrescrito con el nuevo. No es necesario eliminarla o comprobarla previamente, ya que Aspose.Slides actualiza automáticamente el valor de la propiedad.

¿Puedo acceder a las propiedades de la presentación sin cargarla completamente?

Sí, puedes acceder a las propiedades de la presentación sin cargarla completamente usando el método getPresentationInfo de la clase PresentationFactory. Luego, utiliza el método readDocumentProperties proporcionado por la interfaz IPresentationInfo para leer las propiedades de manera eficiente, ahorrando memoria y mejorando el rendimiento.