KB0239:使用 Microsoft 365 时 PowerPoint 文件大小快速增加
问题
最直接可观察到的症状是 PowerPoint 演示文稿的文件大小异常偏大,甚至可能比预期大很多倍。在某些情况下,该问题随后可能导致文件打开、编辑和/或保存非常缓慢,甚至可能完全无法打开。
此问题可能在以下条件下出现:
- 文件现在(或曾经)保存在 SharePoint 位置
- 文件现在(或曾经)通过以下方式加密,例如
- Azure Information Protection
- Microsoft Information Protection
- Microsoft Purview Information Protection
- 访问限制
- 幻灯片或幻灯片上的内容包含 Tags 或 CustomerData 对象(thinkcell 和许多其他加载项会按 Microsoft 的规定使用 Tags 对象)
将受影响的幻灯片或对象复制到其他演示文稿,可能会把该问题引入更多文件,即使它们不符合上述条件。
解决方案
Microsoft 已发布此问题的修复程序,目前可在 Microsoft 365 最新公开已知更新中获得。通过每月企业频道和半年度企业频道提供的较旧版本目前可能仍会受到影响。
受影响版本和已修复版本表如下:
|
版本 |
首个受影响的内部版本 |
修复可用版本: |
|---|---|---|
|
2208 |
15601.20578 |
** |
|
2301 |
16026.20002 |
** |
|
2302 |
* |
16130.20714 |
|
2303 |
* |
** |
|
2304 |
* |
** |
|
2305 |
* |
** |
|
2306 |
* |
16529.20182 |
|
2307 |
* |
16626.20000 |
* - 初始版本中已存在该问题
** - 预计不会提供修复
注意:虽然 Microsoft 的修复可防止问题再次出现,但不会修复已经受影响的文件。不过,有几种可用选项可清理受影响的文件;结合 Microsoft 的修复,应能解决此问题: 阅读更多
PowerPoint 内置的文档检查器可用于从受影响的文件中移除 customXML 数据。如果使用此工具,请确保只使用 Custom XML data 选项。移除其他内容类型可能产生意外后果,包括从文档中移除 thinkcell 功能。
如果您使用的是 thinkcell 12,清理和净化 工具提供了更便捷的方式来访问相同功能。
如果您使用的是未修补版本的 PowerPoint,通过这两种方式之一移除 customXML 数据并不能防止其再次累积,但至少可以暂时“重置”该问题。
如果您的文件损坏严重,导致无法使用 PowerPoint 可靠打开,因此既无法使用文档检查器,也无法使用 thinkcell 的 Clean up 工具,或者受影响文档的数量需要自动化解决方案,请联系 我们的支持团队。我们或许能够提供帮助。
分析
我们的开发人员已对该问题进行了详细分析。在符合上述条件的情况下,打开存储在 SharePoint 上且已加密的文件,可能会导致 PowerPoint 在其代码中调用此函数:
PPT::FileIO::CustomerDataXmlReader::DeSerializeCustomerDataFromEncryptedStorage
此函数是从所列 PowerPoint 版本开始新增的。存储在 SharePoint 上的文件包含某些用于 SharePoint 文件管理的 customXML 数据文件。当调用该代码函数时,整个文档中包含的所有 customXML 文件都会针对每个包含 Tag 或 CustomerData 的幻灯片或对象被复制一份。继续处理受影响的文件,也可能会在正常编辑操作过程中导致这些垃圾数据持续累积。
此问题可以在不使用 thinkcell 的情况下复现。如需详细复现步骤,请点击: 阅读更多
不使用 thinkcell 复现:
- 在 thinkcell 未激活或临时移除的情况下,打开一个没有占位符文本框的新空白 PowerPoint 演示文稿
- 插入一个 PowerPoint 矩形,例如通过 Insert > Illustrations > Shapes
- 打开 VBA 窗口(按 Alt+F11)
-
在 Immediate Window 中(如果未显示,可按 Ctrl+G 激活),输入以下内容,然后按 Enter:
ActivePresentation.Slides(1).Shapes(1).Tags.Add "Test", "Tag" - 关闭 VBA 窗口
- 在 PowerPoint 中,选择该矩形并通过 Ctrl+D 复制 30 次,使总共有 31 个矩形(用更少形状也可以复现,不过文件大小会相应不同)
-
将演示文稿保存到 SharePoint 位置
文档完全同步到 SharePoint 后,大小应约为 54 KB。
- 现在,转到 PowerPoint 功能区的 File 选项卡,并选择 Info > Protect Presentation > Restrict Access > Restricted Access:
- 在出现的“权限”对话框中,勾选 Restrict permission to this presentation 复选框,然后点击 OK:
- 保存文档(例如按 Ctrl+S),然后完全关闭它
- 再次打开该文档
- 再次转到 File > Info > Protect Presentation > Restrict Access,这次选择 Unrestricted Access,以移除访问限制
-
再次保存文档,然后关闭它。
文档本应仍为 54 KB,但大小已增长到约 195 KB。
-
重新打开文档,并重复步骤 8 到 13
文档本应仍为 54 KB,但大小已增长到约 5 MB。
检查文件结构时(例如复制 .pptx 文件,并将副本的文件扩展名改为 .zip,然后解压该归档),可以看到 customXml 子文件夹中包含的 item*.xml 和 itemProps*.xml 文件数量会从同步到 SharePoint 后每种文件类型各 3 个,增加到第一次重复后的各 96 个,以及第二次重复后的各 2979 个。
还有其他步骤和工作流程也可能导致 customXML 数据重复,但这是最直接易于演示且效果最明显的方法。
为什么 thinkcell 会受到影响
thinkcell 不使用 customXML 数据,但会在通过 thinkcell 创建的每个形状或对象中使用 Tags。因此,由 thinkcell 创建的幻灯片可能包含数量特别多的带标签形状,从而因该问题导致 customXML 数据被极快复制。