提取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++;
}
提取WORD中的所有InlineShape图片并保存成文件的更多相关文章
- Java 提取Word中的文本和图片
本文将介绍通过Java来提取或读取Word文档中文本和图片的方法.这里提取文本和图片包括同时提取文档正文当中以及页眉.页脚中的的文本和图片. 使用工具:Free Spire.Doc for Java ...
- 使用openxml提取word中的文本和图片并转为Html
使用openxml提取word中的文本和图片 使用 openXml 提取 word 中的 Text 和 Drawing 使用 openXml 将 word 中的文本和图片转为Html 使用 openX ...
- C# 提取Word中插入的多媒体文件(视频、音频)
在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word.excel.PDF.PPT.图片.宏文件.文件包等在内的多种文件类型.对文档中已插入的文档对象,也可通过本文中的方法提取出来另存到 ...
- 利用POI抽取word中的图片并保存在文件中
利用POI抽取word中的图片并保存在文件中 poi.apache.org/hwpf/quick-guide.html 1.抽取word doc中的图片 package parse; import j ...
- poi提取docx中的文字和图片
package com.fry.poiDemo.dao; import java.io.File; import java.io.FileInputStream; import java.io.Fil ...
- 如何把Excel中的单元格等对象保存成图片
对于Excel中的很多对象,比如单元格(Cell),图形(shape),图表(chart)等等,有时需要将它们保存成一张图片.就像截图一样. 最近做一个Excel相关的项目,项目中遇到一个很变态的需求 ...
- Java Word中的文本、图片替换功能
Word中的替换功能以查找指定文本然后替换为新的文本,可单个替换或全部替换.以下将要介绍的内容,除常见的以文本替换文本外,还将介绍使用不同对象进行替换的方法,具体可包括: 1. 指定字符串内容替换文本 ...
- Java 在Word中添加多行图片水印
Word中设置水印效果时,不论是文本水印或者是图片水印都只能添加单个文字或者图片到Word页面,效果比较单一,本文通过Java代码示例介绍如何在页面中添加多行图片水印效果,即水印效果以多个图片平铺到页 ...
- C# / VB.NET 在Word中嵌入多媒体(视频、音频)文件
Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...
随机推荐
- mysql时间与日期函数
返回日期相关的 Now() || CURRENT_TIMESTAMP();返回当前时间 to_days(date) 返回日期date是西元0年至今多少天(不计算1582年以前) 转换为天数 date是 ...
- Class类文件的结构
Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,中间没有任何分隔符.Class文件的结构只有两种数据类型:无符号数和表.无符号数以u1.u2. ...
- 由Double类型数据到数据的格式化包java.text
需求:Double类型数据截取操作保留两位小数 解决方案: java.text.DecimalFormat df =new java.text.DecimalFormat("#.00&quo ...
- MEF学习笔记
之前公司里用到了一个叫MEF的东西,说来惭愧一直只管写代码却不曾理解MEF框架为何物,今天就来学习一下,这是一篇迟到了不知多久的博客. -------------------------------- ...
- django 的请求处理部分----WSGIHandler 源码分析 django1.5.5
从这里拉开django框架的帷幕..撕开,哈哈 主要涉及的类:django.core.handlers.base.BaseHandler,django.core.handlers.wsgi.WSGIH ...
- HIVE 的MAP/REDUCE
对于 JOIN 操作: Map: 以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合 以 JOIN 之后所关心的列作为 Value,当有多个列时,Value 是这些列 ...
- 查看uCOS-II的CPU使用率
代码模板: void main(void) { OSInit(); /* 安装uCOS-II的任务切换向量 */ /* 创建用户起始任务TaskStart */ OSStart(); } void T ...
- extern "C"的作用
一.概述 在C语言的头文件中,经常可以看到如下的代码,那这个是什么作用呢? #ifdef __cplusplus extern "C" { #endif /*...*/ #ifde ...
- UI表单
Monk.UI表单美化插件诞生记! 阅读目录 背景 预览效果 表单组件 普通文本框 多行文本框 复选框 切换滑块 单选框 下拉选择框 数字输入框 时间选择 文件选择 显示文本 按钮 开源地址 背景 ...
- Javascript 5种方法实现过滤删除前后所有空格
第一种:循环检查替换 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s ...