我正在尝试将幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿。我已经使用了下面文章中概述的过程,通常效果很好。
但是,当要复制的幻灯片包含注释时,复制后生成的演示文稿会损坏。我注意到代码生成了一个新的 notesMaster
,该新的 notesMaster
未添加到presentation.xml 中的 notesMasterIdLst
中,并且怀疑这可能是问题所在。但是,我无法将新的笔记母版添加到演示文稿中,因为演示文稿只能有一个 notesMaster
。
最佳答案
根据Microsoft Documentation ,Open XML SDK是这样定义的:
The Open XML SDK 2.5 simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package. The Open XML SDK 2.5 encapsulates many common tasks that developers perform on Open XML packages, so that you can perform complex operations with just a few lines of code.
看起来使用 Open XML SDK 解决您的问题并不容易。如果您使用Aspose.Slides for .NET您将复制一张带有注释的幻灯片,如下所示:
var sourceFileName = "example1.pptx";
var targetFileName = "example2.pptx";
var slideIndex = 0;
using (var sourcePresentation = new Presentation(sourceFileName))
using (var targetPresentation = new Presentation(targetFileName))
{
var slide = sourcePresentation.Slides[slideIndex];
targetPresentation.Slides.AddClone(slide);
targetPresentation.Save(targetFileName, SaveFormat.Pptx);
}
您还可以评估Aspose.Slides Cloud用于演示操作。这个基于 REST 的 API 允许您每月进行 150 次免费 API 调用,以进行 API 学习和演示处理。以下代码示例向您展示如何使用 Aspose.Slides Cloud 执行相同操作:
var slidesApi = new SlidesApi("my_client_id", "my_client_key");
var sourceFileName = "example1.pptx";
var targetFileName = "example2.pptx";
var slideIndex = 1;
using (var sourceStream = File.OpenRead(sourceFileName))
slidesApi.UploadFile(sourceFileName, sourceStream);
using (var targetStream = File.OpenRead(targetFileName))
slidesApi.UploadFile(targetFileName, targetStream);
slidesApi.CopySlide(targetFileName, slideIndex, null, sourceFileName);
using (var resultStream = slidesApi.DownloadFile(targetFileName))
using (var fileStream = File.OpenWrite(targetFileName))
resultStream.CopyTo(fileStream);
我在 Aspose 担任支持开发人员。
关于c# - 使用 OpenXML SDK 将包含注释的幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67410465/