使用C#在Autoshapes中编辑Word图像

时间:2011-02-02 01:39:08

标签: c# image ms-word

好吧,这让我感到困惑了一段时间 - 我们的一位客户希望将所有图片替换为word文档列表。查找图像本身很好,示例代码如下:

    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 个答案:

答案 0 :(得分:1)

您要么拥有分组图像,在这种情况下,您应该递归浏览GroupItems或文本框内的内嵌图像,在这种情况下,您应该查看TextFrame.TextRange.ShapeRange