3

我需要获取id绘图对象的关系才能使用OpenXml. 我在 word doc 中看到了使用 OpenXML 替换图像,我现在正在使用此代码:

string imageId = "default value";
Blip blipElement = selectedImage.Descendants<Blip>().First();
if (blipElement != null) {
    imageId = blipElement.Embed.Value;
}
document.MainDocumentPart.GetPartById(imageId);

适用于普通图像,但不适用于在 docx 中存储为 EMF 图像的 powerpoint 幻灯片,因为EMF 绘图没有 Blip。但是它们ImageParts就像通常的图像一样,我可以看到它们。所以,问题是,我如何从绘图中找到一个 imageId 来获取那些 EMF ImageParts?不幸的是,我不能以其他方式提取图像,因为我试图将我的代码注入到一个巨大的现有代码库中,所以我需要从绘图对象中获取它。

4

1 回答 1

0

好的,所以问题是我看错了东西。我看到的没有Blip的绘图实际上是一个图表(Insert->Chart),而不是PP幻灯片。这是它的 xml:http : //pastebin.com/9vyBJDLh 它有一个图表关系指向 /charts/ 文件夹中的 chart1.xml。并且没有为图表生成 EMF。

通过“Insert->Object->Microsoft PowerPoint Slide”插入的幻灯片格式完全不同,它们不是图纸,必须单独处理:http: //pastebin.com/JJ3piJi3和 imageData 元素中的 rId 实际上指向下的 EMF 文件/媒体/文件夹。

于 2013-11-08T10:18:22.177 回答