我正在尝试使用 Aspose.Slides 修改演示文稿文件。
var fileMemoryStream = new MemoryStream();
await fileMemoryStream.WriteAsync(file.FileData, 0, file.FileData.Length);
Presentation pres = new Presentation(fileMemoryStream);
IDocumentProperties pptProperties = pres.DocumentProperties;
pptProperties.Title = "test";
pres.Save(fileMemoryStream, Aspose.Slides.Export.SaveFormat.Pptx);
fileMemoryStream.Position = 0;
fileData = fileMemoryStream.ToArray();
var contentType = fileProperties.MimeTypes.ContainsKey(file.Extension) ? fileProperties.MimeTypes[file.Extension]: "application"+file.Extension.Replace(".", "/");
var fileConvert = File(fileData, contentType, exemplarFile.DownloadName + file.Extension);
如果我注释掉 pres.Save 行,该文件就可以工作。如果不这样做,它就不会打开,并且我会看到下面的消息。
“Powerpoint 发现 path.pptx 中的内容存在问题。Powerpoint 可以尝试修复演示文稿。”
如果我注释掉 pptProperties.Title = "test";,它不起作用。一开始将 fileMemoryStream 设置为零是行不通的。我肯定错过了 Aspose 进程或内存流进程中的一个步骤。有什么想法吗?
注意:被测试的文件是pptx文件且Mimetype正确
application/vnd.openxmlformats-officedocument.presentationml.presentation
我不确定发生了什么,但是将 pres 保存到新的 MemoryStream 而不是当前的 MemoryStream 是有效的。
如果有人知道为什么会这样,请随意发帖,但这就是解决这个问题的方法。
可以分享示例代码吗,我也面临同样的问题