具体实施方式
本发明提供一种流式文档的生成方法及装置,将待处理文档中的公式拆分成几个子公式,并为每个子公式创建一个子公式对象,将子公式对象添加到待处理文档对应的版式文档中,得到版式文档信息,然后在版式文档的基础上创建流式文档。
如图1所示为本发明实施例一提供的一种流式文档生成方法流程图,具体的:
步骤S101:对待处理文档中的公式,根据设定的拆分点进行拆分,得到子公式。
具体的,用户可以自定义一个或几个特定的数学运算符号作为拆分点,如加号、减号、乘号、除号、等于号、大于号及小于号等。
优选的,用户可自定义设定拆分点的个数与位置,具体的,用户可根据统计公式包含的数学运算符号,设定拆分点的位置信息,拆分时获取拆分点对应的拆分位置信息,采用公式拆分算法对公式进行拆分,将公式拆分成多个子公式,拆分后的子公式的数量应大于等于两个,并且所述子公式中包含一个或多个数学运算符号。例如,公式a+b-c=d,根据设定的不同位置可拆分为个数不一的子公式,例如可拆分为:a,+,b,-,c,=,d七个子公式,也可以拆分为:a+b-c,=,d三部分。
步骤S102:为所述子公式创建对应的子公式对象。
具体的,根据拆分点的位置信息将公式拆分为多个子公式后,通过元素管理器对象为每个子公式分别创建一个对应的子公式对象。
步骤S103:将步骤S102中的子公式对象添加到待处理文档对应的版式文档中,得到版式文档信息。
步骤S104:根据所述版式文档信息获取层节点顺序,根据所述层节点顺序创建流式文档。
本发明实施例中通过预先将公式拆分成几个子公式并为每个子公式创建一个对应的子公式对象,并且将子公式对象添加到待处理文档的版式文档中,创建版式文档信息,然后在版式文档信息的基础上创建流式文档信息,使得在客户端进行公式的重新排版过程中,可以根据实际情况对公式进行拆分重排,提高公式排版的效率和排版效果。
本发明实施例二对实施例一中将子公式对象添加到待处理文档对应的版式文档中,并创建版式文档信息的具体实施过程做进一步详细的说明。
添加了子公式对象的版式文档信息一般包括:文档对象、文档资源对象、页面对象、页资源对象、页内容对象、页内容层对象、页面块对象、块基本绘制元素对象、子公式对象、字体对象和/或文字对象中的一种或多种。如图2A所示,为本发明实施例中版式文档的创建过程:
步骤S201:根据指定的文件名创建并打开磁盘文件。
步骤S202:在打开的磁盘文件中创建空文档对象,判断是否需要添加文档,若是则转步骤S203添加文档对象,若否则转步骤S204。
具体的,首先初始化,指定所需的源目录,根据指定的工作路径创建一个空文档对象,并且当前用户对该路径有写权限。设置文档的一个空间单位,并设置页面矩形区域,设置的页面矩形区域包括设置页面物理区域,显示区域,版心区域以及出血区域。
步骤S203:添加文档对象并创建文档资源对象。
文档资源对象包括公共资源;公共资源中的数据可以在文档的任何地方使用,例如确定该文档中字体的格式、颜色。
步骤S204:判断是否添加页面对象;如果是执行步骤S205;否则,执行步骤S208。
步骤S205:在空文档对象末尾添加一个页面对象,即在空文档中添加了一页。
步骤S206:在内容流列表中数据的末尾添加页资源对象,页资源对象中的数据只能在该页的范围内使用。
步骤S207:添加页内容对象,该页内容对象用于描述版面的正文内容。
步骤S208:判断是否添加页内容层对象,如果是,执行步骤S209;否则,执行步骤S210。
步骤S209:在内容流对象中添加页内容层对象。例如,当前页面有1个图层,则创建1个内容层对象添加到内容流对象中,将该图层的内容添加到该页内容层对象中。
步骤S210:判断是否添加页面块对象,如果是,执行步骤S211;否则,执行步骤S212。
步骤S211:在内容流列表的末尾添加页面块对象。
具体的,通过元素管理器对象创建块基本绘制元素对象;
步骤S212:判断是否添加公式,若添加公式,则将拆分得到的多个子公式对应的子公式对象,添加到上述待处理文档的版式文档中,创建包含所述子公式内容信息的版式文档信息;否则关闭文件,结束流程。
具体的,添加子公式对象的过程如图2B所示,包括:
步骤S2121:添加块基本绘制元素对象到页面块对象。
步骤S2122:创建空的对象并关联所述块基本绘制元素对象,将所述空的对象添加到所述页面块对象。
步骤S2123:创建所述空的对象对应的内容对象,所述内容对象包含所述子公式对象对应的子公式内容信息。
步骤S2124:设置所述子公式对象在版式文档中的显示区域,在所述显示区域内显示所述内容对象。
具体的,设置所述子公式对象的显示区域,根据所述子公式对象对应的子公式内容信息判断是否添加子公式的内容层对象、块对象、关联的基本绘制元素对象、字体对象及文字对象等,将添加了上述子公式内容信息的内容对象添加到页面资源或文档资源对象中,在设定的显示区域内显示所述内容对象。
上述将内容对象添加到页面资源或文档资源对象中的具体实现过程如下:
步骤S21241:判断是否添加内容层对象;如果是,执行步骤S21242;否则,执行步骤S21243。
步骤S21242:添加内容层对象。
步骤S21243:判断是否添加块对象;如果是,执行步骤S21244;否则,执行步骤S21245。
步骤S21244:添加块对象。
步骤S21245:判断是否为块对象添加关联的基本绘制元素对象;该基本绘制元素对象用于将其他对象添加到该块对象中。
步骤S21246:将子公式对象通过基本绘制元素与块对象关联起来,即将子公式对象添加到块对象中。
优选的,本发明实施例中在添加子公式对象过程中,可以在页面资源或文档资源对象中不同的页面块对象中分别添加不同的子公式对象,也可以在同一个页面块对象中添加不同的子公式对象。
步骤S21247:判断是否添加字体对象;如果是,执行步骤S21248;否则,执行步骤S21249。
本步骤中,可通过元素管理器对象创建字体对象,字体对象包括字体名、是否粗体、是否斜体等并添加到页资源或者文档资源中。
步骤S21248:将块对象中的子公式对象设置为字体对象规定的格式;
步骤S21249:是否添加文字对象;如果是,执行步骤S212410。
本步骤中,可通过元素管理器对象创建文字对象,并设置使用的字体、设置字号、字体颜色、填充方式、文字内容、并添加到页资源或文档资源中。
步骤S212410:将块对象中的子公式对象设置为文字对象规定的格式。
本发明实施例中通过将每个子公式的子公式对象添加到待处理文档的版式文档中,创建版式文档信息,版式文档信息中包含有拆分后的独立的子公式节点对象的相关信息,在客户端进行公式的重新排版过程中,可以根据实际情况在版式文档信息的基础上创建流式文档信息,使得对公式进行拆分重排,提高公式排版的效率和排版效果
本发明实施例三对实施例一中步骤S104中在版式文档的基础上创建流式文档具体实施过程做进一步详细的说明。
如图3所示,为本发明实施例中流式文档的创建过程:
步骤S301:通过文档对象创建逻辑结构树的根节点。
步骤S302:根据版式文档信息中的层节点顺序依次在所述根节点上添加所述版式文档信息中的节点对象。
具体的,在所述根节点上添加所述版式文档信息中的节点对象时设置所述逻辑结构树关联的页面块对象,添加页面块对象关联的子公式对象,创建所述公式的流式文档信息。
优选的,如果所述页面块对象关联包含拆分子公式相关信息的子公式对象,则把该子公式对象添加该流式文档中;如果所述页面块对象并未关联所述子公式对象,而是文字,则把文字添加到当前页面资源或文档资源对象中
添加了版式文档信息中的节点对象后的流式文档信息一般包括:逻辑结构树根节点对象、文章节点对象、节节点对象、段落节点对象、片段节点对象、片块节点对象和/或子公式对象中的一种或多种。
步骤S303:重新排版步骤S302中的节点对象,并按照排版后的节点对象中子公式对象的显示位置,显示所述子公式对象。
具体的,在重新排版时根据预先设置的拆分点和/或者按照预先设置的宽度值拆分页面块对象,将包含公式的页面块对象拆分为多个页面块对象;例如将“=”作为拆分点,则公式
经拆分后为:“w
i=”和
两部分,每一部分都对应一个子公式对象,在对子公式对象进行显示时,可根据实际情况进行显示。例如若每一行只显示一个块对象,则“w
i=”和
在不同的行显示;若每一行显示多个块对象,则“w
i=”和
在同一行显示;并且当被显示的块对象的总宽度值超过显示屏幕的宽度值时,可将该行的最后一个块对象即
以及后续块对象显示在下一行。
本发明实施例中通过预先将公式拆分成几个子公式并为每个子公式创建一个对应的子公式对象,并且将子公式对象添加到待处理文档的版式文档中,创建版式文档信息,然后在版式文档信息的基础上创建流式文档信息,使得在客户端进行公式的重新排版过程中,可以根据实际情况对公式进行拆分重排,提高公式排版的效率和排版效果。
本发明实施例四提供了一种流式文档的生成装置,如图4所示该装置包括:
拆分单元11,用于对待处理文档中的公式,根据设定的拆分点进行拆分,得到子公式。
对象创建单元12,用于为所述子公式创建对应的子公式对象。
版式文档创建单元13,用于将所述子公式对象添加到所述待处理文档对应的版式文档中,得到版式文档信息。
流式文档创建单元14,用于根据所述版式文档信息获取层节点顺序,根据所述层节点顺序创建流式文档。
其中,所述拆分点为数学运算符号,所述数学运算符号包括下列之一或组合:
加号、减号、乘号、除号、等于号、大于号、小于号、大于等于号及小于等于号。
其中,所述拆分单元11具体用于:
统计所述公式包含的数学运算符号,设定拆分点的位置信息;
获取所述位置信息,根据所述位置信息拆分所述公式得到所述子公式。
优选的,拆分后的子公式的数量大于等于两个,并且所述子公式中包含一个或多个数学运算符号。
具体的,所述版式文档创建单元13具体用于:
添加块基本绘制元素对象到页面块对象;
创建空的对象并关联所述块基本绘制元素对象,将所述空的对象添加到所述页面块对象;
创建所述空的对象对应的内容对象,所述内容对象包含所述子公式对象对应的子公式内容信息;
设置所述子公式对象在版式文档中的显示区域,在所述显示区域内显示所述内容对象。
具体的,所述流式文档创建单元具体用于:
创建逻辑结构树的根节点;
根据所述层节点顺序依次在所述根节点上添加所述版式文档信息中的节点对象,所述节点对象包含所述子公式对象;
重新排版所述节点对象,并按照排版后的节点对象中子公式对象的显示位置,显示所述子公式对象。
本发明实施例提供的上述流式文档生成装置输出的流式文档,使得在客户端进行公式的重新排版过程中,可以根据实际情况对公式进行拆分重排,提高公式排版的效率和排版效果。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等技术的范围之内,则本发明也意图包含这些改动和变型在内。