2011-02-02 3 views
1

これは私にとって困っていました。私たちのクライアントの1人は、すべてのイメージをワードドキュメントのリストに置きたいと思っています。次のようにコード例と自体は結構です画像を、見つける: C#を使用してオートシェイプ内の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

グループ化されたイメージがあります。その場合は、GroupItems、またはテキストボックス内のインラインイメージを再帰的にクロールする必要があります。この場合、TextFrame.TextRange.ShapeRangeを調べる必要があります。

+0

多くのお返事をいただきありがとうございます。私はまだ仕事をしていないが、正しい方向に私を指摘してきた。 – Adam

関連する問題