一种文档加载的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及信息显示技术领域,尤其是涉及一种基于拆分再虚拟化的文档加载的 方法及装置。
【背景技术】
[0002] 目前,在线阅读器都是通过把各种格式的原始文档,如Word,Powerfoint,Excel, Txt,转换成某种中间文档,通过对中间文档的阅读支持,从而实现了大部分格式的在线阅 读。
[0003] 中间文档的选择,一般地有几个原则,一是其它原始文档能比较方便、快速地转化 为中间文档;二是中间文档的内容排版要尽可能与原始文档的呈现一致;H是为了使在线 阅读器的应用更加广泛,要求中间文档利于Internet传输,支持跨平台等。通常选择的是 OpenXMLPaperSpecification(OpenXP巧格式文档。
[0004] 化enXPS文件格式属于国际标准,标准号为Ecma-388。化enXPS是微软XI^S的标 准化版本。化enXI^S文档是具有版面配置固定的电子文件格式,并且其自身包括了所需的 全部数据和资源的压缩格式狂I巧文件。化enXI^S文档的一个显著特性是它通过目录结构 和内容XML中指定的相对路径,有序的组织数据和资源,形成含有多层树型的逻辑结构。
[0005] -般地,压缩格式文件需要保证其完整性,才能提取里面的数据;在线阅读器在加 载一个化enXI^S文档时,化enXI^S文档也要被完整获取,才能提取里面的数据,进行正常 、1以/JN〇
[0006] 而在实现上述文档加载过程中,现有技术存在W下问题;1、需要将化enXI^S文档 完整的获取之后才能显示,当文档越大时,从开始获取至最终呈现的时间就会越长,并且内 存占用也会越大,该样用户在可阅读前的等待时间将会过长,从而影响了用户的阅读体验; 2、用户有时有可能只需要阅读文档的部分内容,通过简单的将文档大小顺序分块,然后并 行下载,最后再组合的方式,虽然可W加快文档获取速度,但文档最终还是要还原为完整的 压缩文件才能被使用,没有实现按需要获取,从根本上对阅读体验的改善效果不明显。
[0007]目前还没有有效的方案来解决上述问题。
【发明内容】
[0008] 本发明所解决的技术问题是提供一种基于文档拆分再虚拟化的文档加载的方法 及装置,本发明通过按类型拆分及并行获取方式,依次提供文档所阅读部分的内容,文档并 非一次性全部提供给阅读器,达到减少文档加载时,需要等待过长时间的目的,极大的提高 了用户阅读体验。
[0009] 为了解决上述技术问题,本发明提供了一种文档加载的方法,包括:
[0010] 步骤一:将化enXI^S原文档拆分成H类文档块,所述文档块包含应用所需文档 块、图片资源文档块和内容载体文档块;
[0011] 步骤二:先获取所述应用所需文档块的字节流,同时并行获取所述图片资源文档 块的字节流;
[0012] 步骤H;在获取所述应用所需文档块的所述字节流完成后,发起虚拟文档的封装; 其中所述虚拟文档根据所述客户端要求的页面向远程服务器获取所述页面中的所述内容 载体文档块的所述字节流;所述虚拟文档存储有获取完成的所述应用所需文档块、所述图 片资源文档块和所述内容载体文档块的所述字节流W及直接定位所述应用所需文档块、所 述图片资源文档块和所述内容载体文档块的所述字节流的能力;封装完成后的所述虚拟文 档作为一个完整的文档提供给客户端。
[0013] 优选的,所述步骤一中,所述拆分的过程包括:解压所述原文档、处理解压后的文 件和将待压缩目录压缩成分档块;处理解压后的所述文件的过程包括:创建待压缩目录、 抽取所述文件、添加新控制文件和转换图片格式。
[0014] 更加优选的,在抽取所述文件的过程中,抽取所述应用所需文档块、所述图片资源 文档块和所述内容载体文档块对应的文件后缀的所述文件;根据所述文件后缀进行遍历查 找并移动到新的待压缩目录中;所述应用所需文档块对应的文件后缀包括:文档定义序列 文件.fdseq、引用关系文件.rels、文档页面序列文件.fdoc、字体文件.0化tf和内容类型 文件.xml;所述图片资源文档块对应的文件后缀是;.化eg,.jPg,和.png;所述内容载体文 档块对应的文件后缀是;.巧age。
[0015] 更加优选的,在压缩所述待压缩目录成为分档块之前,在所述应用所需文档块的 根目录下添加一个分块描述文件block,config,所述分块描述文件用W指导虚拟文档的封 装。
[0016] 更加优选的,所述分块描述文件包含所述原文档的总页数、预设所述内容载体文 档块的最大页数和所述内容载体文档块的页面编号。
[0017] 更加优选的,所述步骤二中,每个所述应用所需文档块、所述图片资源文档块和所 述内容载体文档块在获取时,将先被分配一个执行优先级别数值,并在一个独立线程中进 行,通过线程池来调度和管理所述线程的执行;所述线程池通过一个堆找缓存所述文档块 的获取请求,在没超过最大并发数时,所述获取请求被立即执行;在超过最大并发数时,所 述获取请求优先级别值高的先执行;相同优先级别值的所述获取请求,后入找的先执行; 对同一个所述文档块的获取请求只被执行一次;所述最大并发数为2倍的所述客户端的 CPU个数。
[0018] 更加优选的,所述步骤二中,获取所述应用所需文档块、所述图片资源文档块和所 述内容载体文档块的字节流完成时,触发对应的完成事件通知给所述客户端。
[0019] 更加优选的,所述步骤二中,在获取所述图片资源文档块的字节流时,当所述图片 资源文档块所对应的内容载体文档块不存在时,则实时获取缺失的所述内容载体文档块的 字节流。
[0020] 更加优选的,所述步骤H中,进行所述虚拟文档的封装时,为所述应用所需文档 块、所述图片资源文档块和所述内容载体文档块分配唯一标识符,并记录所述应用所需文 档块、所述图片资源文档块和所述内容载体文档块的状态;所述状态包括:初始未获取、获 取中、获取成功和获取失败。
[0021] 更加优选的,在所述步骤二之后或所述步骤H中所述应用所需文档块、所述图片 资源文档块和所述内容载体文档块获取成功之后,还包括:在所述获取成功后,虚拟文档完 成事件通知启动解析和撞染;所述图片资源文档块准备完成后,获取所述图片资源文档块 的字节流的获取成功或获取失败通知启动补充撞染;获取所述图片资源文档块的字节流的 获取成功或获取失败通知启动后续异步操作,通知所述客户端。
[0022] 更加优选的,所述步骤H中,封装后的所述虚拟文档作为一个完整的文档提供给 客户端之前,封装后的所述虚拟文档进行解析和撞染;先将获得的所述应用所需文档块、所 述图片资源文档块和所述内容载体文档块的所述字节流解析成符合化en XI^S文件格式的 内存对象,并将所述内存对象撞染成象;在撞染过程中,先对所述应用所需文档块和所述内 容载体文档块进行撞染;待所述图片资源文档块中的字节流获取成功后再进行补充撞染。
[0023] 更加优选的,在所述虚拟文档进行解析时,当所述图片资源文档块的图片资源在 初始未获取、获取中和获取失败的状态时,所述虚拟文档的解析正常进行,仅将缺失的所述 图片资源的名称记录在解析后的所述内存对象中。
[0024] 更加优选的,所述步骤H中,所述虚拟文档由一个所述应用所需文档块,一个所述 图片资源文档块和N个所述内容载体文档块组成;所述N由从所述应用所需文档块中的所 述分块描述文件block, config获取到的原文档总页数PAGE_C0UNT和预设的所述内容载体 文档块最大页数化〇CK_SIZE共同决定,其公式为;(PAGE_C0UNT-1)/化0CK_SIZE+1。
[0025] 更加优选的,所述应用所需文档块是指所述化en XI^S原文档的目录结构和分块描 述文件的文件集合。
[0026] 更加优选的,所述图片资源文档块是指文档内所有图片的文件集合,所述图片资 源文档块包括缩略图和页面内图像。
[0027] 更加优选的,所述内容载体文档块是指文档内所有页面内容定义.巧age的文件 集合,所述.巧age是页面内容定义、排版、布局的文件;每一个页面对应一个.巧age文件; 所述内容载体文档块是文档内容实际存储的
容器。
[0028] 本发明还提供了一种文档加载的装置,包括:
[0029] 解压单元,用于解压ZIP格式的文件和文件夹;
[0030] 抽取单元,用于在解压出的所述文件和所述文件夹中,根据文档块的类型指定的 文件后缀,形成待压缩的指定文件夹;
[0031] 压缩单元,用于W ZIP格式压缩所述指定文件夹,从而压缩成文档块;
[0032] 虚拟文档单元,用于虚拟文档的管理,将压缩后的所述文档块封装成一个整体;
[0033] 线程池管理单元,用于对封装后的所述文档块获取线程并发控制,同时提供线程 执行的优先级别控制W及线程过滤控制;
[0034] 文档块获取单元,用于获取线程池管理单元处理后的所述文档块的内容;
[0035] 事件通知单元,用于所述虚拟文档单元和所述文档块获取单元在获取过程中进行 事件通知给客户端。
[0036] 优选的,所述抽取单元还包括:
[0037] 类型后缀映射存储单元,用于存储文档块类型与文件后缀的对应关系,一个类型 可W对应多个文件后缀;
[0038] 文件遍历查找单元,用于遍历指定文件夹,并查找出具有指定文件后缀的文件;
[0039] 文件移动单元,用于把文件从原文件夹移动到指定文件的功能;
[0040] 分块信息存储单元,用于记录内容载体抽取时的细节信息;
[0041] 分块信息写入单元,用于把分块信息存储单元序列化到block, config文件中,并 写入应用所需文档块。
[0042] 更加优选的,所述虚拟文档单元还包括:
[0043] 文档块容器管理单元,用于根据block, config定义的内容,组织内容载体文档块 的存储容器;
[0044] 缓存内容载体文档块最大值判断单元,用于判断已加载的内容载体文档块是否已 超过最大缓存值,若已超过最大缓存值,则移除离当前文档块最远的文档块;若未超过最大 缓存值,则加入堆找的末端;
[0045] 最远文档块查找单元,用于查找离当前文档块最远的已缓存文档块。
[0046] 更加优选的,所述线程池管理单元还包括:
[0047] 线程缓存堆找单元,用于保存文档块获取线程存储单元的信息;
[0048] 线程优先级别判断单元,用于判断线程执行先后顺序,在未达到最大并发数前,优 先级别值高的先执行,优先级别相同的后进的先执行;所述最大并发数为2倍的所述客户 端的CPU个数;
[0049] 线程并发判断单元,用于判断当前并发线程与最大并发线程的关系;
[0050] 文档块去重单元,用于使同一个文档块的获取请求只被执行一次。
[0051] 更加优选的,所述文档块获取单元还包括;文档块获取线程存储单元,用于保存获 取的文档块编号,优先级别定义。
[0052] 更加优选的,所述文档块的类型包含应用所需文档块、图片资源文档块和内容载 体文档块。
[0053] 更加优选的,所述事件通知单元还包括;事件参数存储单元,用于指定本次事件触 发的虚拟文档实例、文档块编号和文档内容。
[0054]其中,XML是可扩展标记语言(英语;extensibleMarkupLanguage,简称;XML), 是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可W处理 包含各种信息的文章等。如何定义该些标记,既可W选择国际通用的标记语言,比如HTML, 也可W使用像XML该样由相关人±自由决定的标记语言,该就是语言的可扩展性。XML是从 标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样 式语言狂化)、XB化和XPath等。OpenXI^S的全称是"OpenXMLPaperSpecification"(开 放式XML文件规范),是在Windows8M3Build8102预览版中新引入的一种文件格式,是微软 提供的与PDF格式竞争的新的基于XML的文件格式。化enXI^S基于欧洲板纸制造者协会 巧CMA)的ECMA388标准规范而来。
[00巧]其中,所述字体文件.0化tf的总大小一般不会太大,且变化幅度也不会太大,另 外它是文档内所有文字都必须引用的资源,所W预先加载字体资源,即可保证文档的基本 内容效果。
[0056] 其中,所述ZIP是一个计算机文件的压缩的算法,原名Deflate(真空),发明者为 菲尔?卡茨(PhilKatz)),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名zip",它的MIME格式为application/zip。目前,ZIP格式属于几种主流的压缩格式之一, 其竞争者包括RAR格式W及开放源码的7-Zip格式。从性能上比较,RAR格式较ZiP格式压 缩率较高,而7-Zip由于提供了免费的压缩工具而逐渐在更多的领域得到应用。WinMount 可W把ZIP挂载到虚拟盘,无需解压,随即读取,该又是另一大创新。
[0057] 本发明与现有技术相比,具有如下有益效果:
[0058] 本发明提供了一种文档加载的方法及装置,本发明先对原文档拆分,接着进行文 档块获取,然后进行虚拟文档创建,把文档块组织起来;一方面通过并行控制,提高了整体 的获取,另一方面通过拆分后的文档块类型划分,使得不必获取整个文档即可启动解析,使 用户可W按需下载文档部分内容,而无需将文档全部下载,即可W进行查看;而且虚拟文档 又保证了使用时与现有技术的无差异性,因此,本发明体现了按需获取模式带来的好处,使 得加载文档能更加节省内存,更加快捷,从而提高了大文档的呈现速度,可W使原需等待较 长时间才能在线阅读的文档,快速呈现,特别是对于大文档,该种效果更加明显,减少了阅 读前的等待时间,有效的改善了用户的阅读体验。
【附图说明】
[0059] 图1为本发明实施例一文档加载的方法的流程图;
[0060] 图2为本发明实施例二文档拆分装置的示意图;
[0061] 图3为本发明实施例二文档加载装置的示意图;
[0062] 图4为本发明实施例二与现有技术方案的对比示意图;
[0063] 图5为本发明实施例二文档虚拟的内存结构示意图。
【具体实施方式】
[0064] 为了更好的理解本发明所解决的技术问题、所提供的技术方案,W下结合附图及 实施例,对本发明进行进一步详细说明。此处所描述的具体实施例仅用W解释本发明的实 施,但并不用于限定本发明。
[0065]为提高在线阅读器加载文档的速度,改善用户阅读体验,本发明实施例一提供了 一种文档加载方法,具体流程详见图1。首先,通过文档拆分11把文档进行拆分,拆分出不 同类型的文档块,然后,通过文档块获取12根据需要有选择性地获取拆分后的文档块,最 后,阅读器通过虚拟文档13把文档块组织起来,,为阅读器后续流程,如解析流程,提供一 个虚拟的,完整的文档应用。在整个获取过程中,通过线程池管理,完成事件通知等技术支 撑,保证了并行获取的有序进行。在虚拟文档13中,当请求的文档块还未下载,自动通过文 档块获取12W远程获取,屏蔽了复杂的获取控制,为后续的解析流程提供了极大便利。
[0066] 通过上述描述可W看出,当用户使用在线阅读器时,由于文档被拆分为多个文档 块,并通过并行获取技术,加快了获取速度,同时由于拆分符合化enXI^S文件的规范定义, 使得阅读器只需要获取部分文档块,即可W启动正常的解析、撞染流程。所W利用本发明实 施例的技术方案,文档能被按需下载,使得大文档能快速呈现,减少了阅读前的等待时间, 从而有效的改善了用户的阅读体验。
[0067]W下结合具体的实施例二,详细描述本发明是如何实现文档加载的方法及装置。
[0068] 如图2所示,在文档被加载之前,先完成文档的拆分,具体包括:
[0069] 通过解压单元21,XI^S文档先被解压,W获取里面的文件夹及文件。
[0070] 通过抽取单元22,解压后的文件按照原来的目录结构,依据不同的文档块类型对 应不同的文件后缀方式,查找符合条件的文件到不同的待解压文件夹中。文档块类型包括 有:应用所需,图片资源,内容载体。
[0071] 其中应用所需类W
.rels、.fdseq、.fdoc、.0化tf为后缀的文件;
[0072]图片资源类是指所有图片格式的文件集合,如.png、,jpg、.化eg等;
[0073] 内容载体W.巧age为后缀的文件;
[0074] 其中应用所需文档块和图片资源文档块只会被拆成一个,而内容载体则是根据 XI^S文档的页数动态变化的。具体的将会通过下面的公式决定整个文档被拆分为几个内容 载体文档块:
[00巧]BL0CK_NUM= (PAGE-COUNT-1) /化0CK-SIZE+1
[007引其中,PAGE_C0UNT指所述文档的页数,BL0CK_SIZE指预设的内容载体文档块 包括的最大页数,BL0CK_NUM指内容载体文档块的数量,所W所述文档将最终为拆分为 2+BL0CK-NUM块。
[0077] 抽取过程,就是根据上述的文件后缀,遍历解压目录,查找符合条件的文件,并移 动到待压缩文件夹中的过程。需要另外注意的是,在抽取内容载体时,需要根据上述公式做 好截取分块准备,并把总页数,预设分块页数,W及每个分块对应的页面名称记录在block, config,并最终把该一个文件写入应用所需的待压缩文件夹的根目录下。
[0078] 通过压缩单元23,把待解压的文件夹重新压缩为ZIP文件,并W其所属文档块编 号为命名,W示区分。
[0079] 下面W《化enXPS的规范说明书》文件为例,通过上述拆分后得到的文档块如下 表:
[0080]表 1 :
[0081]
[0082]
[008引如图3所示,文档块拆分完毕后,在线阅读器进行文档加载,具体包括;
[0084] 虚拟文档单元31被建立。先并行获取应用所需文档块和图片资源文档块。虚拟 文档在应用所需文档块被获取完成后生效,因为只有在该之后,才能确认文档的页数,从而 确认文档拆分情况。而图片资源文档块在获取完成后会有事件通知,可W在此事件中去进 行解析流程中缺失图片的显示工作。
[0085]虚拟文档中每个文档块都将被分配一个获取状态标识符(READY_FLAG),当本单元 被请求时,先判断内容所处的文档块编号炬L0CK_ID),然后再判断对应的文档块的READY_ FLAG是否为已准备,是的话直接返回文档块字节流,如果不是,把文档块编号炬L0CK_ID) 和自定义的优先级别数值巧XECUTE_LEVEL)提供给线程池管理单元32,由后者判断是否需 要启动或者是在什么合适时间启动文档块获取动作。当获取完成后,一方面在本单元记录 此文档块的内容并修改获取状态标识符,另一方面触发事件通知单元34。本单元在内存的 组织形式如图5。
[0086]另外,考虑到原文档可能很大,如果所有已获取的文档块都被缓存起来,该将会造 成内存占用过大,所W本单元还可W通过参数炬L0CK_CACHE_NUM)来控制最大缓存数。在 上述获取完成后记录此文档块时,先判断当前缓存数+1是否大于炬LOCK_CACHEE_NUM),女口 果是,需要先把离当前请求文档块编号最远的已缓存的文档块先清除,再进行添加动作。
[0087] 考虑到当前请求编号,就是用户当前关注所在。而文档内容一般是连续性的,所W 离此关注文档块越近的文档内容,越容易被用户重新查看。为了降低该种因为清除缓存而 带来的重新获取文档块的可能,所W推荐的是离当前请求文档块编号最远的先被清除。
[0088] 通过线程池管理单元32,W控制文档块有序的,并发的获取。本单元同时提供了获 取线程的执行优先级控制。文档块获取线程池单元32内置了一个文档块获取单元33的执 行堆找,并且可W为每个文档块获取单元33分配一个优先级别数值巧XECUTE_LEVEL),优 先级别值高的先执行,优先级别值相同的,则后进的先执行。还可W通过最大并发数(MAX_ PARALLEL_NUM)进并发控制。
[0089] 通过文档块获取单元33,可W进行文档块的远程获取。同时为了保证阅读器界 面的正常响应,后台W异步方式开启指定文档块获取,在完成获取之后,触发事件通知单元 34。
[0090] 事件通知单元34是一个公共单元,主要为文档块获取单元33和虚拟文档单元31 提供事件通知功能。事件通知的类型包括有;文档块获取完成事件,虚拟文档准备完毕事 件,图片补充撞染事件。
[0091]WXI^S规范定义文件为例,如图4所示,利用本实例技术方案,在线阅读器只需要 加载表1中的第一和第H文档块,即可W实现对文档前50页的基本查看。该时占用的内存 仅为815K巧7化=1386K,而等待图片资源文档块获取完成后,即可实现完全查看。而对于现 有技术,不管查看多少页,都需要7686K内存。所W利用本发明实施例的技术方案,相对于 现有技术,可节省7686K-1386K=6300K内存。并且当原文档越大,页数越多,拆分出来的内 容载体文档块则越多,该种按需获取模式带来的内存节省就越大。而最坏情况,当原文档的 页数大于小于50页时,节省的内存虽然为0,但通过图片资源文档块的并行获取,所花时间 也比一次性获取原文档的要快。
[0092] 综上所述,本发明实施例提供的文档加载的方法及装置,首先通过对原文档拆分, 接着进行文档块获取,然后进行虚拟文档创建,把文档块组织起来,一方面通过并行控制, 提高了整体的获取,另一方面通过拆分后的文档块类型划分,使得不必获取整个文档即可 启动解析,最后虚拟文档又保证了使用时与现有技术的无差异性,因此,利用本发明实施 例,切实体现了按需获取模式带来的好处,使得加载文档能更加节省内存,更加快捷,从而 提高了大文档的呈现速度,减少了阅读前的等待时间,有效的改善了用户的阅读体验。
[009引具体实施例:
[0094] 比如对于某个化en XPS文件;《化en XPS的规范说明书》,原大小为7686K,通 过拆分(内容载体W 50页为一单元),最终可形成;应用所需文档块;815K,内容载体 文档块;57化,图片资源文档块;1035K,(1-50页)。该样只需要获取815K巧7化=1386K 即可实现对前50页的基本查看;而实现完全查看也仅需要等待图片资源文档块获取完 成,即是与1386K+1035K=242化。比起原文档大小的7686K,所需大小大大减少(节省了 768服-138服=6300K)。
[0095] 假设在1M带宽下,用户查看上述文档的前50页内容,通过现有技术,将要下载 7686K内容,W128K/S的理论网速计算;需要7686/128=60s;而通过本发明提供的技术方 案,则只需要1386/128=10. 8s。加载时间减少了 60S-10. 8s=49. 2s,大大提升了用户的阅读 体验。
[0096] 从上述方法,我们同时还可W推断出:按需下载的落脚点在内容载体文档块上。当 文档越大,页数越多,内容载体文档块相对于原文档的比例就越小,从而该种方法的优势就 越明显;并且,该种按需获取的方式可W更加有效的利用网络带宽资源,避免浪费。
[0097] W上通过具体的和优选的实施例详细的描述了本发明,但本领域技术人员应该明 白,本发明并不局限于W上所述实施例,凡在本发明的基本原理之内,所作的任何修改、组 合及等同替换等,均包含在本发明的保护范围之内。
【主权项】
1. 一种文档加载的方法,其特征在于,包括: 步骤一:将Open XPS原文档拆分成三类文档块,所述文档块包含应用所需文档块、图 片资源文档块和内容载体文档块; 步骤二:先获取所述应用所需文档块的字节流,同时并行获取所述图片资源文档块的 字节流; 步骤三:在获取所述应用所需文档块的所述字节流完成后,发起虚拟文档的封装;其 中所述虚拟文档根据所述客户端要求的页面向远程服务器获取所述页面中的所述内容载 体文档块的所述字节流;所述虚拟文档存储有获取完成的所述应用所需文档块、所述图片 资源文档块和所述内容载体文档块的所述字节流以及直接定位所述应用所需文档块、所述 图片资源文档块和所述内容载体文档块的所述字节流的能力;封装完成后的所述虚拟文档 作为一个完整的文档提供给客户端。2. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤一中,所述拆分的 过程包括:解压所述原文档、处理解压后的文件和将待压缩目录
压缩成分档块;处理解压 后的所述文件的过程包括:创建待压缩目录、抽取所述文件、添加新控制文件和转换图片格 式;在抽取所述文件的过程中,抽取所述应用所需文档块、所述图片资源文档块和所述内容 载体文档块对应的文件后缀的所述文件;根据所述文件后缀进行遍历查找并移动到新的待 压缩目录中;所述应用所需文档块对应的文件后缀包括:文档定义序列文件.fdseq、引用 关系文件? rels、文档页面序列文件? fdoc、字体文件? odttf和内容类型文件? xml ;所述图 片资源文档块对应的文件后缀是:.jpeg,. jPg,和.png ;所述内容载体文档块对应的文件 后缀是:? fpage。3. 根据权利要求2所述的文档加载的方法,其特征在于,在压缩所述待压缩目录成为 分档块之前,在所述应用所需文档块的根目录下添加一个分块描述文件block, config,所 述分块描述文件用以指导虚拟文档的封装。4. 根据权利要求3所述的文档加载的方法,其特征在于,所述分块描述文件包含所述 原文档的总页数、预设所述内容载体文档块的最大页数和所述内容载体文档块的页面编 号。5. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤二中,每个所述应用 所需文档块、所述图片资源文档块和所述内容载体文档块在获取时,将先被分配一个执行 优先级别数值,并在一个独立线程中进行,通过线程池来调度和管理所述线程的执行;所述 线程池通过一个堆栈缓存所述文档块的获取请求,在没超过最大并发数时,所述获取请求 被立即执行;在超过最大并发数时,所述获取请求优先级别值高的先执行;相同优先级别 值的所述获取请求,后入栈的先执行;对同一个所述文档块的获取请求只被执行一次;所 述最大并发数为2倍的所述客户端的CPU个数。6. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤二中,获取所述应用 所需文档块、所述图片资源文档块和所述内容载体文档块的字节流完成时,触发对应的完 成事件通知给所述客户端。7. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤二中,在获取所述图 片资源文档块的字节流时,当所述图片资源文档块所对应的内容载体文档块不存在时,则 实时获取缺失的所述内容载体文档块的字节流。8. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤三中,进行所述虚拟 文档的封装时,为所述应用所需文档块、所述图片资源文档块和所述内容载体文档块分配 唯一标识符,并记录所述应用所需文档块、所述图片资源文档块和所述内容载体文档块的 状态;所述状态包括:初始未获取、获取中、获取成功和获取失败。9. 根据权利要求8所述的文档加载的方法,其特征在于,在所述步骤二之后或所述步 骤三中所述应用所需文档块、所述图片资源文档块和所述内容载体文档块获取成功之后, 还包括:在所述获取成功后,虚拟文档完成事件通知客户端启动解析和渲染;所述图片资 源文档块准备完成后,获取所述图片资源文档块的字节流的获取成功或获取失败通知所述 客户端启动补充渲染;获取所述图片资源文档块的字节流的获取成功或获取失败通知启动 后续异步操作,通知所述客户端。10. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤三中,封装后的所 述虚拟文档作为一个完整的文档提供给客户端,完整的所述文档供所述客户端进行解析和 渲染;进行解析和渲染时,先将获得的所述应用所需文档块、所述图片资源文档块和所述内 容载体文档块的所述字节流解析成符合Open XPS文件格式的内存对象,并将所述内存对象 渲染成象;在渲染过程中,先对所述应用所需文档块和所述内容载体文档块进行渲染;待 所述图片资源文档块中的字节流获取成功后再进行补充渲染。11. 根据权利要求10所述的文档加载的方法,其特征在于,在所述虚拟文档进行解析 时,当所述图片资源文档块的图片资源在初始未获取、获取中和获取失败的状态时,所述虚 拟文档的解析正常进行,仅将缺失的所述图片资源的名称记录在解析后的所述内存对象 中。12. 根据权利要求1所述的文档加载的方法,其特征在于,所述步骤三中,所述虚拟文 档由一个所述应用所需文档块,一个所述图片资源文档块和N个所述内容载体文档块组 成;所述N由从所述应用所需文档块中的所述分块描述文件block, config获取到的原文档 总页数PAGE_COUNT和预设的所述内容载体文档块最大页数BLOCK_SIZE共同决定,其公式 为:(PAGE_C0UNT-1)/BL0CK_SIZE+1。13. -种文档加载的装置,其特征在于,包括: 解压单元,用于解压ZIP格式的文件和文件夹; 抽取单元,用于在解压出的所述文件和所述文件夹中,根据文档块的类型指定的文件 后缀,形成待压缩的指定文件夹; 压缩单元,用于以ZIP格式压缩所述指定文件夹,从而压缩成文档块; 虚拟文档单元,用于虚拟文档的管理,将压缩后的所述文档块封装成一个整体; 线程池管理单元,用于对封装后的所述文档块获取线程并发控制,同时提供线程执行 的优先级别控制以及线程过滤控制; 文档块获取单元,用于获取线程池管理单元处理后的所述文档块的内容; 事件通知单元,用于所述虚拟文档单元和所述文档块获取单元在获取过程中进行事件 通知给客户端。14. 根据权利要求13所述的文档加载的装置,其特征在于,所述抽取单元还包括: 类型后缀映射存储单元,用于存储文档块类型与文件后缀的对应关系,一个类型可以 对应多个文件后缀; 文件遍历查找单元,用于遍历指定文件夹,并查找出具有指定文件后缀的文件; 文件移动单元,用于把文件从原文件夹移动到指定文件的功能; 分块信息存储单元,用于记录内容载体抽取时的细节信息; 分块信息写入单元,用于把分块信息存储单元序列化到block, config文件中,并写入 应用所需文档块。15. 根据权利要求13所述的文档加载的装置,其特征在于,所述虚拟文档单元还包括: 文档块容器管理单元,用于根据block, config定义的内容,组织内容载体文档块的存 储容器; 缓存内容载体文档块最大值判断单元,用于判断已加载的内容载体文档块是否已超过 最大缓存值,若已超过最大缓存值,则移除离当前文档块最远的文档块;若未超过最大缓存 值,则加入堆栈的末端; 最远文档块查找单元,用于查找离当前文档块最远的已缓存文档块。16. 根据权利要求13所述的文档加载的装置,其特征在于,所述线程池管理单元还包 括: 线程缓存堆栈单元,用于保存文档块获取线程存储单元的信息; 线程优先级别判断单元,用于判断线程执行先后顺序,在未达到最大并发数前,优先级 别值高的先执行,优先级别相同的后进的先执行;所述最大并发数为2倍的所述客户端的 (PU个数; 线程并发判断单元,用于判断当前并发线程与最大并发线程的关系; 文档块去重单元,用于使同一个文档块的获取请求只被执行一次。17. 根据权利要求13所述的文档加载的装置,其特征在于,所述文档块获取单元还包 括:文档块获取线程存储单元,用于保存获取的文档块编号,优先级别定义。18. 根据权利要求13所述的文档加载的装置,其特征在于,所述文档块的类型包含应 用所需文档块、图片资源文档块和内容载体文档块。19. 根据权利要求13所述的文档加载的装置,其特征在于,所述事件通知单元还包括: 事件参数存储单元,用于指定本次事件触发的虚拟文档实例、文档块编号和文档内容。
【专利摘要】本发明涉及信息显示技术领域,具体公开了一种文档加载的方法及装置;包括:将Open XPS原文档拆分成三类文档块,文档块包含应用所需文档块、图片资源文档块和内容载体文档块;先获取应用所需文档块的字节流,同时并行获取图片资源文档块的字节流;在获取应用所需文档块的字节流完成后,发起虚拟文档的封装,其中虚拟文档根据客户端要求的页面向远程服务器获取页面中的内容载体文档块的字节流,虚拟文档存储有获取完成的三个文档块的字节流以及直接定位这些字节流的能力,封装完成后的虚拟文档作为一个完整的文档提供给客户端。本发明通过按类型拆分及并行获取方式,文档依次提供给阅读器,减少了文档加载时间,提高了用户阅读体验。
【IPC分类】G06F9/445, G06F17/30
【公开号】CN104881409
【申请号】CN201410069307
【发明人】李康贵, 傅东
【申请人】北京方捷软件有限公司
【公开日】2015年9月2日
【申请日】2014年2月27日
转载请注明原文地址:https://www.famiwei.com/read-8138666.html