与this question类似,我在iPad上打开OpenXML 2.5文档时遇到了问题。经过一些试验和错误后,我找到了这个xml标签:
<覆盖PartName =“/ ppt / presentation.xml”ContentType =“application / vnd.openxmlformats-officedocument.presentationml.presentation.main + xml”/>
需要出现在.pptx文件根目录中的"[Content_Types].xml"
文件中(实际上只是一个zip存档)。然后可以在PC上的PowerPoint(在2010版本上测试)和IOS 7上打开文件。
答案 0 :(得分:0)
这是我用来实际添加必要的xml元素的代码。欢迎施工反馈!在创建演示文稿后调用此方法。
public MemoryStream ApplyOpenXmlFix(MemoryStream input)
{
XNamespace contentTypesNamespace = "http://schemas.openxmlformats.org/package/2006/content-types";
string filename = "[Content_Types].xml";
input.Seek(0, SeekOrigin.Begin);
ZipFile zipArchive = ZipFile.Read(input);
ZipEntry file = zipArchive.Entries.Where(e => e.FileName == filename).Single();
var xmlDocument = XDocument.Load(file.OpenReader());
var newElement = new XElement(
contentTypesNamespace + "Override",
new XAttribute("PartName", "/ppt/presentation.xml"),
new XAttribute("ContentType", "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml"));
xmlDocument.Root.Add(newElement);
MemoryStream updatedDocument = new MemoryStream();
xmlDocument.Save(updatedDocument, SaveOptions.DisableFormatting);
updatedDocument.Seek(0, SeekOrigin.Begin);
zipArchive.UpdateEntry(filename, updatedDocument);
MemoryStream output = new MemoryStream();
zipArchive.Save(output);
return output;
}