一种提取PPT文档中的图片的方法及系统技术方案

技术编号:19691854 阅读:48 留言:0更新日期:2018-12-08 11:11
本发明专利技术实施例包括一种提取PPT文档中的图片的方法,包括以下步骤:打开Pictures数据流,获取数据流的操作句柄;读取数据流信息,获取Pictures流的总长度;循环读取图片数据;定位当前图片,将当前图片数据写入图片文件,提取图片。还包括一种提取PPT文档中的图片的系统。本发明专利技术不依赖Office Word组件,无需安装Office或者提取Office组件文件,纯粹调用的Windows系统API函数,不依赖任何第三方程序文件,因此,所有异常处理不受Office组件设置影响,不会因异常情况弹框而卡住程序,兼容性高。

【技术实现步骤摘要】
一种提取PPT文档中的图片的方法及系统
本专利技术涉及图片提取
,具体地说是一种提取PPT文档中的图片的方法及系统。
技术介绍
MicrosoftOfficePowerPoint,是微软公司的演示文稿软件,功能强大,应用广泛。在当今信息化时代中,随着应用水平的逐步提高,PPT正成为人们工作生活中的重要组成部分,在各行各业中占据着举足轻重的地位。该软件编辑的文档称之为演示文稿,支持对文字、图片、图标、动画、声音、影片的编辑和存储,其格式后缀通常为ppt、pptx。当一个ppt文件中含有较多图片,并且需要将这些图片提取或者复制出来的时候,常见有以下几种方式:方式一:右键菜单选择复制、粘贴图片;方式二:文档另存为html格式后,找出图片文件;方式三:编写程序调用MicrosoftOffice二次开发接口解析文档,提取图片。以上几种方式存在以下缺点:1)方式一、方式二为纯粹手动操作,无法批量文件处理,且操作较为繁琐,效率低。2)方式二通过程序虽然能批量处理,但因调用PowerPoint二次开发接口(通过COM方式调用),因此受限于Office软件环境。必须在计算机操作系统中安装对应版本的PowerPoint软件,或者将相关组件和提取程序打包一起才能正常运行。且容易因软件设置出现兼容性问题,如程序异常弹框、处理线程卡住等情况。
技术实现思路
本专利技术实施例中提供了一种提取PPT文档中的图片的方法及系统,用于解决目前提取PPT文档中的图片操作繁琐,受限于Office软件环境,容易出现兼容性的问题。为了解决上述技术问题,本专利技术实施例公开了如下技术方案:本专利技术第一方面提供了一种提取PPT文档中的图片的方法,包括以下步骤:打开Pictures数据流,获取数据流的操作句柄;读取数据流信息,获取Pictures流的总长度;循环读取图片数据;定位当前图片,将当前图片数据写入图片文件,提取图片。结合第一方面,在第一方面第一种可能的实现方式中,所述Pictures流的总长度为PPT文档中所有图片数据的总长度。结合第一方面,在第一方面第二种可能的实现方式中,所述循环读取图片数据包括:首先读取一个固定长度的数据结构OfficeArtRecordHeader,直到读取到到达流后,再读取另一个固定长度的数据结构OfficeArtRecordHeader依次循环读取。结合第一方面,在第一方面第三种可能的实现方式中,所述数据结构OfficeArtRecordHeader固定为8个字节;前两个字节代表图片的版本信息,其中高12位代表图片数据的偏移方式,第3、4两个字节代表图片的类型,最后4个字节代表该图片数据的所有长度。结合第一方面,在第一方面第四种可能的实现方式中,定位当前图片的方法包括采用数据偏移算法,具体包括:判断图片数据中是否存在OfficeArtFBSE,如果存在,则从当前OfficeArtRecordHeader结构数据最后一个字节,往数据未读取的方向偏移34个字节;判断图片的名称长度是否大于0,如果是,则需要跳过名称长度,读取下一个OfficeArtRecordHeader;如果名称长度为0,直接读取下一个OfficeArtRecordHeader;如果不存在OfficeArtFBSE,则执行以下步骤:当图片数据的属性值为0x46a或0x6e2或0x6e0时,从数据结构OfficeArtRecordHeader的最后一个字节往数据未读取的方向偏移17个字节;当图片数据的属性值为0x46b或0x6e3或0x6e1时,从数据结构OfficeArtRecordHeader的最后一个字节往数据未读取的方向偏移33个字节。结合第一方面,在第一方面第五种可能的实现方式中,判断图片数据中是否存在OfficeArtFBSE的方法包括,判断图片的类型值是否为0xF007,如果是,则表示存在OfficeArtFBSE,否则,不存在;所述图片的名称长度用占一个字节大小的无符号整数表示,该字节位于数据未读取的方向的第34个字节。结合第一方面,在第一方面第六种可能的实现方式中,写入文件具体包括以下方法:读取当前图片的所有数据,将数据写入到后缀为.jpg或.png的图片文件中。结合第一方面,在第一方面第七种可能的实现方式中,方法还包括判断图片数据是否读取完毕,如果没有读取完毕,则继续循环读取。本专利技术第二方面提供了一种提取PPT文档中的图片的系统,包括数据读取模块,用于循环读取数据流信息;和,图片数据定位模块,根据偏移算法,定位当前图片数据;和,数据提取模块,根据定位到的图片数据进行当前图片数据的提取。结合第二方面,在第二方面第一种可能的实现方式中,还包括判断模块,用于判断图片数据读取是否完毕。本专利技术第二方面的所述系统能够实现第一方面及第一方面的各实现方式中的方法,并取得相同的效果。由以上技术方案可见,本专利技术通过提取图片的数据流,分析二进制格式并实现提取图片文件。本专利技术不依赖OfficeWord组件,无需安装Office或者提取Office组件文件,纯粹调用的Windows系统API函数,不依赖任何第三方程序文件,因此,所有异常处理不受Office组件设置影响,不会因异常情况弹框而卡住程序,兼容性高。本专利技术采用二进制读取文件,并进行精确定位处理,执行效率显著提高。可同时处理不同ppt文件中的所有图片,效率高。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为一种提取PPT文档中的图片的方法流程示意图;图2为本专利技术实施例所应用的定位当前图片的方法流程示意图;图3为本专利技术实施例所应用的一种提取PPT文档中的图片的系统的结构示意图。具体实施方式为了使本
的人员更好地理解本专利技术中的技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。PPT文档中的图片类型是指在文档中存储的特定类型,而非对应实际图片文件类型,因为pigdib,gif,bmp,tiff等格式图片导入到ppt文档中,是按照同一种类型存储的。常见图片类型如下表所示:图片类型代表文件格式类型值(16进制)OfficeArtBlipJPEG1jpeg0xF01DOfficeArtBlipPNGpigdib,gif,bmp,tiff0xF01EOfficeArtBlipJPEG2jpeg0xF02AOfficeArtFBSE图片附加信息0xF007如图1所示,一种提取PPT文档中的图片的方法,包括以下步骤:S1、打开Pictures数据流,获取数据流的操作句柄;如果Pictures流打开失败,则代表该文档中不存在图片数据。S2、读取数据流信息,获取Pictures流的总长度;Pictures流的总长度为PPT文档中所有图片数据的总长度。S3、循环读取图片数据。S4、定位当前图片,将当前图片数据写入图片文件本文档来自技高网
...

