Редактирование изображений Word в автофигурах с помощью C # - PullRequest
1 голос
/ 02 февраля 2011

Хорошо, это на какое-то время поставило меня в тупик - один из наших клиентов хотел бы заменить все свои изображения в списке текстового документа. Поиск изображений сам по себе хорош, например, с кодом:

    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)
{
...
}

Однако, как только я идентифицирую автофигуру, я не могу определить, как найти информацию о вложенном изображении.

Кто-нибудь знает, как мне поступить?

1 Ответ

1 голос
/ 02 февраля 2011

У вас либо сгруппированное изображение, в этом случае вы должны рекурсивно пролистать GroupItems, либо встроенное изображение внутри текстового поля, и в этом случае вы должны заглянуть внутрь TextFrame.TextRange.ShapeRange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...