CN102567460B - 一种文档加载中图像异步解码的方法 - Google Patents
一种文档加载中图像异步解码的方法 Download PDFInfo
- Publication number
- CN102567460B CN102567460B CN201110372927.4A CN201110372927A CN102567460B CN 102567460 B CN102567460 B CN 102567460B CN 201110372927 A CN201110372927 A CN 201110372927A CN 102567460 B CN102567460 B CN 102567460B
- Authority
- CN
- China
- Prior art keywords
- file
- image
- document
- data
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文档加载中图像异步解码的方法,该方法在二进制流式文档加载中,对数据流中图像对象的内容数据不进行解码处理,将内容数据保存成相应格式的图片文件存储在计算机硬盘的临时目录中,在对象显示等需要对内容进行解码时,再调用解码程序进行解码。本发明的方法具有通用性,解决了二进制流式文档加载中图像解码占用时间比例大的问题,提高了文档的加载和显示速度。
Description
技术领域
本发明涉及办公软件文档加载中图像异步解码的方法,尤其是针对二进制流式文档格式。
背景技术
在办公软件领域,微软公司的Office办公套件,无疑是行业中的翘楚。其所采用的文档格式也就成为行业中默认的标准格式。不论国内国外,每个试图开发办公软件的公司,都要必须支持微软公司所制定的文档格式,在此基础上才有可能在办公软件领域中占有一席之地。
在Office2007推出之前,Office三大模块之一的Word都采用的是二进制流式存储方式,生成的文件后缀名为doc。微软公司为此对外提供了Word二进制流式存储的定义规范,其定义了doc文件的组织方式、不同对象的各种参数及存储位置等等。通过查阅该定义规范,任何人都可以实现支持doc文档的加载、修改及保存等功能。
作为doc文档中的一个非常重要的元素,微软对图像对象定义了非常多的参数来描述其在doc文档中的信息。总体来说,doc文档中的图像对象主要由两大部分进行描述:图像本身的数据内容;对象在文档中的位置信息等参数。根据编码及存储方式的不同,图像有诸如JPEG、BMP、WMF、TIFF等多种类型的文件格式。事实上,doc文档中,图像的数据内容也是按照不同文件格式的存储方式进行存储的。
对图像对象的解码也就是对这两大部分进行分别处理。首先,根据定义规范从数据流中相应的位置读取出位置信息等参数,存储在软件自定义的数据结构中;其次,根据图像的文件格式,调用对应的文件解码模块对数据进行解码,依然将解码的内容存储在软件自定义的数据结构中。
目前的办公软件,在加载doc文档时,对图像对象依然是将位置对象参数及图像数据依次进行解码,填充到对应的数据结构中,然后再进行下一步的工作。但是,这样做的结果是文档解析时间过长,尤其是含有很多图像对象的文档,通过性能分析工具也能够发现,图像数据的解码在整个文档解析中占有很大的比重。如何通过优化图像对象加载的流程来提高文档加载的效率和速度,理所当然就是一个需要研究的内容。
发明内容
为了能够提高文档加载的效率和速度,本发明对图像对象加载的流程进行了优化,通过对图像数据在加载时不进行解码,而在需要诸如显示、文档修改等需要使用图像数据的情况下再进行解码,实现图像数据的异步加载,从而优化了加载流程,提高了文档的加载速度。
为了实现上述目的,本发明包括如下步骤:
1)将图像数据生成相应的图像文件,保存在本地计算机某个目录中;
2)在文件显示、保存等需要调用图像对象时,对相对应的图像文件进行解析。
其中,步骤(1)在doc文档现有的数据结构中添加一个名为“FileName”的字符串变量,用来保存对应的图像文件所在的目录和文件名称。在对doc文档数据流解析时,当解析到图像对象时,先按照原始流程对对象参数进行解析,保存到数据结构中对应的位置中。当解析到数据内容时,根据不同的文件格式,生成相应的文件并将数据内容写入到文件中,将该文件保存在指定的本地计算机某个目录中。同时,将保存文件的目录及文件名写入到数据结构中的“FileName”变量中。
对doc文档数据流中所有的图像对象,都进行上述的操作,直至整个doc文档被全部加载完毕。
文档加载完毕后,办公软件就会显示文档内容,用户也可以对文档进行诸如修改、插入、删除、保存等任何操作。当这些操作涉及到图像对象时,步骤(2)根据保存在图像对象数据结构中图像文件的文件类型,调用对应的解码程序对该文件进行解码,将得到的图像数据存储在数据结构中相应的位置,同时将保存在计算机中的图像文件永久删除。其中,步骤(2)包括:
(21)如果该图像对象数据结构中的“FileName”变量不为空值(NULL),则将“FileName”中存储的图像文件进行解码,解码后的数据保存到数据结构中相应的位置中;如果“FileName”变量为空值(NULL),则不进行任何操作;
(22)永久删除计算机中对应的图像文件,并将“FileName”变量置为空值(NULL)。
这样,该图像对象就和未采用本发明时所使用的图像对象完全一致,对其的任何操作都可以正常进行,不会有任何的不同。
此外,当关闭文档时,有可能会有一些图像对象从未被使用,则其在文档生命周期内并不需要解码。这种情况下,“FileName”变量不为空值(NULL),保存在计算机中对应的图像文件依然存在。此时,应在文档关闭操作删除图像对象数据结构时,永久删除计算机中对应的图像文件。
本发明与现有技术相比,通过对图像对象数据的异步解析,能够减少用户等待文档加载完毕的时间,使得文档内容能够更快的显示,提升了用户的体验。在某些情况下,还可以降低加载文档所占用的内存。本发明在低配置、低效能的计算机上,对性能和速度的提升表现的尤为突出。
附图说明
图1为本发明文档中图像对象的加载流程;
图2为本发明图像对象中图像数据的解码流程。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
为使本发明的特征及优点得到更清楚的了解,以下结合附图,以打开一个微软doc文档为例,作详细说明如下。其中,该doc文档有两页内容,第一页有一个JPG格式的图像对象而第二页有一个PNG格式的图像对象。
办公软件定义一个名为Graphic的类来存储图像对象相关信息,其有一个类型为ImpGraphic的对象。ImpGraphic对象中存在一个BitmapEx对象用来存放解码图像数据内容后生成的位图数据。
为了实现本发明,如图1所示,首先,在Graphic类中,增加一个INetURLObject类型的对象,命名为mTempFileURL。并在Graphic类的构造函数中将其初始化为空值:mTempFileURL.SetName(String())。
在进入文档加载流程解析到图像对象时,先利用已有的方式将图像参数写入到数据结构中对应的位置中。在本实例中,从第一个图像数据中得知图像对象存储的是一个JPG格式的图像。因此,根据事先定义好的命名规则生成一个后缀名为JPG的图像文件,使用对数据流的操作方式,将doc文档数据流相应的内容写入到该JPG文件中生成一个具体的图像文件;当然也可以按照JPG文件的标准定义格式自行编写生成图像文件的代码来实现此功能。
其中,在本实例中,文件的命名规则按照如下方式定义:
1、在生成图像文件的函数中定义一个static类型的整数变量nCount,其初始值为0;
2、定义一个字符串常量sImageName,将其赋值为“CS2C”;
3、处理到第一个图像对象时,利用办公软件现有的对字符串处理的方式将nCount和SImageName组成一个新的字符串变量sFileName,使其成为“CS2C0”;
4、每处理一个图像对象,nCount都加1,再重复第3步的操作。
这样,通过此命名规则,就可以保证不论文档中有多少图像对象,都不会发生新生成文件的文件名和已有文件发生重复的现象。
此外,本发明还要确定生成的图像文件保存的位置。该位置可以随意指定,但应能保证图像文件在使用前不会被修改、删除等,如在软件安装目录下增加一个隐藏目录,将所有生成的图像文件放置在此目录下。本实例中,将所生成的图像文件保存在操作系统的“Documents andSettings”目录中,安装办公软件时所生成的目录中。具体的位置可例如为下:
C:\Documents and Settings\Administrator\ApplicationData\NeoShineOffice\5\user\template
将此位置信息保存在一个名为sPathName的字符串常量中,通过增加“\”字符并利用办公软件对字符串的操作方式将sPathName和sFileName组合得到一个新的字符串,将其赋值给mTempFileURL变量。在本实例中,对于第一个图像对象,得到的mTempFileURL变量所存储的内容则例如为:C:\Documents and Settings\Administrator\ApplicationData\NeoShineOffice\5\user\template\CS2C0.jpg。
到此为止,mTempFileURL变量已经含有了图像对象所对应的新的图像文件的目录和名称。办公软件原有的方式是,将图像对象的数据内容调用相应的图像文件解码流程(本实例中,是调用了JPG文件的解码流程)获得位图数据存放在ImpGraphic对象的BitmapEx中。本发明修改了原有的方式,在对mTempFileURL变量赋值完毕后,对数据内容不进行解码,这样,BitmapEx就没有存放位图数据信息,其值为空(NULL)。
至此,doc文档数据流中,关于第一个图像对象的处理已经结束,可以继续进行后继的文档内容加载。对文档中所有的图像对象都进行如此处理,直到整个文档加载完毕。本实例中,第二个图像对象得到的mTempFileURL变量值则例如为:C:\Documents andSettings\Administrator\Application
Data\NeoShineOffice\5\user\template\CS2C1.png。
文档加载完毕后,办公软件就会对用户显示文档的第一页内容。对本实例来说,第一幅图像对象就会立即显示。这时,需要对图像对象所对应的图像文件进行解码等操作,如附图2所示。
办公软件的显示机制会根据需要显示的内容,从对应的数据结构中取出实质内容进行绘制。在现有技术中,软件会获得存储在ImgGraphic对象BitmapEx中的位图,然后调用操作系统提供的绘制函数对位图进行绘制,如Windows平台下,办公软件会调用Windows下的GDI绘制引擎来绘制位图。
本发明修改了原有的显示流程。首先,在显示机制得到BitmapEx中的位图前,判断ImgGraphic对象中mTempFileURL字符串变量是否为空值(NULL),如果为空值,表示图像已经被解码,则无需额外操作,继续按照之前的操作步骤进行即可。
如果不为空值,说明该图像对象在文档解析后还未被使用过,则根据mTempFileURL变量中的字符串内容,采用办公软件原有的功能将该图像文件生成一个流式对象。对该流式对象,是指利用原有的图像文件解码流程对该对象进行解码,生成具体的BitmapEx位图数据。将该BitmapEx替换掉ImpGraphic对象中的BitmapEx对象。
在此之后,继续使用办公软件的显示方式,办公软件依然调用BitmapEx中的位图数据进行显示,与原有的流程没有任何区别。
在设置完BitmapEx对象后,mTempFileURL所存放的图像文件就失去了其使用价值。因此,需要将图片文件删除,释放硬盘空间。本实例采用办公软件提供的文件删除功能将硬盘中存放的图像文件删除(本实例中删除CS2C0.jpg文件),删除成功后,将mTempFileURL变量赋值为空。
至此,第一个图像对象的显示处理流程修改完毕,办公软件可以像本发明修改之前的方式对图像对象进行任意的操作。
在上述操作完成后,办公软件就可以显示出文档的第一页内容。如果用户使用鼠标或键盘等方式来浏览第二页内容,办公软件则会调用第二页的图像对象用来显示,此时,同样对该图像对象使用上述的各部操作。本实例中,会调用png图像文件的解码流程,以及删除CS2C1.png文件。
当然,还存在有另一种情况,即用户仅仅浏览了第一页内容,就关闭了文档。这时,第二页的图像对象并没有显示,也没有对其进行任何操作。这种情况下,该图像对象并没有进行解码,其mTempFileURL字符串变量不为空值(NULL),对应的图像文件仍然保存在本地计算机对应的目录中。此时,在关闭操作删除图像对象数据结构时,永久删除对应的图像文件。事实上,在文档的生命周期中,如果存在没有进行任何操作的图像对象,都采用同一方式进行处理。
本发明仅以对Doc格式的文档的异步解析为例进行说明,事实上所有二进制流式(如DOC,PPT,XLS等相关格式)文档的异步解码都在本发明解决的范围内。
以上所述以中标普华Office5.0来说明本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种文档加载中图像异步解码的方法,其特征在于:在doc文档加载过程中,对数据流中图像对象的内容数据不进行解码处理,而是在图像所在文档页面被操作时,再进行解码;包括如下步骤:
1)将图像数据生成相应的图像文件,保存在本地计算机具体目录中,所述文档的格式为二进制流式文档格式,在该文档现有的数据结构中添加一个字符串变量,用来保存对应的图像文件所在的目录和该图像文件的名称;其中在对doc文档数据流解析时,当解析到图像对象时,先按照原始流程对对象参数进行解析,保存到数据结构中对应的位置中,当解析到数据内容时,根据不同的文件格式,生成相应的文件并将数据内容写入到文件中,将该文件保存在指定的本地计算机某个目录中,并将保存文件的目录及文件名写入到数据结构中的该变量中;
2)在文件需要调用图像对象时,才对相对应的图像文件进行解码。
2.如权利要求1所述的方法,其特征在于,在文档加载过程中,将文档数据流中所有的图像对象的内容数据保存成图片文件,存储在计算机硬盘的临时目录中,直至整个文档被全部解析完毕。
3.如权利要求2所述的方法,其特征在于,图片文件有JPG、JPEG、BMP、WMF、TIFF类型的文件格式。
4.如权利要求1所述的方法,其特征在于,文档加载完毕后,用户需要显示文档中的图像对象时,根据保存在图像对象数据结构中图像文件的文件类型,调用对应的解码程序对该文件进行解码,将得到的图像数据存储在数据结构中相应的位置,同时将保存在计算机中的图像文件永久删除。
5.如权利要求1所述的方法,其特征在于,用户对文档进行修改、插入、删除或保存操作时,根据保存在图像对象数据结构中图像文件的文件类型,调用对应的解码程序对该文件进行解码,将得到的图像数据存储在数据结构中相应的位置,同时将保存在计算机中的图像文件永久删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110372927.4A CN102567460B (zh) | 2011-11-22 | 2011-11-22 | 一种文档加载中图像异步解码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110372927.4A CN102567460B (zh) | 2011-11-22 | 2011-11-22 | 一种文档加载中图像异步解码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567460A CN102567460A (zh) | 2012-07-11 |
CN102567460B true CN102567460B (zh) | 2014-05-28 |
Family
ID=46412872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110372927.4A Active CN102567460B (zh) | 2011-11-22 | 2011-11-22 | 一种文档加载中图像异步解码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567460B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920612A (zh) * | 2018-06-28 | 2018-11-30 | 山东中孚安全技术有限公司 | 解析doc二进制格式并提取文档中图片的方法及系统 |
CN116451671B (zh) * | 2023-06-16 | 2023-11-07 | 上海森亿医疗科技有限公司 | 文档格式数据加载渲染方法、终端、介质及web编辑器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894115A (zh) * | 2009-05-18 | 2010-11-24 | 北京大学 | 电子文档的图像数据处理方法及其装置 |
US7909255B2 (en) * | 2007-02-06 | 2011-03-22 | Nexbis SDN, BHD. | Mobile information retrieval over wireless network |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100590624C (zh) * | 2008-03-26 | 2010-02-17 | 北京航空航天大学 | 基于soa架构的多维空间数据展现方法 |
-
2011
- 2011-11-22 CN CN201110372927.4A patent/CN102567460B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7909255B2 (en) * | 2007-02-06 | 2011-03-22 | Nexbis SDN, BHD. | Mobile information retrieval over wireless network |
CN101894115A (zh) * | 2009-05-18 | 2010-11-24 | 北京大学 | 电子文档的图像数据处理方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102567460A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753501B (zh) | Ofd文件合并展现迅捷阅读的方法 | |
AU2009241484B2 (en) | High-fidelity rendering of documents in viewer clients | |
US10649905B2 (en) | Method and apparatus for storing data | |
US9922041B2 (en) | Storing data files in a file system | |
US20140304576A1 (en) | Prioritizing Asset Loading In Multimedia Application | |
CN104111922A (zh) | 一种流式文档的处理方法及装置 | |
CN105096367A (zh) | 优化Canvas绘制性能的方法及装置 | |
EP2957088B1 (en) | Serialization for delta encoding | |
CN102567460B (zh) | 一种文档加载中图像异步解码的方法 | |
US7730388B2 (en) | Converting an enhanced metafile into a chronologically independent object property list for conversion into a PDF document | |
CA2824868C (en) | Variants of files in a file system | |
US9412187B2 (en) | Delayed rendering of content | |
CN105279247A (zh) | 表情库的生成方法及装置 | |
US20110320927A1 (en) | Methods and Apparatus Utilizing XooML: Cross (X) Tool Markup Language | |
US8990265B1 (en) | Context-aware durability of file variants | |
CN102426581A (zh) | 一种生成文件预览的方法及装置 | |
CN102262784B (zh) | 基于图像压缩的字库编码方法和解码方法 | |
CN105488054A (zh) | 一种浏览图片的方法及装置 | |
CN111581921B (zh) | 一种文本编辑的方法、装置、计算机存储介质及终端 | |
CN105205069B (zh) | 一种基于分页文件的缓存打开方法和装置 | |
CN113792013B (zh) | 基于邮件中附件内容的检索方法、计算设备及存储介质 | |
CN113806107B (zh) | 一种对象拷贝方法、装置、设备及存储介质 | |
CN111597773A (zh) | 一种压缩处理的方法、装置、计算机存储介质及终端 | |
CN117716354A (zh) | 本地化文件的压缩 | |
CN111310415A (zh) | 一种文档转换的方法、装置、计算机存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |