我为 Microsoft PowerPoint 开发了一个自定义插件。我的插件需要将大量二进制数据存储到 PowerPoint 演示文稿中。我将此二进制数据作为 base 64 编码字符串存储到 PowerPoint 演示文稿标签中。我发现,当演示文稿在其标签中包含大量数据(如 10 多兆字节)时,PowerPoint 在保存演示文稿时似乎正在泄漏内存。因此,当多次保存此类演示文稿时,PowerPoint 甚至会耗尽系统内存并崩溃。
我开发了一个非常简单的 C# 插件来隔离问题。创建新演示文稿时,它将 50 兆字节的二进制数据存储到演示文稿中:
private void Application_AfterNewPresentation(PowerPoint.Presentation presentation)
{
int tagLength = 5 * 1000 * 1000;
StringBuilder largeTagValue = new StringBuilder();
largeTagValue.Capacity = tagLength + 2;
for (int i = 0; i < tagLength; i++)
{
largeTagValue.Append("A");
}
largeTagValue.Append("\0");
string largeTagValueString = largeTagValue.ToString();
for (int i = 0; i < 10; i++)
{
presentation.Tags.Add("LARGE_TAG" + i.ToString(), largeTagValueString);
}
}
运行此插件后,我什至可以禁用它以确保它不再执行任何操作。接下来,我多次保存演示文稿,并且每次保存演示文稿时,进程列表中的 PowerPoint 内存使用量都会增加。
完整的源代码和示例演示文稿可在此处获得
有谁知道这是一个 PowerPoint 错误还是有任何解决方法?...
或者,也许还有另一种方法可以将相对大量的数据存储到 PowerPoint 演示文稿中?