0

我最近开始深入研究 OpenXML SDK,希望能够自动生成 PowerPoint 演示文稿。我发现整个过程很痛苦,并且在周末和最后两天的大部分时间里都在生成一个库来处理原始 SDK 调用。在生成过程中一切似乎都运行良好,我可以在 Open XML SDK Productivity Tool 中验证代码是否正确。但是,在 PowerPoint 中打开文件会导致出现一个对话框,要求我在打开文件之前修复它。

所有这些代码都是从我在 PowerPoint 中创建的文件中反映的内容中重构的。在生产力工具中对这些包运行差异,我发现我的幻灯片布局(第一个除外)/ppt/slideLayouts/slideLayouts//ppt/slideLayouts/. 我已经三重检查了我的生成代码,它将 SlideLayout 添加到.PresentationPart而不是SlideLayoutPart. 这特别奇怪,因为第一个布局位于正确的位置,而后面的布局则没有。

我通读了 MSDN 文档和 Wouter van Vugt 的 Open XML 电子书。我已经将我的代码与反映的代码进行了比较,它对我来说似乎是正确的(尽管考虑到我对 Open XML 的了解以及 PresentationML 的复杂性,我可能会遗漏很多东西)。有人对这里可能发生的事情有任何见解吗?

4

1 回答 1

2

经过多次尝试和错误,我终于找到了问题所在。对于演示文稿中的每张幻灯片,我都遵循以下步骤:

  • 添加SlidePartPresentationPart
  • 添加SlideLayoutPartSlidePart
  • 添加SlideMasterPartSlideLayoutPart
  • 添加ThemePartSlideMasterPart
  • 如果这是第一次使用幻灯片母版,请向布局添加循环引用

OpenXML SDK 一定有一个错误,因为添加SlideLayoutPart到第SlideMasterPart一个会导致我在问题中概述的路径问题。这就是为什么第一个布局总是正常工作的原因(它首先被添加到幻灯片中)。我现在已经安排了代码,以便前四个项目符号存在于一个循环中,然后另一个循环遍历所有主节点以查找所有关联的布局,并仅链接使用的布局。

没有验证错误,PowerPoint 在第一次尝试时就可以完美打开文件!

于 2014-02-27T03:16:19.140 回答