掌桥专利:专业的专利平台
掌桥专利
首页

一种流式文档子目录页码计算方法及装置

文献发布时间:2023-06-19 11:26:00


一种流式文档子目录页码计算方法及装置

技术领域

本发明涉及文档处理技术领域,尤其涉及一种流式文档子目录页码计算方法及装置。

背景技术

随着电子阅读器的不断推广及普及,很多喜爱阅读书籍的人使用具有双稳态显示屏的电子阅读器进行阅读,这种电子阅读器的显示屏幕采用电子墨水技术,仅在用户翻页刷新时消耗电量,具有耗电低,显示效果好的特点,而且在强光下也可以阅读,深受用户喜爱。而在实际场景中,为了贴合不同用户的阅读习惯,电子阅读器的文本可以以流式文档的形式输出。

流式文档:如epub文档,其描述的不是排版后生成的具有版面呈现所需要的所有数据的文档,其相关数据通常不具有固定位置大小等版面信息,每次加载文档时需要类似流水线式的对这些数据从头到尾进行重新排版计算,得到相关位置信息,然后才能呈现出来。因此,流式文档的目录没有固定的页码,需要在分页完成后,更新目录页码。

在现有技术中,对于目录页码的计算,通常是递归遍历所有子目录,每个子目录单独去更新页码;每次更新页码时,都需要根据目录链接的位置,在页表中查找匹配。对于大文档,子目录非常多的情况下,页码数也会非常大,更新所有子目录页码将会花费很长时间,导致目录加载慢,影响阅读体验。例如,以一本145MB大小的epub文档为例,该文档包含3362条子目录,排版后,总页码有15917条,通过上述更新方案,更新完所有目录,需要花费4500ms左右,目录更新时间长,目录加载速度慢,用户体验差。

发明内容

本发明提供了一种流式文档子目录页码计算方法及装置,用于解决现有流式文档目录更新方式更新时间长,导致加载速度慢、用户体验差的技术问题。

本发明提供的一种流式文档子目录页码计算方法,所述流式文档具有多个页面以及多个子目录,所述方法包括:

获取所述流式文档的所有所述页面的位置范围;

获取所述流式文档的所有所述子目录的目录链接位置;

根据所述位置范围和所述目录链接位置,计算每个所述子目录的页码。

可选地,所述获取所述流式文档的所有所述页面的位置范围的步骤,包括:

获取所述流式文档的文档页表;

从所述文档页表中,获取所有所述页面的位置范围。

可选地,所述根据所述位置范围和所述目录链接位置,计算每个所述子目录的页码的步骤,包括:

根据所有所述位置范围,将所有所述页面按照升序排序,得到页面位置排序;

根据所有所述目录链接位置,将所有所述子目录按照升序排序,得到子目录排序;

根据所述页面位置排序和所述子目录排序,对比所述位置范围和所述目录链接位置,计算每个所述子目录的页码。

可选地,所述根据所述页面排序和所述子目录排序,对比所述位置范围和所述目录链接位置,计算每个所述子目录的页码的步骤,包括:

根据所述页面排序确定当前页面,并获取所述当前页面的当前位置范围和页面页码;

根据所述子目录排序,在未确定子目录中确定当前子目录;

获取所述当前子目录的目标目录链接位置;

判断所述目标目录链接位置是否处于所述当前位置范围之内;

当所述目标目录链接位置处于所述当前位置范围之内时,将所述页面页码确定为所述当前子目录的页码;

将下一子目录确定为当前子目录,并返回获取所述当前子目录的目标目录链接位置的步骤;

当所述目标目录链接位置大于所述当前位置范围时,将下一页面确定为当前页面,获取所述当前页面的当前位置范围和页面页码,并返回根据所述子目录排序,在未确定子目录中确定当前子目录的步骤,以计算每个所述子目录的页码。

可选地,所述将下一子目录确定为当前子目录的步骤,包括:

获取所述当前子目录的索引,根据所述索引和所述子目录排序,确定下一子目录,并将所述下一子目录作为当前子目录。

本发明还提供了一种流式文档子目录页码计算装置,所述流式文档具有多个页面以及多个子目录,所述装置包括:

