检索并更新 JavaScript 中的演示文稿视图属性

介绍

普通视图由三个内容区域组成:幻灯片本身、侧边内容区域和底部内容区域。与不同内容区域定位相关的属性。此信息允许应用程序将其视图状态保存到文件中,从而在重新打开时视图保持在上次保存演示文稿时的相同状态。

已添加方法 ViewProperties.getNormalViewProperties 用于访问演示文稿的普通视图属性。

已添加NormalViewProperties、NormalViewRestoredProperties 类及其派生类,以及SplitterBarStateType 枚举。

关于 NormalViewProperties

表示普通视图属性。

方法getShowOutlineIcons和setShowOutlineIcons指定在普通视图模式的任意内容区域显示大纲内容时,应用程序是否应显示图标。

方法getSnapVerticalSplitter和setSnapVerticalSplitter指定当侧边区域足够小且垂直分隔条应是否捕捉到最小化状态。

属性getPreferSingleView和setPreferSingleView指定用户是否更倾向于在整个窗口中只显示单个内容区域,而不是带有三个内容区域的标准普通视图。如果启用,应用程序可能会选择在整个窗口中显示其中一个内容区域。

方法getVerticalBarState和getHorizontalBarState指定水平或垂直分隔条应呈现的状态。水平分隔条将幻灯片与幻灯片下方的内容区域分开,垂直分隔条将幻灯片与侧边内容区域分开。可能的值有:SplitterBarStateType.Minimized、SplitterBarStateType.Maximized和SplitterBarStateType.Restored。

方法getRestoredLeft和getRestoredTop指定在对getVerticalBarState和getHorizontalBarState分别应用SplitterBarStateType.Restored值时,普通视图的顶部或侧边幻灯片区域的尺寸。

关于 Restoring NormalViewProperties

指定普通视图中幻灯片区域的尺寸(作为getRestoredTop的子项时为宽度,作为getRestoredLeft的子项时为高度),当该区域处于可变的已恢复大小(既非最小化也非最大化)时。

方法getDimensionSize指定幻灯片区域的大小(作为 restoredTop 的子项时为宽度,作为 restoredLeft 的子项时为高度)。

方法getAutoAdjust指定在调整包含视图的窗口大小时,侧边内容区域的尺寸是否应补偿新的大小。

下面的示例展示了如何访问演示文稿的ViewProperties.getNormalViewProperties属性。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var pres = new aspose.slides.Presentation();
try {
    pres.getViewProperties().getNormalViewProperties().setHorizontalBarState(aspose.slides.SplitterBarStateType.Restored);
    pres.getViewProperties().getNormalViewProperties().setVerticalBarState(aspose.slides.SplitterBarStateType.Maximized);

    // 恢复演示文稿的视图属性
    pres.getViewProperties().getNormalViewProperties().getRestoredTop().setAutoAdjust(true);
    pres.getViewProperties().getNormalViewProperties().getRestoredTop().setDimensionSize(80);
    pres.getViewProperties().getNormalViewProperties().setShowOutlineIcons(true);
    pres.save("presentation_normal_view_state.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    pres.dispose();
}

设置默认缩放值

设置视图属性请按以下步骤操作:

  1. 创建一个Presentation类的实例。
  2. 为Presentation设置视图属性。
  3. 将演示文稿写入为PPTX文件。
    在下面的示例中,我们已为幻灯片视图以及备注视图设置了缩放值。
var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation();
try {
    // 设置演示文稿的视图属性
    presentation.getViewProperties().getSlideViewProperties().setScale(100); // 幻灯片视图的缩放值(百分比)
    presentation.getViewProperties().getNotesViewProperties().setScale(100); // 备注视图的缩放值(百分比)
    presentation.save("Zoom_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

设置网格间距

使用Presentation.getViewProperties访问全局视图设置。ViewProperties.getGridSpacing和ViewProperties.setGridSpacing方法读取或更改底层编辑网格的间隔。此设置适用于整个演示文稿,而不是单个幻灯片。网格间距以点为单位,72 点等于一英寸。请使用正值,这符合 API 文档的要求。

以下示例打开现有的 demo.pptx,打印当前网格间距,将间隔设置为四分之一英寸,并保存结果。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");

var presentation = new aspose.slides.Presentation("demo.pptx");
try {
    var gridSpacing = presentation.getViewProperties().getGridSpacing();
    console.log("Current grid spacing: " + gridSpacing + " points");

    presentation.getViewProperties().setGridSpacing(18);
    presentation.save("grid-spacing.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

网格不同于绘图指南。网格间距控制规则的间隔,而绘图指南是单独定位的水平或垂直对齐线。添加、移动或清除绘图指南不会改变网格间距。

网格和绘图指南均为编辑辅助工具。它们不会在 PDF、图像、SVG 或放映中作为幻灯片内容呈现。存储网格间距并不保证编辑器会显示网格:其可见性还取决于查看器或编辑器的偏好设置。

打开演示文稿时显示或隐藏批注

使用Presentation.getViewProperties访问全局视图设置。使用ViewProperties.getShowComments和ViewProperties.setShowComments读取或更改存储的首选项,以决定在 PowerPoint 或其他兼容编辑器打开演示文稿时是否显示批注。

此设置仅控制存储的视图首选项。它不添加、删除、编辑或解决批注。隐藏批注会保留其内容、作者、位置、回复和状态。有关更改批注本身的操作,请参阅演示文稿批注。

下面的示例需要一个包含批注的现有 comments.pptx。它打印当前的可见性设置,要求隐藏批注,并在不删除任何批注的情况下保存新的 PPTX。示例还使用ViewProperties.setLastView与ViewType.SlideView一起配置初始编辑视图以及批注可见性。

var aspose = aspose || {};
aspose.slides = require("aspose.slides.via.java");
const java = require("java");

var presentation = new aspose.slides.Presentation("comments.pptx");
try {
    var showComments = presentation.getViewProperties().getShowComments();
    console.log("Current comment visibility: " + showComments);

    var hideComments = java.newByte(aspose.slides.NullableBool.False);
    presentation.getViewProperties().setShowComments(hideComments);
    presentation.getViewProperties().setLastView(aspose.slides.ViewType.SlideView);
    presentation.save("comments-hidden.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

此设置不决定批注是否会包含在 PDF、HTML、图像、备注或讲义导出中。请分别配置相关的导出特定选项。

常见问题解答

重新打开演示文稿后网格为何不可见?

文件会存储网格间距,但编辑器控制是否显示网格。请检查编辑器的网格可见性设置。

清除绘图指南会改变网格间距吗?

不会。绘图指南和网格间距是相互独立的设置。清除指南不会改变已存储的网格间隔。

我可以为演示文稿的不同章节设置不同的视图设置吗?

视图设置在演示文稿级别定义(普通视图、幻灯片视图),而不是按章节,因此在打开文档时整个文档只会使用一套参数。

我可以为不同用户预定义不同的视图状态吗?

不能。设置存储在文件中并且是共享的。查看器应用程序可以遵循用户偏好,但文件本身只包含一套视图属性。

我可以准备一个带有预定义视图属性的模板,使新演示文稿以相同方式打开吗?

可以。由于视图属性存储在演示文稿级别,您可以将其嵌入模板,并基于该模板创建新文档,以获得相同的初始视图配置。