首页 文章

如何使用OpenXml(MS Word)获取绘图的图像ID?

提问于
浏览
3

我需要获取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 Drawing's don't have Blip . 但他们有 ImageParts 就像通常的图像,我可以看到它们 . 那么,问题是,如何从Drawing中找到imageId来获取EMF ImageParts?不幸的是,我可以尝试将我的代码注入到一个庞大的现有代码库中,因此我需要从Drawing对象中获取它 .

1 回答

  • 0

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

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

相关问题