Recuperar y actualizar las propiedades de vista de la presentación en Python mediante Java

Introducción

La vista normal consta de tres regiones de contenido: la diapositiva en sí, una región de contenido lateral y una región de contenido inferior. Las propiedades de la vista normal describen la posición de estas regiones de contenido. Esta información permite a la aplicación guardar su estado de vista en el archivo, de modo que al volver a abrirlo la vista se encuentre en el mismo estado que cuando se guardó por última vez la presentación.

Se ha añadido el método ViewProperties.getNormalViewProperties para proporcionar acceso a las propiedades de vista normal de una presentación.

Se han añadido las clases NormalViewProperties y NormalViewRestoredProperties y la enumeración SplitterBarStateType.

Acerca de NormalViewProperties

Representa las propiedades de la vista normal.

Los métodos getShowOutlineIcons y setShowOutlineIcons indican si la aplicación debe mostrar iconos al visualizar contenido de esquema en cualquiera de las regiones de contenido del modo de vista normal.

Los métodos getSnapVerticalSplitter y setSnapVerticalSplitter indican si el divisor vertical debe ajustarse a un estado minimizado cuando la región lateral es lo suficientemente pequeña.

Los métodos getPreferSingleView y setPreferSingleView indican si el usuario prefiere ver una única región de contenido ocupando toda la ventana en lugar de la vista normal estándar con tres regiones de contenido. Si está activado, la aplicación puede optar por mostrar una de las regiones de contenido en la ventana completa.

Los métodos getVerticalBarState y getHorizontalBarState especifican el estado en el que debe mostrarse la barra divisor horizontal o vertical. Una barra divisor horizontal separa la diapositiva de la región de contenido situada bajo la diapositiva; una barra divisor vertical separa la diapositiva de la región de contenido lateral. Los valores posibles son: SplitterBarStateType.Minimized, SplitterBarStateType.Maximized y SplitterBarStateType.Restored.

Los métodos getRestoredLeft y getRestoredTop especifican el dimensionado de la región superior o lateral de la diapositiva en la vista normal, cuando se aplica el valor SplitterBarStateType.Restored a getVerticalBarState y getHorizontalBarState, respectivamente.

Acerca de la restauración de NormalViewProperties

Especifica el dimensionado de la región de la diapositiva (anchura cuando es hijo de getRestoredTop, altura cuando es hijo de getRestoredLeft) de la vista normal, cuando la región tiene un tamaño restaurado variable (ni minimizado ni maximizado).

El método getDimensionSize especifica el tamaño de la región de la diapositiva (anchura cuando es hijo de getRestoredTop, altura cuando es hijo de getRestoredLeft).

El método getAutoAdjust indica si el tamaño de la región de contenido lateral debe compensar el nuevo tamaño al redimensionar la ventana que contiene la vista dentro de la aplicación.

El ejemplo a continuación muestra cómo acceder a ViewProperties.getNormalViewProperties para una presentación.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, SplitterBarStateType

