背景技术
生成格式规范化的公文是各级机关公文编制的客观要求,也是充分发挥公文作用,维护公文严肃性和权威性的必要条件。随着计算机的普及,各级机关公文的编制几乎都是用计算机来实现的。公文的编制一般使用排版软件、办公软件进行印前排版,排版完成后,由排版结果来印制公文。
国标GB/T9704-1999《国家行政机关公文格式》规定了国家行政机关公文通用的纸张要求、印制要求、公文中各要素排列和标识规则;《中国共产党机关公文处理条例》对党的机关公文也有明确规范。党、政的公文都要求具有十分严格的格式规范。
目前,公文由公文页面要素组成,例如:份数序号、秘密等级、保密期限等。公文页面要素的内容在页面中被定位、排放就形成有格式的公文。公文页面要素的内容在页面中显现出来的对象可分为文字、表格、图形和图像等,简称为公文页面要素显现对象,他们所占的区域都为矩形。
公文格式规范对公文页面要素在页面中的位置要求有以下几种:
1.显现对象被排放在页面中某个固定位置;
2.显现对象被排放在页面中相对前一个公文要素对象的某个位置;
3.位置要求的方式有以下几种:
1)显现对象和页面之间的对齐。例如:显现对象的右边或下边和页面版心的右边或底边对齐;
2)显现对象之间的对齐。如:公章和成文日期或单位;
3)页面中的坐标;
4)相对其他显现对象的偏移;
●在水平和竖直方向上的位置可要求的方式可以不同;例如:水平方向的右边和页面的右边对齐,竖直方向和前一个公文要素相距一行;
●一个显现对象位置可能会影响其他显现对象位置,例如:多个“签发人”,就会改变“发文字号”的位置;
●页面上指定位置的显现对象所占的区域也会影响其他显现对象位置,所占的区域也不都是整行高;
●某些要素显现对象是否出现,对后面某些显现对象的位置有影响,而对有的又可以没有影响。例如:有“秘密等级和保密期限”时,“紧急程度”就在页面版心右上角的第二行;没有,就在页面版心右上角的第一行;但对其他要素没有影响。
随着计算机普及、文字处理技术的发展,使编制公文变得更简单,办文人员通过排版软件就可以编制符合规范要求的公文。而排版软件所采用的排版方法就决定了公文格式的质量。目前排版公文的软件主要有方正书版、金山WPS、永中office和微软office等。他们都是面向一些通用文档的排版软件、没有为公文格式特点作特别处理。他们一般都采用“流式排版方法”,其特点就是文档的文字、表格、图形和图像等内容作为一个整体在文档页面中流动,通过行距、字距、对齐和绕排方式来确定字符、图形、图像这些内容在页面中位置。“流式排版方法”在排版公文时,一般通过加减换行符、制表符或空格;调整行距、段距和字距等来调整公文页面要素内容的位置。这些处理只会导致位置信息不精确导,还增加公文排版的工作量。由于在原内容的基础上增加换行符、制表符或空格等空白符,在人工阅读时,几乎没有影响,但对计算机在进行数据处理、再利用时就会有很大的影响。
综上,现有排版软件在排版公文时存在严重缺陷,而增加出现不符合公文格式要求的公文的可能性。另外,公文对格式的规范要求非常严格,各组织、机构一般通过建立严格的制度和规范,确定各环节的权限和责任,来保证公文格式的规范性。在公文格式方面,一般要花费组织、机构大量的人力、物力。具体来说,由于公文排版的现状,公文的排版还存在下列问题:
a)规范的格式难以得到保证;
b)不便于公文内容数据的处理和再利用;
c)排版过程的自动化程度不高;
d)编制公文的效率低。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种页面对象的精确定位方法和系统。该方法和系统能够充分考虑公文中各页面要素的格式特点,以公文页面要素所形成的在页面呈现出来的文字、表格、图形和图像为对象,选取这些对象上的一个点为参考点、用准确的坐标值来确定这些对象在页面中的位置。
为达到以上目的,本发明采用的技术方案是:一种页面对象的精确定位方法,包括以下步骤:
(1)由页面设置信息建立页眉、版心、页脚这三个排版区域的逻辑坐标系;
(2)解析包含公文要素显现对象定义的计算机文件,建立版心中的页面要素显现对象队列,如果其中定义了页眉、页脚对象,还分别建立页眉、页脚中的显现对象队列;
(3)选取版心显现对象队列为当前排版对象队列,版心坐标系为当前坐标系,版心所占区域为当前排版区域,对象为流动排放方式,进入定位对象队列的子过程,子过程结束后,进入步骤(4);
(4)如果有页眉显现对象队列,选取该队列为当前排版对象队列,在页眉坐标系中,页眉所占区域为当前排版区域,对象为不流动排放方式,进入定位对象队列的子过程,子过程结束后,进入步骤(5);如果没有页眉显现对象队列,直接进入步骤(5);
(5)如果有页脚显现对象队列,选取该队列为当前排版对象队列,在页脚坐标系中,页脚所占区域为当前排版区域,对象为不流动排放方式,进入定位对象队列的子过程,子过程结束后,结束整篇文件的排版;如果没有页脚显现对象队列,直接结束整篇文件的排版。
进一步,步骤(2)中,所述版心中的显现对象依次在页面中排放,并会自动向后页流动,所述的流动是整个对象的流动,而不是内容数据的流动。
所述的页眉、页脚中的显现对象不流动,仅在对应的排版区域内排版。
进一步,步骤(3)、步骤(4)和步骤(5)中所述的定位对象队列的子过程包括以下步骤:
i.初始化当前页面序号为0;
ii.从当前排版对象队列中,依次选取一个页面要素显示对象为当前排版对象,选取到一个对象就执行下一步;选取不到,则队列中已没有要排版的对象,结束该子过程;
iii.确定当前排版对象的定位点;
iv.确定当前排版对象的可排区域;
v.确定当前排版对象的排版区域;
vi.当前排版对象在它自己的排版区域内进行排版;
vii.确定当前排版对象的实际大小:水平方向、竖直方向分别处理,数值定义的宽、高,就是实际的宽、高;自适应定义的宽、高,则是对象中的内容所占的宽、高就是实际的宽、高;
viii.如果当前对象为未排放状态,则需要进一步判断是否要在当前页上排放它,如果当前页上没有一个已排放的块时,即使当前对象在当前页上不能排放,也只好无条件把它设为可排放状态;
ix.对可排放状态的当前对象,则要设置它的占位区域;由基点坐标和对象的实际大小就可以算出占位区域;
x.对可排放的当前对象进行页面序号的设置,页面序号为当前页面序号;
xi.如果当前对象为未排放状态或有后续对象要在下页排版的标记时,当前页面序号加1;
xii.如果当前对象为未排放状态,回到步骤(iii),重排当前对象;如果当前对象为可排放状态,回到步骤(ii),排版下一个对象。
一种页面对象的精确定位系统,包括以下装置:
逻辑坐标系建立装置:用于由页面设置信息建立页眉、版心、页脚这三个排版区域的逻辑坐标系;
页面要素显现对象解析装置:用于解析包含页面要素显现对象定义的计算机文件,建立版心中的页面要素显现对象队列及页眉、页脚中的显现对象队列;
版心显现对象队列定位装置:用于选取版心显现对象队列为当前排版对象队列,版心坐标系为当前坐标系,版心所占区域为当前排版区域,对象为流动排放方式,对版心显现对象队列进行定位;
页眉显现对象队列定位装置:用于选取该队列为当前排版对象队列,在页眉坐标系中,页眉所占区域为当前排版区域,对象为不流动排放方式,对页眉显现对象队列进行定位;
页脚显现对象队列定位装置:用于选取该队列为当前排版对象队列,在页脚坐标系中,页脚所占区域为当前排版区域,对象为不流动排放方式,对页脚显现对象队列进行定位。
本发明的效果在于:采用本发明所述的方法,可以实现公文要素的精确定位,使公文的格式能够满足严格公文格式规范的要求。由公文页面要素格式的特点,实现了绝对、相对的坐标和对齐;建立定位点、基点;数值型、自适应的长、宽定义,使得公文页面要素排放在页面变得简便、准确,大大提高排版效率,便于公文页面要素内容数据的交换和利用。因此,与现有的公文排版技术相比,本发明具有以下几个方面的显著优点:
a)公文页面要素在页面中精确定位;
b)定位方式简洁、定位功能强大;
c)方便、高质量地满足公文格式需要;
d)在页面中流动的是公文页面要素对象,而不是公文页面要素里的内容;
e)便于公文页面要素内容数据的输入和获取。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步描述。
本实施例中,以公文为例,本发明所述的方法充分考虑公文中各页面要素的格式特点,以公文页面要素(以下简称公文要素)所形成的在页面呈现出来的文字、表格、图形和图像为对象,选取这些对象上的一个点为参考点、用准确的坐标值来确定这些对象在页面中的位置。
一种页面对象的精确定位系统,包括以下装置:
逻辑坐标系建立装置:用于由页面设置信息建立页眉、版心、页脚这三个排版区域的逻辑坐标系;
公文要素显现对象解析装置:用于解析包含公文要素显现对象定义的计算机文件,建立版心中的公文要素显现对象队列及页眉、页脚中的显现对象队列;
版心显现对象队列定位装置:用于选取版心显现对象队列为当前排版对象队列,版心坐标系为当前坐标系,版心所占区域为当前排版区域,对象为流动排放方式,对版心显现对象队列进行定位;
页眉显现对象队列定位装置:用于选取该队列为当前排版对象队列,在页眉坐标系中,页眉所占区域为当前排版区域,对象为不流动排放方式,对页眉显现对象队列进行定位;
页脚显现对象队列定位装置:用于选取该队列为当前排版对象队列,在页脚坐标系中,页脚所占区域为当前排版区域,对象为不流动排放方式,对页脚显现对象队列进行定位。
本发明的相关技术术语:
a)逻辑坐标系
以公文用纸的纸幅面定义逻辑页面,逻辑单位为720DPI(每英寸720点),由版心尺寸划分逻辑页面为三个可排版的区域:页眉、版心、页脚,并对它们分别建立坐标系,这些坐标系的原点、X轴和Y轴的方向如图1所示。各个区域内的公文要素显现对象只在各自区域内排放,用各自的坐标系对他们进行定位操作。
b)公文要素显现对象的队列
公文要素显现对象的种类有:文字、表格、图形和图像四种。表格包含表行和单元格。
一个显现对象可为一个公文要素,也可以由几个公文要素组成;如:表格对象就可以包含多个公文要素。
显现对象和单元格都可以有一个标识符,标识他们所对应的公文要素。通过这些标识符就可以设置显现对象的内容信息、从显现对象中获取指定的公文要素的内容数据,有利于公文数据的处理和利用。
对一类公文,按三个排版区域,定义每个区域所包含的显现对象。对于页眉、页脚中的显现对象可进一步指定它所在的页面是首页、单页、双页或尾页;对版心中的对象,可按公文中包含的公文要素顺序依次定义所需要的公文要素显现对象。一个文种所定义的公文页面要素显现对象及其次序可以被保存在一个计算机文件中。由这个有次序的公文页面要素显现对象的定义形成公文要素显现对象的队列,按排版区域分别处理,最多可有三个队列。
c)要素显现对象的定位点
定位显现对象,主要就是确定显示对象被放置的位置,为了精确定位,本发明只使用一个点来进行定位,这个点简称定位点。
d)要素显现对象的定位类型
描述定位点的方式为定位类型。
定位类型有:绝对、相对二种。
绝对:以对象所在的排版区域为参考。
相对:以被定位对象的前一个对象为参考,进行定位。
e)要素显现对象的对齐方式
对齐就是由参考对象,通过对齐处理,确定定位点坐标的过程。
对齐方式为可选项,可以没有。可以在水平方向或竖直方向上可单独进行对齐,也可以在这两个方向都进行对齐。
在水平方向的对齐方式分为:左对齐、中对齐、右对齐;
在竖直方向的对齐方式分为:上对齐、中对齐、下对齐;
由水平方向、竖直方向上的对齐方式和参考对象所在的区域,分别确定定位点X、Y坐标。例如:左对齐、上对齐,则定位点就是参考对象左上角点。
f)要素显现对象的位置坐标
通过位置坐标也可以确定定位点的坐标。它也是一个可选项,X、Y坐标同样可以单独设置。
由定位类型、对齐方式和位置坐标就能唯一地确定定位点的坐标,其中定位类型是必选项,而对齐方式和位置坐标这两个是可选项,但必须至少定义其中的一个,不能两个都没有定义。定位时、采用水平方向、竖直方向分别独立处理的办法,它们之间没有影响。
位置坐标的含义和定位类型、对齐方式的有无有关。具体含义如下:
绝对、无对齐时,位置坐标为对应排版区域坐标系的坐标;
相对、无对齐时,位置坐标为参考对象的相对坐标;X坐标为负,在参考对象左侧X单位处,X坐标为正,在参考对象右侧X单位处;Y坐标为负,在参考对象上方Y单位处,Y坐标为正,在参考对象下方Y单位处;
有对齐,位置坐标仅为偏移坐标,对对齐后的定位点进行偏移操作。
g)要素显现对象的基点
公文要素显现对象一般都占据一块区域,为了准确地定位一个显现对象,采用在对象选取一个点,使这个点和前面确定的定位点重合,这个点称为“基点”。
排放显现对象时,显现对象没有旋转,也没有放大和缩小,当我们把对象的基点放在定位点处,也就确定了排放显现在页面中的站位,这样也就在页面中排放一个公文要素显现对象。
要素显现对象占据的区域都为矩形,由矩形的九宫位点来表示基点,可简化基点的设置,并能满足公文格式的需要,同时使得排放公文要素显示对象变得非常方便。九宫位点,其定义为:左上、中上、右上;左中、中中、中右;左下、中下、右下,如图2所示。
h)要素显现对象的大小
通过定义公文要素显现对象的宽和高来规定对象的大小。定义方式有二种:数值和自适应。定义宽、高时,可以分别、独立地使用这二种方式。
使用“数值”来定义的宽和高时,可选用计量单位有:字、行、磅、毫米、厘米、英寸等。
使用“自适应”来定义的宽和高时,是由计算公文要素的内容所占区域来动态设置显现对象的宽或高。
i)要素显现对象精确定位的过程,如图3所示:
(1)由页面设置信息建立页眉、版心、页脚这三个排版区域的逻辑坐标系,S11。
(2)解析包含公文要素显现对象定义的计算机文件S121,建立版心中的公文要素显现对象队列,如果其中定义了页眉、页脚对象,还分别建立页眉、页脚中的显现对象队列,S122。版心中的显现对象依次在页面中排放、并会自动向后页流动。流动是整个对象进行流动的方式,而不是内容数据进行流动的方式。页眉、页脚对象不流动,仅在对应的排版区域内排版。
(3)如图4所示,选取版心显现对象队列为当前排版对象队列S21,版心坐标系为当前坐标系S22,版心所占区域为当前排版区域S23,对象为流动排放方式S24。进入定位对象队列的子过程(6),定位版心显现对象队列S13,子过程结束后,进入(4)。
(4)如图5所示,如果有页眉显现对象队列,选取该队列为当前排版对象队列,在页眉坐标系中,页眉所占区域为当前排版区域。对象为不流动排放方式。进入定位对象队列的子过程(6),定位页眉显现对象队列S14,子过程结束后,进入(5);如果没有页眉显现对象队列,直接进入(5);
(5)如图6所示,如果有页脚显现对象队列,选取该队列为当前排版对象队列,在页脚坐标系中,页脚所占区域为当前排版区域。对象为不流动排放方式。进入定位对象队列的子过程(6),定位页脚显现对象队列S15,子过程结束后,结束整篇公文的排版;如果没有页脚显现对象队列,直接结束整篇公文的排版。
(6)定位对象队列的子过程,如图7、图8所示:
i)初始化当前页面序号为0;
ii)从当前排版对象队列中,依次选取一个公文要素显示对象为当前排版对象。选取到一个对象就执行下一步;选取不到,则队列中已没有要排版的对象,结束该子过程。
iii)确定当前排版对象的定位点。
1)取得当前排版对象的定位类型;
2)取得当前排版对象的对齐方式;
3)取得当前排版对象的位置坐标;
4)由水平方向的定位类型、对齐方式和位置坐标,可确定定位点的X坐标。方法如下:
确定水平方向的参考范围:水平方向定位类型为绝对时,取当前排版区域水平方向的范围;为相对时,在当前队列中找到当前对象的前一个对象(队列中的第一个对象不能定义为相对),取前一个对象所占据区域水平方向的范围。
水平方向有对齐:先进行对齐,由对齐方式在水平方向的参考范围上找到对齐值,左对齐就选左侧值,中对齐就选中间值,右对齐就选右侧值;如果定义了水平方向的位置坐标,对齐值加上位置坐标的X坐标后为定位点的X坐标;没有定义水平方向的位置坐标,对齐值就为定位点的X坐标;
水平方向无对齐时:水平方向定位类型为绝对时,位置坐标的X坐标就为定位点的X坐标;为相对时,位置坐标的X坐标为负时,参考范围左侧值加上位置坐标的X坐标(包括负号)的结果为定位点的X坐标;位置坐标的X坐标为正时,参考范围右侧值加上位置坐标的X坐标的结果为定位点的X坐标。
5)确定定位点的Y坐标,和确定X坐标方法几乎相同,不同是把左替换为上,右替换为下,水平替换为竖直,X替换为Y;定位类型为相对时,增加前一个对象在当前页的前一页的情况,即前一个对象和当前对象不在同一页上,而无法进行竖直方向的对齐和偏移,只好设置定位点的Y坐标为0;
iv)确定当前排版对象的可排区域;
1)取得当前排版对象的基点;
2)使基点的坐标等于定位点的坐标;
3)由当前排版区域、当前排版对象的基点,计算当前排版对象的可排区域。在水平方向、竖直方向分别、独立进行计算。
水平方向可排范围,按水平方向基点类型进行分别处理:
左:基点的X坐标到当前排版区域的右侧;
中:在排版区域水平方向内,以基点X坐标为中点的最大范围;
右:当前排版区域的左侧到基点的X坐标。
竖直方向可排范围,如果基点Y坐标为0时,直接为当前排版区域的高,大于0时,则按竖直方向基点类型进行分别处理:
上:基点的Y坐标到当前排版区域的底边;
中:在排版区域竖直方向内,以基点Y坐标为中点的最大范围;
下:当前排版区域的上边到基点的Y坐标。
v)确定当前排版对象的排版区域;
1)确定水平方向排版范围:取得当前排版对象定义的宽,其定义方式有“数值”和“自适应”二种;具体计算分别如下:
数值:取定义宽度和水平方向可排范围值的较小值为水平方向的排版范围;
自适应:水平方向可排范围为水平方向排版范围。
2)确定竖直方向排版范围:取得当前排版对象定义的高,由高定义方式计算出排版范围,计算方法和水平时相同。
3)设置对象的排版状态:对象为流动排放方式、且数值方式定义的高度大于竖直方向可排范围值时,设置对象的排版状态为不可排放状态,其他为可排放状态。
vi)当前排版对象在它自己的排版区域内进行排版,即排版的内容被约束排版区域内。按对象类型分别进行处理;
1)文字显现对象:采用已经成熟的流式排版技术把文字排放在排版区域内。如果有文字不能排放时,把不能排的文字作为遗留文字。当对象为流动排放方式,且对象的高为自适应时,当有遗留文字,则新生成一个文字显现对象,在当前对象后面加入到当前排版对象队列中。新产生对象的竖直方向属性为:绝对、无对齐、坐标为0、高度为自适应,基点为上;水平方向属性为:相对、左对齐、坐标为0、宽度同当前对象,基点为左;从当前对象中取出遗留文字并放置到新建对象中。并标记后续对象要在下页排版。
2)表格显现对象:以表行为单位,依次排版表行中单元格。如果单元格中有文字不能排放,不能排放的文字就作为单元格遗留文字。当对象为流动排放方式,且对象的高为自适应时,如果单元格有遗留文字,就设置对象的排版状态为不可排放状态。表格作整体流动,不做拆分。
3)图形显现对象:排放图形中的几何点。当对象为流动排放方式,且对象的高为自适应时,如果有点在竖直方向上超出排版区域,就设置对象的排版状态为不可排放状态。图形作整体流动,不做拆分。
4)图像显现对象:排放图像,且对象的高为自适应时,如果图像高度超出排版区域,就设置对象的排版状态为不可排放状态。图像作整体流动,不做拆分。
vii)确定当前排版对象的实际大小。水平方向、竖直方向分别处理,数值定义的宽、高,就是实际的宽、高;自适应定义的宽、高,对象中的内容所占的宽、高就是实际的宽、高;
viii)如果当前对象为未排放状态,则需要进一步判断是否要在当前页上排放它。如果当前页上没有一个已排放的块时,即使当前对象在当前页上不能排放,也只好无条件把它设为可排放状态;
ix)对可排放状态的当前对象,则要设置它的占位区域;由基点坐标和对象的实际大小就可以算出占位区域;
x)对可排放的当前对象进行页面序号的设置。页面序号为当前页面序号。
xi)如果当前对象为未排放状态或有后续对象要在下页排版的标记时,当前页面序号加1。
xii)如果当前对象为未排放状态,回到步骤(iii),重排当前对象;如果当前对象为可排放状态,回到步骤(ii),排版下一个对象。
j)要素显现对象的屏幕显示和打印
精确定位要素显现对象后,就可以进行显示和打印。
由输出设备(显示器、打印机)建立输出设备、按公文的页面进行显示和打印。输出时,分别输出页眉、版心、页脚中的显示对象,要设置相应的逻辑坐标系和设备坐标系映射关系,由输出页面的序号,确定输出内容,进行输出操作。
如图9a、9b所示,图9a、9b给出一个公文示例,并标记了各个公文要素的位置参数。
通用公文在页眉区域一般没有的显示对象,特殊的可以是单位的logo;在页脚区域一般有页码、公文条码等显示对象;版心区域为公文页面要素显示对象,如:密级91、标题92、主送机关93等页面要素。
公文页面对象的精确定位主要就是版心区域中显示对象的定位。结合图9就“主送机关”显示对象的定位进行简要描述:
“标题”92显示对象被定位后,就要定位“主送机关”93显示对象。由它的位置属性可确定它的定位点的X坐标为0,Y坐标为标题对象底边下方一行的值y;可排区域为:X方向0-28字,Y方向y-版心底;排版区域等于可排区域;在排版区域内对主送机关的内容进行排版,得到内容实际所占的矩形区域,确定它的基点坐标,对该矩形区域进行移动,使基点和定位点重合后所得到的矩形区域就是“主送机关”显示对象在页面中占位区域。
由上可看出一个对象的占位区域是由它的位置参数定义所确定的,使用适当的逻辑单位(一般高于输出设备,如:打印机)可以使位置参数具有很高的精确度,使用精准的值描述页面中显示对象,从而在页面中实现精确定位。
本发明所述的方法和系统并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。