在 Python via Java 中检索和更新演示文稿视图属性
介绍
普通视图由三个内容区域组成:幻灯片本身、侧边内容区域和底部内容区域。普通视图属性描述这些内容区域的位置。此信息允许应用程序将视图状态保存到文件中,以便在重新打开时视图保持为上次保存时的状态。
已添加方法 ViewProperties.getNormalViewProperties 以提供对演示文稿普通视图属性的访问。
已添加 NormalViewProperties 和 NormalViewRestoredProperties 类以及 SplitterBarStateType 枚举。
关于 NormalViewProperties
表示普通视图属性。
方法 getShowOutlineIcons 和 setShowOutlineIcons 指定在普通视图模式的任意内容区域显示大纲内容时,应用程序是否应显示图标。
方法 getSnapVerticalSplitter 和 setSnapVerticalSplitter 指定当侧边区域足够小时时,垂直分割条是否应捕捉到最小化状态。
方法 getPreferSingleView 和 setPreferSingleView 指定用户是否更倾向于在整个窗口中只显示单个内容区域,而不是包含三个内容区域的标准普通视图。如果启用,应用程序可以选择将其中一个内容区域显示在整个窗口中。
方法 getVerticalBarState 和 getHorizontalBarState 指定水平或垂直分割条应显示的状态。水平分割条将幻灯片与幻灯片下方的内容区域分隔;垂直分割条将幻灯片与侧边内容区域分隔。可能的取值有: SplitterBarStateType.Minimized、SplitterBarStateType.Maximized 和 SplitterBarStateType.Restored。
方法 getRestoredLeft 和 getRestoredTop 指定在将 SplitterBarStateType.Restored 值应用于 getVerticalBarState 和 getHorizontalBarState 时,普通视图的侧边或顶部幻灯片区域的大小。
关于恢复 NormalViewProperties
指定普通视图的幻灯片区域(当作为 getRestoredTop 的子项时为宽度,作为 getRestoredLeft 的子项时为高度)的大小,当该区域处于可变的恢复大小(既非最小化也非最大化)时。
方法 getDimensionSize 指定幻灯片区域的尺寸(作为 getRestoredTop 的子项时为宽度,作为 getRestoredLeft 的子项时为高度)。
方法 getAutoAdjust 指定在调整包含视图的窗口大小时,侧边内容区域的大小是否应随之补偿。
下面的示例展示了如何访问演示文稿的 ViewProperties.getNormalViewProperties。
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)
# 恢复演示文稿的视图属性。
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()
设置默认缩放值
Note
Aspose.Slides for Python via Java 支持设置默认缩放值,以便在打开演示文稿时已应用该缩放。可以通过设置演示文稿的 ViewProperties 来实现。可以以编程方式配置 getSlideViewProperties 和 getNotesViewProperties。在本主题中,我们将通过示例演示如何在 Aspose.Slides 中为 Presentation 设置 View Properties。设置视图属性,请按以下步骤操作:
- 创建 Presentation 类的实例。
- 为 Presentation 设置 View Properties。
- 将演示文稿写入 PPTX 文件。
下面的示例为幻灯片视图和备注视图都设置了缩放值。
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
# 设置演示文稿的视图属性。
presentation.getViewProperties().getSlideViewProperties().setScale(100) # 幻灯片视图的缩放百分比。
presentation.getViewProperties().getNotesViewProperties().setScale(100) # 备注视图的缩放百分比。
presentation.save("Zoom_out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
设置网格间距
使用 Presentation.getViewProperties 访问整个演示文稿的视图设置。方法 ViewProperties.getGridSpacing 和 ViewProperties.setGridSpacing 读取或更改底层编辑网格的间隔。此设置适用于整个演示文稿,而不是单个幻灯片。网格间距以点为单位,72 点等于一英寸。请使用正值,符合 API 文档的要求。
下面的示例打开现有的 demo.pptx,打印当前网格间距,设置为四分之一英寸的间隔,并保存结果。
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()
网格与绘图参考线不同。网格间距控制规则的间隔,而绘图参考线是单独定位的水平或垂直对齐线。添加、移动或清除绘图参考线不会改变网格间距。
网格和绘图参考线都是编辑辅助工具。它们不会在 PDF、图像、SVG 或幻灯片放映中作为幻灯片内容渲染。存储网格间距并不保证编辑器会显示网格:其可见性还取决于查看器或编辑器的偏好设置。
打开演示文稿时显示或隐藏批注
使用 Presentation.getViewProperties 访问整个演示文稿的视图设置。使用 ViewProperties.getShowComments 和 ViewProperties.setShowComments 读取或更改存储的首选项,以决定在 PowerPoint 或其他兼容编辑器打开演示文稿时是否显示批注。
此设置仅控制存储的视图偏好。它不会添加、删除、编辑或解决批注。隐藏批注会保留其内容、作者、位置、回复和状态。有关更改批注本身的操作,请参阅 Presentation Comments。
下面的示例需要一个包含批注的现有 comments.pptx。它打印当前的可见性设置,请求隐藏批注,并在不删除任何批注的情况下保存新的 PPTX。它还使用 ViewProperties.setLastView 与 ViewType.SlideView 配合配置初始编辑视图以及批注可见性。
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()
此设置不决定批注是否会包含在 PDF、HTML、图像、备注或讲义的导出中。请分别配置相应的导出特定选项。
常见问题解答
为什么重新打开演示文稿后网格不可见?
文件会存储网格间距,但编辑器控制是否显示网格。请检查编辑器的网格可见性设置。
清除绘图参考线会改变网格间距吗?
不会。绘图参考线和网格间距是独立的设置。清除参考线不会改变已存储的网格间隔。
我可以为演示文稿的不同章节设置不同的视图设置吗?
视图设置 在演示文稿级别定义(普通视图/幻灯片视图),而不是按章节。因此,文档打开时只有一套参数适用于整个文档。
我能预先为不同用户定义不同的视图状态吗?
不能。设置存储在文件中并且是共享的。查看器应用程序可以遵循用户偏好,但文件本身只包含一套视图属性。
我可以准备一个模板,预定义视图属性,使新演示文稿以相同方式打开吗?
可以。因为视图属性存储在演示文稿级别,你可以将它们嵌入模板中,从而使用该模板创建的新文档具有相同的初始视图配置。