presentation = Presentation()
try:
    normal_view_properties = presentation.getViewProperties().getNormalViewProperties()
    normal_view_properties.setHorizontalBarState(SplitterBarStateType.Restored)
    normal_view_properties.setVerticalBarState(SplitterBarStateType.Maximized)

    # Restaurar las propiedades de vista de la presentación.
    normal_view_properties.getRestoredTop().setAutoAdjust(True)
    normal_view_properties.getRestoredTop().setDimensionSize(80)
    normal_view_properties.setShowOutlineIcons(True)

    presentation.save("presentation_normal_view_state.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Establecer el valor de zoom predeterminado

Para establecer las propiedades de vista, siga estos pasos:

  1. Crear una instancia de la clase Presentation.
  2. Establecer las View Properties de Presentation.
  3. Guardar la presentación como archivo PPTX.

En el ejemplo a continuación, establecemos el valor de zoom tanto para la vista de diapositiva como para la vista de notas.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    # Establecer las propiedades de vista de la presentación.
    presentation.getViewProperties().getSlideViewProperties().setScale(100)  # Porcentaje de zoom para la vista de diapositiva.
    presentation.getViewProperties().getNotesViewProperties().setScale(100)  # Porcentaje de zoom para la vista de notas.

    presentation.save("Zoom_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Establecer el espaciado de la cuadrícula

Utilice Presentation.getViewProperties para acceder a la configuración de vista a nivel de presentación. Los métodos ViewProperties.getGridSpacing y ViewProperties.setGridSpacing leen o modifican el intervalo de la cuadrícula de edición subyacente. Esta configuración se aplica a toda la presentación, no a una diapositiva individual. El espaciado de la cuadrícula se especifica en puntos, donde 72 puntos equivalen a una pulgada. Utilice un valor positivo, tal como lo requiere la documentación de la API.

El ejemplo siguiente abre un demo.pptx existente, muestra su espaciado de cuadrícula actual, establece un intervalo de un cuarto de pulgada y guarda el resultado.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("demo.pptx")
try:
    grid_spacing = presentation.getViewProperties().getGridSpacing()
    print(f"Current grid spacing: {grid_spacing} points")

    presentation.getViewProperties().setGridSpacing(18.0)
    presentation.save("grid-spacing.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

La cuadrícula es distinta de los drawing guides. El espaciado de la cuadrícula controla un intervalo regular, mientras que las guías de dibujo son líneas de alineación horizontales o verticales posicionadas individualmente. Añadir, mover o borrar guías de dibujo no modifica el espaciado de la cuadrícula.

Tanto la cuadrícula como las guías de dibujo son ayudas de edición. No se renderizan como contenido de diapositiva en PDF, imágenes, SVG o en una presentación de diapositivas. Almacenar el espaciado de la cuadrícula no garantiza que un editor muestre la cuadrícula: su visibilidad también depende de las preferencias del visor o del editor.

Mostrar u ocultar comentarios al abrir una presentación

Utilice Presentation.getViewProperties para acceder a la configuración de vista a nivel de presentación. Utilice ViewProperties.getShowComments y ViewProperties.setShowComments para leer o cambiar la preferencia almacenada sobre si los comentarios deben mostrarse cuando la presentación se abre en PowerPoint u otro editor compatible.

Esta configuración sólo controla la preferencia de vista almacenada. No añade, elimina, edita ni resuelve comentarios. Ocultar los comentarios preserva su contenido, autores, posiciones, respuestas y estados. Consulte Presentation Comments para las operaciones que modifican los propios comentarios.

El ejemplo siguiente requiere un comments.pptx existente que contenga comentarios. Muestra la configuración de visibilidad actual, solicita que los comentarios se oculten y guarda un nuevo PPTX sin eliminar ningún comentario. También utiliza ViewProperties.setLastView con ViewType.SlideView para configurar la vista de edición inicial junto con la visibilidad de los comentarios.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import NullableBool, Presentation, SaveFormat, ViewType

presentation = Presentation("comments.pptx")
try:
    show_comments = presentation.getViewProperties().getShowComments()
    print(f"Current comment visibility: {show_comments}")

    presentation.getViewProperties().setShowComments(NullableBool.False_)
    presentation.getViewProperties().setLastView(ViewType.SlideView)
    presentation.save("comments-hidden.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Esta configuración no determina si los comentarios se incluyen en las exportaciones a PDF, HTML, imagen, notas o folletos. Configure las opciones específicas de exportación por separado.

Preguntas frecuentes

¿Por qué la cuadrícula no es visible después de volver a abrir la presentación?

El archivo almacena el espaciado de la cuadrícula, pero el editor controla si la cuadrícula se muestra. Compruebe la configuración de visibilidad de la cuadrícula en el editor.

¿Eliminar las guías de dibujo cambia el espaciado de la cuadrícula?

No. Las guías de dibujo y el espaciado de la cuadrícula son configuraciones independientes. Eliminar las guías deja sin cambios el intervalo de la cuadrícula almacenado.

¿Puedo establecer diferentes configuraciones de vista para distintas secciones de una presentación?

Las configuraciones de vista se definen a nivel de presentación (Normal View/Slide View), no por sección, por lo que un único conjunto de parámetros se aplica a todo el documento cuando se abre.

¿Puedo predefinir diferentes estados de vista para distintos usuarios?

No. Las configuraciones se almacenan en el archivo y se comparten. Las aplicaciones de visualización pueden respetar las preferencias del usuario, pero el archivo en sí contiene un único conjunto de propiedades de vista.

¿Puedo crear una plantilla con propiedades de vista predefinidas para que las nuevas presentaciones se abran de la misma manera?

Sí. Como las propiedades de vista se almacenan a nivel de presentación, puede incrustarlas en una plantilla y crear nuevos documentos a partir de ella con la misma configuración de vista inicial.