我需要获取Drawing对象的关系id
以使用OpenXml
从Word中提取图像。我看到Replace image in word doc using 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
就像通常的图像一样,我可以看到它们。所以,问题是,如何从Drawing中找到imageId来获取EMF ImageParts?不幸的是,我无法以其他方式提取图像,因为我试图将我的代码注入到一个庞大的现有代码库中,所以我需要从Drawing对象中获取它。
答案 0 :(得分:0)
好的,问题是我看错了。 我看到的没有Blip的Drawing实际上是一个图表(Insert-&gt; Chart),而不是PP幻灯片。 这是它的xml:http://pastebin.com/9vyBJDLh 它有一个图表关系,指向/ charts /文件夹中的chart1.xml。 并且没有为图表生成EMF。
通过“插入 - >对象 - > Microsoft PowerPoint幻灯片”插入的幻灯片具有完全不同的格式,它们不是绘图,必须单独处理:http://pastebin.com/JJ3piJi3和imageData元素中的rId实际指向EMF文件在/ media /文件夹下。