位置范围获取模块,用于获取所述流式文档的所有所述页面的位置范围;

目录链接位置获取模块,用于获取所述流式文档的所有所述子目录的目录链接位置;

页码计算模块,用于根据所述位置范围和所述目录链接位置,计算每个所述子目录的页码。

可选地,所述位置范围获取模块,包括:

文档页表获取子模块,用于获取所述流式文档的文档页表;

位置范围获取子模块,用于从所述文档页表中,获取所有所述页面的位置范围。

可选地,所述页码计算模块,包括:

页面位置排序获取子模块,用于根据所有所述位置范围,将所有所述页面按照升序排序,得到页面位置排序;

子目录排序获取子模块,用于根据所有所述目录链接位置,将所有所述子目录按照升序排序,得到子目录排序;

页码计算子模块,用于根据所述页面位置排序和所述子目录排序,对比所述位置范围和所述目录链接位置,计算每个所述子目录的页码。

本发明还提供了一种电子设备,其特征在于,所述设备包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行如上任一项所述的流式文档子目录页码计算方法。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行如上任一项所述的流式文档子目录页码计算方法。

从以上技术方案可以看出,本发明具有以下优点:本发明通过获取流式文档的所有页面的位置范围;获取流式文档的所有子目录的目录链接位置;根据位置范围和目录链接位置,计算每个子目录的页码。解决了现有流式文档目录更新方式更新时间长,导致加载速度慢、用户体验差的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种流式文档子目录页码计算方法的步骤流程图;

图2为本发明另一实施例提供的一种流式文档子目录页码计算方法的步骤流程图;

图3为本发明实施例提供的根据位置范围和目录链接位置计算每个子目录的页码的步骤流程图;

图4为本发明实施例提供的一种流式文档子目录页码计算装置的结构框图。

具体实施方式

本发明实施例提供了一种流式文档子目录页码计算方法及装置,用于解决现有流式文档目录更新方式更新时间长,导致加载速度慢、用户体验差的技术问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明实施例提供的一种流式文档子目录页码计算方法的步骤流程图。

本发明提供的一种流式文档子目录页码计算方法,流式文档具有多个页面以及多个子目录,方法包括:

步骤101,获取流式文档的所有页面的位置范围;

在本发明实施例中,位置范围指文字或图片在文档中的唯一坐标,其是一个坐标值为正整数的相对坐标,根据文件的字节数可以确定该相对坐标。

在具体实现中,为了计算每个子目录的页码,首先需要获取流式文档的所有页面的位置范围。

例如,以NeoReader阅读器为例,一本1MB大小的epub文档,NeoReader定义的位置范围是[0,1048576)。假设该文档有十个章节,每个章节可以根据章节文件大小直接确定每一章的位置范围,从第一章到第十章的位置范围依次为:[0,1000),[1000,5000),[5000,12345),[12345,56789),[56789,67890),[67890,112345),[112345,156789),[156789,167890),[167890,178901),[178901,1048576)。

步骤102,获取流式文档的所有子目录的目录链接位置;

目录链接位置是每个子目录在文档中的唯一坐标,是一个正整数形式的相对坐标,可以根据文件的字节数确定。

在本发明实施例中,流式文档所有页面的位置范围覆盖了子目录的目录链接位置。因此,为了计算每个子目录的页码,需要获取每个子目录的目录链接位置。

步骤103,根据位置范围和目录链接位置,计算每个子目录的页码。

在获取到流式文档每个页面的位置范围和每个子目录的目录链接位置后,可以根据每个子目录的目录链接位置和每个页面的位置范围,匹配得到每个子目录所处的页面,该页面的页码即为对应子目录的页码。通过对每个子目录进行匹配,可以得到每个子目录的页码。

本发明通过获取流式文档的所有页面的位置范围;获取流式文档的所有子目录的目录链接位置;根据位置范围和目录链接位置,计算每个子目录的页码。解决了现有流式文档目录更新方式更新时间长,导致加载速度慢、用户体验差的技术问题。

请参阅图2,图2为本发明另一实施例提供的一种流式文档子目录页码计算方法的步骤流程图。具体可以包括以下步骤:

步骤201,获取流式文档的文档页表;

在本发明实施例中,文档页表由页面信息Page构成,是数组结构,一个Page中包含了该页的起始位置和结束位置;具体到本发明实施例,页表按照页码从小到大的顺序排序。

在一个示例中,以一本1MB大小的epub文档为例,假设该文档具有十章,如果流式文档未排版,则页表就是章节位置表,里面记录了每个章节的起始位置和结束位置;如果流式文档已排版,则页表范围就是每一页的起始位置和结束位置,且每一章节内的页表范围一定处于[章节起始位置,章节结束位置)之间。

步骤202,从文档页表中,提取所有页面的位置范围;

在获取到流式文档的文档页表后,便可以从中获取每一个页面的位置范围。

步骤203,获取流式文档的所有子目录的目录链接位置;

目录链接位置是每个子目录在文档中的唯一坐标,是一个正整数形式的相对坐标,可以根据文件的字节数确定。

在本发明实施例中,流式文档所有页面的位置范围覆盖了子目录的目录链接位置。因此,为了计算每个子目录的页码,需要获取每个子目录的目录链接位置。

步骤204,根据所有位置范围,将所有页面按照升序排序,得到页面位置排序;

在本发明实施例中,在获取到所有页面的位置范围后,可以按照升序将所有位置范围进行排序,得到页面位置排序。

步骤205,根据所有目录链接位置,将所有子目录按照升序排序,得到子目录排序;

在本发明实施例中,在获取到所有子目录的目录链接位置后,可以按照升序将所有目录链接位置进行排序,得到相应的子目录的子目录排序。

步骤206,根据页面位置排序和子目录排序,对比位置范围和目录链接位置,计算每个子目录的页码。

在本发明实施例中,当获取到页面位置排序和子目录排序后,可以基于页面位置排序和子目录排序,将目录链接位置与页面的位置范围进行匹配,匹配得到每个子目录所处的页面,该页面的页码即为对应子目录的页码。通过对每个子目录进行匹配,可以得到每个子目录的页码。

在一个示例中,如图3所示,步骤206可以包括以下子步骤:

S61,根据页面排序确定当前页面,并获取当前页面的当前位置范围和页面页码;

S62,根据子目录排序,在未确定子目录中确定当前子目录;

S63,获取当前子目录的目标目录链接位置;

S64,判断目标目录链接位置是否处于当前位置范围之内;

S65,当目标目录链接位置处于当前位置范围之内时,将页面页码确定为当前子目录的页码;

S66,将下一子目录确定为当前子目录,并返回获取当前子目录的目标目录链接位置的步骤;

S67,当目标目录链接位置大于当前位置范围时,将下一页面确定为当前页面,获取当前页面的当前位置范围和页面页码,并返回根据子目录排序,在未确定子目录中确定当前子目录的步骤,以计算每个子目录的页码。

在具体实现中,可以根据页面排序确定当前页面,当前页面为未比对的页面中,排序最靠前的页面,如果所有页面均为比对,则当前页面为页码最小的页面。进一步地,还可以根据子目录排序,确定当前子目录,当前子目录为未确定页码的子目录中,排序最靠前的子目录,如果所有子目录的页码均未确定,则当前子目录为子目录排序中的第一个子目录。以第一子目录为当前子目录为例,在确定了当前子目录后,依次将每一个页面的位置范围与当前子目录的目标目录链接位置进行比对(由于还未与任何子目录进行比对,所以所有的页面的位置范围均为未比对位置范围),当比对发现当前子目录的目标目录链接位置大于当前页面的位置范围时,则说明当前子目录的目标目录链接位置处于后面的页面中,则根据页面位置排序,取下一页与当前子目录的目标目录链接位置比对;当比对到目标目录链接位置所处的目标位置范围时,停止比对,将目标位置范围对应的页面的页码确定为当前子目录的页码。并将当前子目录的索引记录到预定义的变量lastTocIndex中,并标记为最后更新的索引。

接着获取变量中的索引,结合子目录排序,确定下一子目录,将下一子目录确定为当前子目录,并重复与当前页面的位置范围的比对,直到计算得到每一个子目录的页码为止。

