c# - 使用 OpenXML SDK 将包含注释的幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿

标签 c# office365 powerpoint openxml openxml-sdk

我正在尝试将幻灯片从一个 PowerPoint 演示文稿复制到另一个演示文稿。我已经使用了下面文章中概述的过程,通常效果很好。

https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/ee361883(v=office.12)?redirectedfrom=MSDN

但是,当要复制的幻灯片包含注释时,复制后生成的演示文稿会损坏。我注意到代码生成了一个新的 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/

相关文章:

office365 - 使用 SharePoint Online Powershell 替代 appregnew.aspx

vba - PowerPoint VBA - 使用宏插入符号

c# - 如何在 PowerPoint 中嵌入 ActiveX 控件

c# - Asp 身份和特定于应用程序的模型

c# - 通过其 pIDL 识别 Windows Shell 特殊文件夹(即获取其 CSIDL)(现在确定 pIDL 是否与 C# 相同)

c# - 如何扩展 NHibernate 以支持更多的数据库?

office365 - 通过 EWS 通过移动关联消息

excel - 获取文件excel的最后修改日期

arrays - 修改现有函数以处理不同维度/结构的数组

c# - 尝试将数据填充到 DataTable 时总是出现异常