提取WORD中的所有InlineShape图片并保存成文件

InlineShape表示的类型其实不只是图片,还包括OLE, ACTIVE X等。
下面是MSDN中的定义:Represents an object in the text layer of a document(表示文档中文本层的一个对象)。
可以通过InlineShape的Type属性获得这个对象的具体类型。Type是一个WdInlineShapeType的枚举类型。WdInlineShapeType可以说下面的常数之一:
wdInlineShapeEmbeddedOLEObject  嵌入式OLE对象
wdInlineShapeHorizontalLine              水平线
wdInlineShapeLinkedOLEObject         链接式OLE对象
wdInlineShapeLinkedPicture               链接式图片
wdInlineShapeLinkedPictureHorizontalLine(…)
wdInlineShapeOLEControlObject        OLE控制对象
wdInlineShapeOWSAnchor                OWS锚点
wdInlineShapePicture                         嵌入式图片
wdInlineShapePictureBullet                 图片占位符
wdInlineShapePictureHorizontalLine    (…)
wdInlineShapeScriptAnchor          (…)
设置图片的“版式”为嵌入式那么这个图片在WORD文档中就用InlineShape来表示,而Shape表示的图片格式是其他的版式,处于Drawing层。不过其他的特性基本上是一致的。
 
下面是要用到的一些变量:(初始化部分没有写)
ApplicationClass wordApp;
Document wordDoc;
object missing;
List allShape;    //用InlineShape类型保存图片
List allImage;          //用Image类型保存图片
 
先来看看提取InlineShape的步骤:

1.返回当前文档中所有InlineShapes。如果是嵌入式图片就加入集合中。
InlineShapes insh = le="COLOR: black">wordDoc.InlineShapes;
for (int i = 0; i < insh.Count; i++)
{
if (insh[i].Type == WdInlineShapeType.wdInlineShapePicture)
allShape.Add(insh[i]);
}

2.先选中一个图片,再通过Selection发送到剪贴板,再从剪贴板得到一个图片对象。
Microsoft.Office.Interop.Word.Selection sel;
System.Drawing.Image returnImage = null;
foreach (InlineShape ins in allShape)
{
ins.Select();
sel = wordApp.Selection;
if (sel.Type == WdSelectionType.wdSelectionInlineShape)
{
sel.CopyAsPicture();
if (Clipboard.ContainsImage())
{
returnImage = Clipboard.GetImage();
allImage.Add(returnImage);
}
}
}
 
下面是保存图片到文件中,Image类型的Save方法可以完成这个工作。文件类型可以说JPG,GIF,BMP等。
int i = 0;
foreach (Image im in allImage)
{
im.Save("c://图片" + i.ToString() + ".jpg",ImageFormat.Jpeg);
i++;
}


文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008428/111816_2.html

你可能感兴趣的:(其他,C#,嵌入式,image,文档,object,layer,null)