需要说明的是,子目录的索引可以为子目录在目录表中的角标,每个索引都是唯一且与子目录一一对应的。

预定义的变量lastTocIndex的初始值可以为-1,意为没有任何一个子目录的页码已确定。对于每一个当前子目录的确定,都可以通过从lastTocIndex获取索引,结合子目录排序,将处于该子目录索引下面的第一个子目录作为当前子目录。例如当从lastTocIndex中获取到的索引为-1时,取角标为1-+1=0的子目录作为当前子目录,即取第一个子目录作为当前子目录。以此类推,每一次确定了一个子目录的页码后,将其索引保存在lastTocIndex中,则可依照顺序遍历下一个子目录。

由上述内容可知,计算所有子目录的页码的过程中,子目录只遍历一遍,而页面的位置范围由于每次与子目录进行比对时,都是按照页面位置排序取未比对的页面的位置范围进行比对,因此,页面的位置范围也只遍历一次,相当于页表只遍历了一次,相比于现有技术,大大减少了对页面页表的遍历次数。以一本145MB大小的epub文档为例,该文档包含了3362条子目录,排版后,总页码有15917,在现有方案中,更新完所有子目录的页码,大概需要花费4500ms,而本发明实施例只需花费15ms。相比于现有技术,优化了子目录页码的计算速度,提高了目录加载速度,以及提高了用户的阅读体验。

本发明通过获取流式文档的所有页面的位置范围;获取流式文档的所有子目录的目录链接位置;根据位置范围和目录链接位置,计算每个子目录的页码。解决了现有流式文档目录更新方式更新时间长,导致加载速度慢、用户体验差的技术问题。

请参阅图4,图4为本发明实施例提供的一种流式文档子目录页码计算装置的结构框图。

本发明实施例提供了一种流式文档子目录页码计算装置,流式文档具有多个页面以及多个子目录,装置包括:

位置范围获取模块401,用于获取流式文档的所有页面的位置范围;

目录链接位置获取模块402,用于获取流式文档的所有子目录的目录链接位置;

页码计算模块403,用于根据位置范围和目录链接位置,计算每个子目录的页码。

在本发明实施例中,位置范围获取模块401,包括:

文档页表获取子模块,用于获取流式文档的文档页表;

位置范围获取子模块,用于从文档页表中,获取所有页面的位置范围。

在本发明实施例中,页码计算模块403,包括:

页面位置排序获取子模块,用于根据所有位置范围,将所有页面按照升序排序,得到页面位置排序;

子目录排序获取子模块,用于根据所有目录链接位置,将所有子目录按照升序排序,得到子目录排序;

页码计算子模块,用于根据页面位置排序和子目录排序,对比位置范围和目录链接位置,计算每个子目录的页码。

在本发明实施例中,页码计算子模块,包括:

当前页面确定单元,用于根据页面排序确定当前页面,并获取当前页面的当前位置范围和页面页码;

当前子目录确定单元,用于根据子目录排序,在未确定子目录中确定当前子目录;

目标目录链接位置获取单元,用于获取当前子目录的目标目录链接位置;

判断单元,用于判断目标目录链接位置是否处于当前位置范围之内;

页码确定单元,用于当目标目录链接位置处于当前位置范围之内时,将页面页码确定为当前子目录的页码;

第一返回单元,用于将下一子目录确定为当前子目录,并返回获取当前子目录的目标目录链接位置的步骤;

第二返回单元,用于当目标目录链接位置大于当前位置范围时,将下一页面确定为当前页面,获取当前页面的当前位置范围和页面页码,并返回根据子目录排序,在未确定子目录中确定当前子目录的步骤,以计算每个子目录的页码。

在本发明实施例中,第一返回单元,包括:

当前子目录确定子单元,用于获取当前子目录的索引,根据索引和子目录排序,确定下一子目录,并将下一子目录作为当前子目录,并返回执行目标目录链接位置确定单元。

本发明实施例还提供了一种电子设备,设备包括处理器以及存储器:

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行本发明实施例的流式文档子目录页码计算方法。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行本发明实施例的流式文档子目录页码计算方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种流式文档子目录页码计算方法及装置
  • 一种流式文档子目录页码计算方法及装置
技术分类

06120112923594