【技术保护点】
1.一种提取PPT文档中的图片的方法,其特征是,包括以下步骤:打开Pictures数据流,获取数据流的操作句柄;读取数据流信息,获取Pictures流的总长度;循环读取图片数据;定位当前图片,将当前图片数据写入图片文件,提取图片。

【技术特征摘要】
1.一种提取PPT文档中的图片的方法,其特征是,包括以下步骤:打开Pictures数据流,获取数据流的操作句柄;读取数据流信息,获取Pictures流的总长度;循环读取图片数据;定位当前图片,将当前图片数据写入图片文件,提取图片。2.根据权利要求1所述的方法,其特征是,所述Pictures流的总长度为PPT文档中所有图片数据的总长度。3.根据权利要求1所述的方法,其特征是,所述循环读取图片数据包括:首先读取一个固定长度的数据结构OfficeArtRecordHeader,直到读取到到达流后,再读取另一个固定长度的数据结构OfficeArtRecordHeader依次循环读取。4.根据权利要求3所述的方法,其特征是,所述数据结构OfficeArtRecordHeader固定为8个字节;前两个字节代表图片的版本信息,其中高12位代表图片数据的偏移方式,第3、4两个字节代表图片的类型,最后4个字节代表该图片数据的所有长度。5.根据权利要求4所述的方法,其特征是,定位当前图片的方法包括采用数据偏移算法,具体包括:判断图片数据中是否存在OfficeArtFBSE,如果存在,则从当前OfficeArtRecordHeader结构数据最后一个字节,往数据未读取的方向偏移34个字节;判断图片的名称长度是否大于0,如果是,则需要跳过名称长度,读取下一个OfficeArtRecordHeader;如果名称长度为0,直接读取下一个OfficeArtRecor...

【专利技术属性】
技术研发人员:李显程王金国崔新安
申请(专利权)人:山东中孚安全技术有限公司中孚信息股份有限公司北京中孚泰和科技发展股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1