Slides.InsertFromFile 未正确插入包含 SVG 图像的幻灯片

Slides.InsertFromFile does not insert correctly slides containing SVG images

提问人:Radoslav Todorov 提问时间:1/4/2019 最后编辑:Martijn PietersRadoslav Todorov 更新时间:7/3/2020 访问量:488

问:

我正在使用程序集在 VSTO-Addin 应用程序中执行演示操作。Microsoft.Office.Interop.PowerPoint

我发现方法:

Slides.InsertFromFile(string FileName, int Index, int SlideStart, int SlideEnd)

当插入的幻灯片包含 SVG 图像时不起作用。

没有例外,但是当在 PowerPoint 中打开演示文稿时,图像会显示一个“红叉”符号,就像图像丢失或缺少链接一样。

此外,我还调查了PowerPoint文件内容(通过将其重命名为.zip)。我发现当我使用互操作方法时,文件夹中没有复制的二进制文件。当我直接从 PowerPoint 插入 SVG 文件时,同一目录包含以下文件: 和\ppt\mediaimage1.pngimage2.svg

所以,我认为 Microsoft 的 API 不能处理这种情况 - 插入带有 SVG 文件的幻灯片。

关于如何进一步发展的任何想法?

使用的版本:

  • Microsoft PowerPoint 365 专业增强版:版本 1812(内部版本 11126.20188)
  • Microsoft Windows:版本 1803(操作系统内部版本 17134.472)
  • Microsoft.Office.Interop.PowerPoint.dll 15.0.0.0 (C#)
VBA Office365 MS-Office 互操作 PowerPoint

评论

0赞 Steve Rindsberg 1/5/2019
“PowerPoint”是一个移动的目标。请提及版本(365、2019、2016 等)和内部版本号。在 Windows PPT 365 内部版本中,使用插入到 PPT 中的 SVG 图标,我无法像调用 activepresentation 一样使用 VBA 重现它。Slides.InsertFromFile(“c:\temp\pptx_with_svg.pptx”,1,1,1) 问题可能是由于特定的 SVG、互操作或您拥有的 PPT 版本造成的。要消除两个变量,请尝试从功能区中插入 SVG 作为图标,然后使用上面的 VBA。
0赞 Radoslav Todorov 1/7/2019
@SteveRindsberg 错误行为不在特定版本或特定映像中。我指出了我当前的版本。根据我以前的经验,Microsoft 在 Microsoft Office 2010 之后增加了对 SVG 的支持。对 SVG 的编程支持是否会在 Interop 库的未来版本中出现?
0赞 Steve Rindsberg 1/8/2019
对不起,我错过了你指出的版本等。我刚刚将我的一台 ProPlus 计算机更新到与您的 Office 版本相同(好吧,我的计算机称自己为 PowerPoint 2016 而不是 365)。我使用上面提到的相同 VBA 再次测试,没有任何问题。我的猜测(仅此而已)是互操作库没有更新;这并不奇怪,因为 SVG 支持最近才添加到 2016/365 中。
0赞 Radoslav Todorov 1/8/2019
@SteveRindsberg我怀疑完全相同 - 互操作程序集没有更新为使用 SVG 功能。但是,我找不到任何信息,何时会发布下一个互操作版本,最重要的是,Microsoft是否承认该问题并希望进行修复。
0赞 Steve Rindsberg 1/9/2019
我正在四处寻找有关此的任何进一步信息,如果发现任何信息,我会回复。同时,我正在考虑可能的解决方法;一种可能是按原样插入幻灯片,然后打开源演示文稿(无窗口),从插入的幻灯片中删除所有图像,然后复制/粘贴Special/As PNG源幻灯片上的任何图像。会涉及一些附加工作,例如在粘贴后将每张图像发送到正确的 Z 顺序。

答: 暂无答案