Хорошо, это на какое-то время поставило меня в тупик - один из наших клиентов хотел бы заменить все свои изображения в списке текстового документа. Поиск изображений сам по себе хорош, например, с кодом:
Microsoft.Office.Interop.Word.Application wordDoc;
wordDoc = new Microsoft.Office.Interop.Word.Application();
object docName = @"c:\temp\Client.doc";
object objBool = false;
object objBoolTrue = true;
object objNull = System.Reflection.Missing.Value;
Document openDoc = null;
openDoc = wordDoc.Documents.Open(ref docName, ref objBool, ref objBool, ref objBool, ref objNull,ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull, ref objNull);
List<Microsoft.Office.Interop.Word.Range> ranges = new List<Microsoft.Office.Interop.Word.Range>();
foreach (Microsoft.Office.Interop.Word.Shape s in openDoc.Shapes)
{
// do stuff here with comparing and replacing images
}
Однако я заметил, что некоторые изображения не распознаются (независимо от того, где они находятся, это не проблема верхнего или нижнего колонтитула). При дальнейших исследованиях выясняется, что само изображение является не обычным встроенным изображением, а скорее автофигурой.
Поэтому мой код должен также иметь возможность проверять автофигуры в документе и изменять их при необходимости. Однако я не могу определить, как проверить изображение в автофигуре.
Найти сами автофигуры довольно просто:
ranges = new List<Microsoft.Office.Interop.Word.Range>();
foreach (Microsoft.Office.Interop.Word.Shape s in openDoc.Shapes)
{
...
}
Однако, как только я идентифицирую автофигуру, я не могу определить, как найти информацию о вложенном изображении.
Кто-нибудь знает, как мне поступить?