2013-11-07 1 views
3

Мне нужно установить связь id объекта Рисование для извлечения изображений из Word с помощью OpenXml. Я видел Replace image in word doc using OpenXML и я использую этот код прямо сейчас:Как получить образ изображения чертежа с OpenXml (MS Word)?

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

отлично работает для обычных изображений, но не работает для Powerpoint слайды, которые хранятся в виде EMF изображений внутри DOCX, потому что EMF Drawing не имеют Blip. Но у них есть ImageParts, как и обычные изображения, и я вижу их. Итак, вопрос в том, как мне найти imageId из чертежа, чтобы получить эти EMP ImageParts? К сожалению, я не могу извлекать изображения другим способом, потому что я пытаюсь внедрить свой код в огромную существующую базу кода, поэтому мне нужно получить его из объекта Drawing.

+1

Не могли бы вы предоставить образец документа? Как презентация powerpoint вставлена ​​в документ слова? Через меню Insert-> Object? – Hans

+0

Да, я сделал это в Word 2010 через Insert-> Object-> Microsoft PowerPoint Slide. Самое странное: вчера он сгенерировал рисунок без блипа один раз, теперь он генерирует совершенно другую вещь: с , которая на самом деле содержит rId, которую я ищу. Теперь я пытаюсь понять, почему и как он генерирует чертеж без всплывающих окон на первом месте ... Вот примеры xml. 1. Рисование с блипом: http://pastebin.com/Qwj9ewLP 2. Рисование без всплеска (причина, по которой я задал вопрос): http://pastebin.com/9vyBJDLh 3. Теперь: http://pastebin.com/JJ3piJi3 – lonelyass

+1

Я посмотрю ваши документы. Дайте мне несколько часов. – Hans

ответ

0

Хорошо, проблема в том, что я искал неправильную вещь. Рисование без следа, которое я видел, было на самом деле графиком (Insert-> Chart), а не слайдом PP. . Вот xml для него: http://pastebin.com/9vyBJDLh Существует отношение диаграммы, указывающее на chart1.xml в/chart/folder. И для диаграммы не создается EMF.

Слайды, вставленные через «Insert-> Object-> Microsoft PowerPoint Slide», имеют совершенно другой формат, они не являются чертежами и должны обрабатываться отдельно: http://pastebin.com/JJ3piJi3 и rId в элементе imageData на самом деле указывает на файл EMF в папке/media/folder ,