文档处理方法和装置
技术领域
本发明涉及文档转换技术领域,尤其涉及一种文档处理方法和装置。
背景技术
随着网络技术的发展,可扩展标记语言(eXtensible Markup Language,简称XML)已被广泛应用于数字出版相关领域,随之而来的,将Word文档的科技论文稿件转换成XML文档已成为迫切需求。
现有技术中,可以采用XML文档所对应的转换语言或转换算法,直接将Word文档转换成XML文档。其中,在Word文档中具有浮动图的时候,在转换Word文档中的文字内容的时候,也需要对Word文档中的浮动图进行转换;在对Word文档中的浮动图进行转换时,浮动图具有对应的锚点,可以依据浮动图对应的锚点的位置,对浮动图进行转换,进而浮动在XML文档中位置是锚点的位置。
然而现有技术中,浮动图的位置与浮动图对应的锚点的位置,两者通常是不在同一个位置的,即位置是不一致的,进而依据浮动图对应的锚点的位置对浮动图进行转换之后,会导致浮动图在XML文档中的位置出现错乱,进而导致XML文档的转换结果不准确。
发明内容
本发明提供一种文档处理方法和装置,能够避免浮动图在XML文档中的位置出现错乱的问题,提高XML文档的转换结果的准确性。
一方面,本发明提供一种文档处理方法,包括:
获取待处理的文档,其中,所述待处理的文档包括至少一个浮动图,每一个所述浮动图具有对应的锚点;
确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数;
根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置;
根据每一个所述浮动图的插入位置,对所述待处理的文档进行转换处理,得到XML文档。
进一步地,确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数,包括:
确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的垂直距离,并确定每一个所述浮动图所对应的锚点所在段落的行间距;
将每一个所述浮动图对应的垂直距离除以每一个所述浮动图对应的行间距,得到每一个所述浮动图对应的计算值;
将每一个所述浮动图对应的计算值取整,得到每一个所述浮动图对应的文本行数。
进一步地,根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置,包括:
将每一个所述浮动图对应的文本行数,作为每一个所述浮动图对应的第一初始行数;
获取每一个所述浮动图对应的锚点所在段落的行数总和,将每一个所述浮动图对应的行数总和,作为每一个所述浮动图对应的第二初始行数;
根据每一个所述浮动图对应的第一初始行数和第二初始行数,确定每一个所述浮动图的插入位置。
进一步地,根据每一个所述浮动图对应的第一初始行数和第二初始行数,确定每一个所述浮动图的插入位置,包括:
对于每一个所述浮动图,设置的i的初始值为0,并重复以下过程,直至确定出每一个所述浮动图的插入位置:
将每一个所述浮动图对应的第一初始行数减去每一个所述浮动图对应的第二初始行数,得到每一个所述浮动图对应的行数差;
若每一个所述浮动图对应的行数差小于1,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置,其中,i为大于等于0的整数,第1个段落为锚点所在段落,第1+i个段落为锚点所在段落之后的第i个段落;
若每一个所述浮动图对应的行数差等于1,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落,是否为图题或者分图题;若是,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置;若否,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落的下一个段落,为每一个所述浮动图的插入位置;
若每一个所述浮动图对应的行数差大于1,则确定每一个所述浮动图对应的行数差为每一个所述浮动图对应的第一初始行数,并确定每一个所述浮动图对应的锚点所对应的第2+i个段落的行数总和,为所述第二初始行数,i累加1。
进一步地,根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置,包括:
将每一个所述浮动图对应的文本行数之后的下一段落,作为每一个所述浮动图的插入位置。
进一步地,根据每一个所述浮动图的插入位置,对所述待处理的文档进行转换处理,得到XML文档,包括:
对每一个所述浮动图进行剪切处理,得到剪切后的每一个浮动图;
对剪切后的每一个浮动图进行内嵌转换,得到每一个浮动图对应的第一内嵌图;
根据每一个所述浮动图的插入位置,对每一个浮动图对应的第一内嵌图进行图片插入处理,得到转换文档;
对转换文档进行文档类型转换处理,得到XML文档。
进一步地,根据每一个所述浮动图的插入位置,对每一个浮动图对应的第一内嵌图进行图片插入处理,得到转换文档,包括:
针对每一个浮动图,均执行以下过程:
确定浮动图的插入位置处的第二内嵌图的个数;
在所述个数为0时,则将所述浮动图对应的第一内嵌图,插入到所述浮动图的插入位置的段首上;
在所述个数为1时,则获取所述第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述宽度小于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的右侧;在所述宽度大于等于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的左侧;
在所述个数为j时,则获取j个第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述水平距离大于j个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第j个第二内嵌图的右侧;在所述水平距离小于等于第1个第二内嵌图的宽度时,将所述浮动图对应的第一内嵌图插在第1个第二内嵌图的左侧;在所述水平距离大于前n个第二内嵌图的宽度之和,且小于等于前n+1个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第n个第二内嵌图和第n+1个第二内嵌图之间,其中,j为大于等于2的正整数,n为大于等于1且小于j的正整数,第1个第二内嵌图为按照由左向右的顺序,排在第1个的第二内嵌图,第j个第二内嵌图为按照由左向右的顺序,排在第j个的第二内嵌图。
进一步地,在确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数之前,还包括:
确定每一个所述浮动图对应的预设范围内,是否存在其他浮动图和/或第三内嵌图;
若存在至少一个其他浮动图和至少一个第三内嵌图,则将每一个第三内嵌图分别转换为浮动转换图,将所述至少一个其他浮动图、至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
若存在至少一个其他浮动图,则将所述至少一个其他浮动图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
若存在至少一个第三内嵌图,将所述至少一个第三内嵌图分别转换为浮动转换图,则将至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图。
另一方面,本发明提供了一种文档处理装置,包括:
获取单元,用于获取待处理的文档,其中,所述待处理的文档包括至少一个浮动图,每一个所述浮动图具有对应的锚点;
第一确定单元,用于确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数;
第二确定单元,用于根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置;
转换单元,用于根据每一个所述浮动图的插入位置,对所述待处理的文档进行转换处理,得到XML文档。
进一步地,所述第一确定单元,包括:
第一确定模块,用于确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的垂直距离,并确定每一个所述浮动图所对应的锚点所在段落的行间距;
计算模块,用于将每一个所述浮动图对应的垂直距离除以每一个所述浮动图对应的行间距,得到每一个所述浮动图对应的计算值;
取整模块,用于将每一个所述浮动图对应的计算值取整,得到每一个所述浮动图对应的文本行数。
进一步地,所述第二确定单元,包括:
第一处理模块,用于将每一个所述浮动图对应的文本行数,作为每一个所述浮动图对应的第一初始行数;
第二处理模块,用于获取每一个所述浮动图对应的锚点所在段落的行数总和,将每一个所述浮动图对应的行数总和,作为每一个所述浮动图对应的第二初始行数;
第二确定模块,用于根据每一个所述浮动图对应的第一初始行数和第二初始行数,确定每一个所述浮动图的插入位置。
进一步地,所述第二确定模块,具体用于:
对于每一个所述浮动图,设置的i的初始值为0,并重复以下过程,直至确定出每一个所述浮动图的插入位置:
将每一个所述浮动图对应的第一初始行数减去每一个所述浮动图对应的第二初始行数,得到每一个所述浮动图对应的行数差;
若每一个所述浮动图对应的行数差小于1,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置,其中,i为大于等于0的整数,第1个段落为锚点所在段落,第1+i个段落为锚点所在段落之后的第i个段落;
若每一个所述浮动图对应的行数差等于1,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落,是否为图题或者分图题;若是,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置;若否,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落的下一个段落,为每一个所述浮动图的插入位置;
若每一个所述浮动图对应的行数差大于1,则确定每一个所述浮动图对应的行数差为每一个所述浮动图对应的第一初始行数,并确定每一个所述浮动图对应的锚点所对应的第2+i个段落的行数总和,为所述第二初始行数,i累加1。
进一步地,所述第二确定单元,用于将每一个所述浮动图对应的文本行数之后的下一段落,作为每一个所述浮动图的插入位置。
进一步地,所述转换单元,包括:
剪切模块,用于对每一个所述浮动图进行剪切处理,得到剪切后的每一个浮动图;
第一转换模块,用于对剪切后的每一个浮动图进行内嵌转换,得到每一个浮动图对应的第一内嵌图;
插入模块,用于根据每一个所述浮动图的插入位置,对每一个浮动图对应的第一内嵌图进行图片插入处理,得到转换文档;
第二转换模块,用于对转换文档进行文档类型转换处理,得到XML文档。
进一步地,所述插入模块,具体用于:
针对每一个浮动图,均执行以下过程:
确定浮动图的插入位置处的第二内嵌图的个数;
在所述个数为0时,则将所述浮动图对应的第一内嵌图,插入到所述浮动图的插入位置的段首上;
在所述个数为1时,则获取所述第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述宽度小于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的右侧;在所述宽度大于等于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的左侧;
在所述个数为j时,则获取j个第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述水平距离大于j个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第j个第二内嵌图的右侧;在所述水平距离小于等于第1个第二内嵌图的宽度时,将所述浮动图对应的第一内嵌图插在第1个第二内嵌图的左侧;在所述水平距离大于前n个第二内嵌图的宽度之和,且小于等于前n+1个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第n个第二内嵌图和第n+1个第二内嵌图之间,其中,j为大于等于2的正整数,n为大于等于1且小于j的正整数,第1个第二内嵌图为按照由左向右的顺序,排在第1个的第二内嵌图,第j个第二内嵌图为按照由左向右的顺序,排在第j个的第二内嵌图。
进一步地,所述装置还包括:
第三确定单元,用于确定每一个所述浮动图对应的预设范围内,是否存在其他浮动图和/或第三内嵌图;
第一处理单元,用于若存在至少一个其他浮动图和至少一个第三内嵌图,则将每一个第三内嵌图分别转换为浮动转换图,将所述至少一个其他浮动图、至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第二处理单元,用于若存在至少一个其他浮动图,则将所述至少一个其他浮动图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第三处理单元,用于若存在至少一个第三内嵌图,将所述至少一个第三内嵌图分别转换为浮动转换图,则将至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图。
本发明提供了一种文档处理方法和装置,针对待处理的文档中的每一个浮动图,通过获取该浮动图与该浮动图所对应的锚点之间的文本行数,从而根据该文本行数能够确定出该浮动图的插入位置,该插入位置也即该浮动图显示在待处理的文档中的位置,这样,基于该插入位置对该浮动图进行转换,能够使得浮动图转换后在XML文档中的位置与在待处理的文档中所显示的位置一致,避免了浮动图转换后在XML文档中出现位置错乱的问题,提高了XML文档的转换结果的准确性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本发明实施例一提供的一种文档处理方法的流程图;
图2为本发明实施例二提供的一种文档处理方法的流程图;
图3为本发明实施例三提供的一种文档处理装置的结构示意图;
图4为本发明实施例四提供的一种文档处理装置的结构示意图;
图5为本发明实施例五提供的一种文档处理设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一提供的一种文档处理方法的流程图,如图1所示,以该实施例提供的方法应用于文档处理装置来进行示例说明,该方法包括:
步骤101:获取待处理的文档,其中,所述待处理的文档包括至少一个浮动图,每一个所述浮动图具有对应的锚点。
实际应用中,本实施例的执行主体可以为文档处理装置,该文档处理装置可以为程序软件,也可以为存储有相关计算机程序的介质,例如,U盘等;或者,该文档处理装置还可以为集成或安装有相关计算机程序的实体设备,例如,芯片、智能终端、电脑、服务器等。
在本实施例中,待处理的文档为word文档。
步骤102:确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数。
实际应用中,浮动图与该浮动图所对应的锚点之间的文本行数通常无法直接获取到,但可获取到浮动图与该浮动图所对应的锚点之间的垂直距离,然后根据该浮动图对应的垂直距离,计算得到该浮动图与该浮动图所对应的锚点之间的文本行数。举例来说,可获取该浮动图所对应的锚点所在段落的行间距,以及获取待处理的文档中其它m(m可为大于等于0的正整数)个段落的行间距,然后根据锚点所在段落的行间距和其它m个段落的行间距,计算得到平均行间距,再利用该浮动图与该浮动图所对应的锚点之间的垂直距离除以平均行间距,得到一个计算值,最后对该计算值进行取整,将取整后得到的值作为该浮动图与该浮动图所对应的锚点之间的文本行数。其中,可按照四舍五入的方式进行取整。
值得说明的是,为便于表述,上述只是以一个浮动图进行说明,而针对其它浮动图均可基于相应的垂直距离计算得到文本行数差。另外,根据垂直距离计算文本行数的具体过程也并不限于上述举例。
步骤103:根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置。
实际应用中,实现步骤103的一种具体方式可为:将每一个所述浮动图对应的文本行数之后的下一段落,作为每一个所述浮动图的插入位置。以1个浮动图举例来说,假设确定出该浮动图与该浮动图所对应的锚点之间的文本行数为3行,那么按照由上至小的顺序,可将第3行之后的下一段落作为该浮动图的插入位置。
步骤104:根据每一个所述浮动图的插入位置,对所述待处理的文档进行转换处理,得到XML文档。
实际应用中,在确定每一个浮动图的插入位置后,便可根据插入位置完成相应浮动图的转换,也即,将相应浮动图从待处理的文档中去掉,然后将根据相应浮动图转换成的第一内嵌图插在相应插入位置处,那么,在针对待处理的文档中的所有浮动图均完成转换后,在进行XML转换,以得到XML文档。
本发明实施例提供了一种文档处理方法和装置,针对待处理的文档中的每一个浮动图,通过获取该浮动图与该浮动图所对应的锚点之间的文本行数,从而根据该文本行数能够确定出该浮动图的插入位置,该插入位置也即该浮动图显示在待处理的文档中的位置,这样,基于该插入位置对该浮动图进行转换,能够使得浮动图转换后在XML文档中的位置与在待处理的文档中所显示的位置一致,避免了浮动图转换后在XML文档中出现位置错乱的问题,提高了XML文档的转换结果的准确性;而且,本方案通过确定的浮动图与浮动图所对应的锚点之间的文本行数,自动确定出浮动图的插入位置,并根据插入位置进行自动转换,整个转换过程无需人工干预,从而节省了大量人力,并且也极大提高了处理效率。
图2为本发明实施例二提供的一种文档处理方法的流程图,如图2所示,该方法可以包括:
步骤201:获取待处理的文档,其中,待处理的文档包括至少一个浮动图,每一个浮动图具有对应的锚点。
在本实施例中,在执行步骤202之前,还可包括如下步骤:
第一步骤,确定每一个所述浮动图对应的预设范围内,是否存在其他浮动图和/或第三内嵌图;
第二步骤,若存在至少一个其他浮动图和至少一个第三内嵌图,则将每一个第三内嵌图分别转换为浮动转换图,将所述至少一个其他浮动图、至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第三步骤,若存在至少一个其他浮动图,则将所述至少一个其他浮动图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第四步骤,若存在至少一个第三内嵌图,将所述至少一个第三内嵌图分别转换为浮动转换图,则将至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图。
其中,当锚点所在段落的邻近上下均没有其他文字段落时,则该预设范围可以按照接下来的方式进行确定:以锚点为基准,向上找第一个不是空段落的第一位置,向下找第一个不是空段落的第二位置,则第一位置和第二位置中间所构成的范围为预设范围。
实际应用中,还存在一种特殊情况,举例来说,大图是内嵌图,而在大图中存在写在文本框中的浮动图,如“R”,那么此时为保持两个图之间的叠加效果,需要将大图转换为浮动图,然后再用组合的方式,将两个图组合为一张图。
值得说明的是,以一个浮动图为例,若该浮动图对应的预设范围内不存在其他浮动图和第三内嵌图时,可直接执行步骤202,若存在其他浮动图和第三内嵌图中的至少一种时,则需要先通过上述过程完成相应的组合,得到组合后的浮动图后,再执行步骤202,那么针对此情形,则以下步骤中的浮动图指的是组合后的浮动图,相应的,浮动图所对应的锚点指的是组合后的浮动图所对应的锚点。
其中,为了区分表述,将第三内嵌图转换成的浮动图称之为浮动转换图。且,将第一内嵌图转换为浮动转换图,以及将多个图组合为一张图可通过现有技术实现,例如,采用Visual Basic宏语言(Visual Basic for Applications,简称vba)提供的组合方法Group()将多个图组合为一张图。
步骤202:确定每一个浮动图与每一个浮动图所对应的锚点之间的文本行数。
在本实施例中,具体可通过如下步骤确定浮动图与浮动图所对应的锚点之间的文本行数:
第一步骤,确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的垂直距离,并确定每一个所述浮动图所对应的锚点所在段落的行间距;
第二步骤,将每一个所述浮动图对应的垂直距离除以每一个所述浮动图对应的行间距,得到每一个所述浮动图对应的计算值;
第三步骤,将每一个所述浮动图对应的计算值取整,得到每一个所述浮动图对应的文本行数。
步骤203:根据每一个浮动图对应的文本行数,确定每一个浮动图的插入位置。
实际应用中,为了能够确定更加准确的插入位置,则在确定出文本行数之后,还可通过如下步骤确定插入位置:
第一步骤,将每一个所述浮动图对应的文本行数,作为每一个所述浮动图对应的第一初始行数;
第二步骤,获取每一个所述浮动图对应的锚点所在段落的行数总和,将每一个所述浮动图对应的行数总和,作为每一个所述浮动图对应的第二初始行数;
第三步骤,根据每一个所述浮动图对应的第一初始行数和第二初始行数,确定每一个所述浮动图的插入位置。
具体的,上述第三步骤还可通过如下子步骤实现:
对于每一个所述浮动图,设置的i的初始值为0,并重复以下过程,直至确定出每一个所述浮动图的插入位置:
第一子步骤,将每一个所述浮动图对应的第一初始行数减去每一个所述浮动图对应的第二初始行数,得到每一个所述浮动图对应的行数差;
第二子步骤,若每一个所述浮动图对应的行数差小于1,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置,其中,i为大于等于0的整数,第1个段落为锚点所在段落,第1+i个段落为锚点所在段落之后的第i个段落;
第三子步骤,若每一个所述浮动图对应的行数差等于1,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落,是否为图题或者分图题;若是,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置;若否,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落的下一个段落,为每一个所述浮动图的插入位置;
第四子步骤,若每一个所述浮动图对应的行数差大于1,则确定每一个所述浮动图对应的行数差为每一个所述浮动图对应的第一初始行数,并确定每一个所述浮动图对应的锚点所对应的第2+i个段落的行数总和,为所述第二初始行数,i累加1。
以其中一个浮动图a举例来说,首先,将浮动图a对应的文本行数浮动图a的第一初始行数lines,获取浮动图a对应的锚点所在段落的行数总和并作为浮动图a的第二初始行数pLines,i从0开始,也即从浮动图a对应的锚点所在段落开始执行,计算行数差lines-pLines,若计算结果x小于1,则在浮动图a对应的锚点所对应的第1+0个段落(即第1个段落,其中,第1个段落为锚点所在段落)的上方建立空段落,并将该空段落作为浮动图a的插入位置;若x等于1,则需确定浮动图a对应的锚点所对应的第1+0个段落是否为图题或者分图题,若是,则在浮动图a对应的锚点所对应的第1个段落的上方建立一个空段落,并将该空段落作为浮动图a的插入位置;若x大于1,则获取浮动图a对应的锚点所对应的第2+0个段落(即第2个段落,也即锚点所在段落的下一个段落)的行数总和,并将其作为新的pLines,以及利用x对lines进行更新,然后再返回执行计算lines(即为x)-pLines(即为锚点所在段落的下一个段落的行数总和),若计算结果y小于1,则在浮动图a对应的锚点所对应的第1+1个段落(即第2个段落,也即锚点所在段落的下一个段落)的上方建立空段落,并将该空段落作为浮动图a的插入位置;若y等于1,则需确定浮动图a对应的锚点所对应的第1+1个段落是否为图题或者分图题,若是,则在浮动图a对应的锚点所对应的第2个段落的上方建立一个空段落,并将该空段落作为浮动图a的插入位置;若y大于1,则需再获取浮动图a对应的锚点所对应的第2+1个段落(即第3个段落,也即锚点所在段落的下一个段落的下一个段落)的行数总和,并将其作为新的pLines,以及利用y对lines进行更新,直至确定出浮动图a的插入位置。
步骤204:对每一个浮动图进行剪切处理,得到剪切后的每一个浮动图。
实际应用中,可通过现有技术将浮动图从待处理的文档中剪切出来。
步骤205:对剪切后的每一个浮动图进行内嵌转换,得到每一个浮动图对应的第一内嵌图。
步骤206:根据每一个浮动图的插入位置,对每一个浮动图对应的第一内嵌图进行图片插入处理,得到转换文档。
在本实施例中,对浮动图对应的第一内嵌图进行图片插入处理还可包括如下步骤:
针对每一个浮动图,均执行以下过程:
第一步骤,确定浮动图的插入位置处的第二内嵌图的个数;
第二步骤,在所述个数为0时,则将所述浮动图对应的第一内嵌图,插入到所述浮动图的插入位置的段首上;
第三步骤,在所述个数为1时,则获取所述第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述宽度小于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的右侧;在所述宽度大于等于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的左侧;
第四步骤,在所述个数为j时,则获取j个第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述水平距离大于j个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第j个第二内嵌图的右侧;在所述水平距离小于等于第1个第二内嵌图的宽度时,将所述浮动图对应的第一内嵌图插在第1个第二内嵌图的左侧;在所述水平距离大于前n个第二内嵌图的宽度之和,且小于等于前n+1个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第n个第二内嵌图和第n+1个第二内嵌图之间,其中,j为大于等于2的正整数,n为大于等于1且小于j的正整数,第1个第二内嵌图为按照由左向右的顺序,排在第1个的第二内嵌图,第j个第二内嵌图为按照由左向右的顺序,排在第j个的第二内嵌图。
实际应用中,至少存在如下情形:
情形1:浮动图的插入位置处不存在第二内嵌图,此时可直接将浮动图对应的第一内嵌图,插入到浮动图的插入位置的段首上。
情形2:浮动图的插入位置处存在1个第二内嵌图,假设第二内嵌图的宽度为5.23cm,而该浮动图与该浮动图所对应的锚点之间的水平距离约为11.278cm,由于5.23cm<11.278cm,可确定该浮动图之前显示在该第二内嵌图之后,因此,将浮动图对应的第一内嵌图插在第二内嵌图的右侧;否则,说明该浮动图之前显示在该第二内嵌图之前,从而将浮动图对应的第一内嵌图插在第二内嵌图的左侧。
情形3,浮动图的插入位置处存在多个第二内嵌图,以存在s、d、f这3个第二内嵌图为例,其中,s、d、f按照由左向右的顺序显示。若该浮动图与该浮动图所对应的锚点之间的水平距离D大于s、d、f这3个第二内嵌图的宽度之和,则说明该浮动图之前显示在f之后,从而此时将该浮动图对应的第一内嵌图插在f的右侧;若D小于等于s的宽度,则说明该浮动图之前显示在s之前,从而此时将该浮动图对应的第一内嵌图插在s的左侧;若D大于s的宽度,但小于等于s、d这两个第二内嵌图的宽度之和,则说明该浮动图之前显示在s之后,且在d之前,从而此时将将该浮动图对应的第一内嵌图插在s和d之间;若D大于s、d这两个第二内嵌图的宽度之和,且小于s、d、f这3个第二内嵌图的宽度之和,则说明该浮动图之前显示在d之后,且在f之前,从而此时将该浮动图对应的第一内嵌图插在d和f之间。
情形4,浮动图k的插入位置处不存在第二内嵌图,但存在其它浮动图,以存在一个其它浮动图g为例,此时可直接将浮动图k对应的第一内嵌图,插入到浮动图的插入位置的段首上,那么在转换浮动图g时,则浮动图k已变为内嵌图的形式,从而接下来可按照上述情形2的方式来确定浮动图g对应的第一内嵌图是插入在浮动图k对应的第一内嵌图的右侧还是左侧。
步骤207:对转换文档进行文档类型转换处理,得到XML文档。
在本实施例中,将转换文档转换为XML文档可通过现有技术实现。
上述步骤中,获取相关数据的关键代码可如下:
MSWord.Shape shape=GetShape(shapeName);//获取浮动图
MSWord.Range rAnchor=shape.Anchor;//获取锚点
MSWord.Range rPara=rAnchor.Paragraphs[1].Range;//获取锚点所在段落
int pLines=rPara.ComputeStatistics
(MSWord.WdStatistics.wdStatisticsLines);//锚点所在段落的行数
float positionV=shape.Top;//浮动图与锚点之间的垂直距离
float positionH=shape.Left;//浮动图与锚点之间的水平距离
float lineSpace=rAnchor.Paragraphs[1].LineSpacing;//锚点所在段落的行间距
int lines=(int)(positionV/lineSpace);//偏移距离内的行数
例如,通过上述代码获取到的参数值可如下表1所示。
表1参数名和参数值
参数 |
参数值 |
lineSpace |
18pt |
positionV |
51.5pt |
positionH |
319.7pt |
pLines |
1行 |
本实施例在浮动图的预设范围内存在其他浮动图和/或第三内嵌图时,通过组合的方式组合为一张图,从而能够确保浮动图与附近其他浮动图和/或第三内嵌图的关联关系;通过浮动图与该浮动图所对应的锚点之间的文本行数,循环计算行数差,然后根据行数差能够更加准确的确定出浮动图的插入位置,而且当行数差为1时,通过判断相应段落是否为图题或者是分图题,从而能够更进一步的减小误差,进一步提高所确定的插入位置的准确性;通过判断浮动图对应的预设范围内是否存在第二内嵌图,从而在确定存在时,能够基于浮动图与该浮动图所对应的锚点之间的水平距离,确定出该浮动图与第二内嵌图之间的相对位置关系,进而后续能够将该浮动图对应的第一内嵌图插在更加准确的位置处,保证了位置的相对一致性,大大提高了XML文档转换结果的准确性。
图3为本发明实施例三提供的文档处理装置的结构示意图,包括:
获取单元301,用于获取待处理的文档,其中,所述待处理的文档包括至少一个浮动图,每一个所述浮动图具有对应的锚点;
第一确定单元302,用于确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的文本行数;
第二确定单元303,用于根据每一个所述浮动图对应的文本行数,确定每一个所述浮动图的插入位置;
转换单元304,用于根据每一个所述浮动图的插入位置,对所述待处理的文档进行转换处理,得到XML文档。
在本实施例中,本实施例的文档处理装置可执行本发明实施例一提供的文档处理方法,其实现原理相类似,此处不再赘述。
本发明实施例针对待处理的文档中的每一个浮动图,通过获取该浮动图与该浮动图所对应的锚点之间的文本行数,从而根据该文本行数能够确定出该浮动图的插入位置,该插入位置也即该浮动图显示在待处理的文档中的位置,这样,基于该插入位置对该浮动图进行转换,能够使得浮动图转换后在XML文档中的位置与在待处理的文档中所显示的位置一致,避免了浮动图转换后在XML文档中出现位置错乱的问题,提高了XML文档的转换结果的准确性。
图4为本发明实施例四提供的文档处理装置的结构示意图,在实施例三的基础上,如图4所示,
所述第一确定单元302,包括:
第一确定模块3021,用于确定每一个所述浮动图与每一个所述浮动图所对应的锚点之间的垂直距离,并确定每一个所述浮动图所对应的锚点所在段落的行间距;
计算模块3022,用于将每一个所述浮动图对应的垂直距离除以每一个所述浮动图对应的行间距,得到每一个所述浮动图对应的计算值;
取整模块3023,用于将每一个所述浮动图对应的计算值取整,得到每一个所述浮动图对应的文本行数。
进一步地,所述第二确定单元303,包括:
第一处理模块3031,用于将每一个所述浮动图对应的文本行数,作为每一个所述浮动图对应的第一初始行数;
第二处理模块3032,用于获取每一个所述浮动图对应的锚点所在段落的行数总和,将每一个所述浮动图对应的行数总和,作为每一个所述浮动图对应的第二初始行数;
第二确定模块3033,用于根据每一个所述浮动图对应的第一初始行数和第二初始行数,确定每一个所述浮动图的插入位置。
进一步地,所述第二确定模块3033,具体用于:
对于每一个所述浮动图,设置的i的初始值为0,并重复以下过程,直至确定出每一个所述浮动图的插入位置:
将每一个所述浮动图对应的第一初始行数减去每一个所述浮动图对应的第二初始行数,得到每一个所述浮动图对应的行数差;
若每一个所述浮动图对应的行数差小于1,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置,其中,i为大于等于0的整数,第1个段落为锚点所在段落,第1+i个段落为锚点所在段落之后的第i个段落;
若每一个所述浮动图对应的行数差等于1,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落,是否为图题或者分图题;若是,则在每一个所述浮动图对应的锚点所对应的第1+i个段落的上方,建立一个空段落,并将所述空段落作为每一个所述浮动图的插入位置;若否,则确定每一个所述浮动图对应的锚点所对应的第1+i个段落的下一个段落,为每一个所述浮动图的插入位置;
若每一个所述浮动图对应的行数差大于1,则确定每一个所述浮动图对应的行数差为每一个所述浮动图对应的第一初始行数,并确定每一个所述浮动图对应的锚点所对应的第2+i个段落的行数总和,为所述第二初始行数,i累加1。
进一步地,所述第二确定单元303,用于将每一个所述浮动图对应的文本行数之后的下一段落,作为每一个所述浮动图的插入位置。
进一步地,所述转换单元304,包括:
剪切模块3041,用于对每一个所述浮动图进行剪切处理,得到剪切后的每一个浮动图;
第一转换模块3042,用于对剪切后的每一个浮动图进行内嵌转换,得到每一个浮动图对应的第一内嵌图;
插入模块3043,用于根据每一个所述浮动图的插入位置,对每一个浮动图对应的第一内嵌图进行图片插入处理,得到转换文档;
第二转换模块3044,用于对转换文档进行文档类型转换处理,得到XML文档。
进一步地,所述插入模块3043,具体用于:
针对每一个浮动图,均执行以下过程:
确定浮动图的插入位置处的第二内嵌图的个数;
在所述个数为0时,则将所述浮动图对应的第一内嵌图,插入到所述浮动图的插入位置的段首上;
在所述个数为1时,则获取所述第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述宽度小于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的右侧;在所述宽度大于等于所述水平距离时,将所述浮动图对应的第一内嵌图插在所述第二内嵌图的左侧;
在所述个数为j时,则获取j个第二内嵌图的宽度,并获取所述浮动图与所述浮动图所对应的锚点之间的水平距离;在所述水平距离大于j个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第j个第二内嵌图的右侧;在所述水平距离小于等于第1个第二内嵌图的宽度时,将所述浮动图对应的第一内嵌图插在第1个第二内嵌图的左侧;在所述水平距离大于前n个第二内嵌图的宽度之和,且小于等于前n+1个第二内嵌图的宽度之和时,将所述浮动图对应的第一内嵌图插在第n个第二内嵌图和第n+1个第二内嵌图之间,其中,j为大于等于2的正整数,n为大于等于1且小于j的正整数,第1个第二内嵌图为按照由左向右的顺序,排在第1个的第二内嵌图,第j个第二内嵌图为按照由左向右的顺序,排在第j个的第二内嵌图。
进一步地,所述装置还包括:
第三确定单元401,用于确定每一个所述浮动图对应的预设范围内,是否存在其他浮动图和/或第三内嵌图;
第一处理单元402,用于若存在至少一个其他浮动图和至少一个第三内嵌图,则将每一个第三内嵌图分别转换为浮动转换图,将所述至少一个其他浮动图、至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第二处理单元403,用于若存在至少一个其他浮动图,则将所述至少一个其他浮动图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图;
第三处理单元404,用于若存在至少一个第三内嵌图,将所述至少一个第三内嵌图分别转换为浮动转换图,则将至少一个所述浮动转换图和每一个所述浮动图,进行组合处理,得到组合后的每一个浮动图。
在本实施例中,本实施例的文档处理装置可执行本发明实施例二提供的文档处理方法,其实现原理相类似,此处不再赘述。
本发明实施例在浮动图的预设范围内存在其他浮动图和/或第三内嵌图时,通过组合的方式组合为一张图,从而能够确保浮动图与附近其他浮动图和/或第三内嵌图的关联关系;通过浮动图与该浮动图所对应的锚点之间的文本行数,循环计算行数差,然后根据行数差能够更加准确的确定出浮动图的插入位置,而且当行数差为1时,通过判断相应段落是否为图题或者是分图题,从而能够更进一步的减小误差,进一步提高所确定的插入位置的准确性;通过判断浮动图对应的预设范围内是否存在第二内嵌图,从而在确定存在时,能够基于浮动图与该浮动图所对应的锚点之间的水平距离,确定出该浮动图与第二内嵌图之间的相对位置关系,进而后续能够将该浮动图对应的第一内嵌图插在更加准确的位置处,保证了位置的相对一致性,大大提高了XML文档转换结果的准确性。
图5为本发明实施例五提供的一种文档处理设备的结构示意图,包括:存储器501和处理器502。
所述存储器501,用于存储计算机程序。
其中,所述处理器502执行所述存储器501中的计算机程序,以实现任一实施例的提供的方法。
本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现任一实施例的提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本发明旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。