• 提取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<InlineShape> allShape;    //用InlineShape类型保存图片 
    List<Image> 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++; 
    }

  • 相关阅读:
    LOJ.2721.[NOI2018]屠龙勇士(扩展CRT 扩展欧几里得)
    Codeforces.959E.Mahmoud and Ehab and the xor-MST(思路)
    BZOJ.3058.四叶草魔杖(Kruskal 状压DP)
    Codeforces.838E.Convex Countour(区间DP)
    Codeforces.838D.Airplane Arrangements(思路)
    Codeforces.997C.Sky Full of Stars(容斥 计数)
    Codeforces.786B.Legacy(线段树优化建图 最短路Dijkstra)
    BZOJ.3759.Hungergame(博弈论 线性基)
    LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)
    序列化二叉树
  • 原文地址:https://www.cnblogs.com/Alex80/p/5032222.html
Copyright © 2020-2023  润新知