表重用方法及装置与流程

文档序号:12005246阅读:248来源:国知局
表重用方法及装置与流程
本发明涉及数字出版领域,具体而言,涉及一种表重用方法及装置。

背景技术:
光栅化图像处理(RasterImageProcessing,RIP)是指将页面描述语言所描述的版面信息解释转换成可供输出设备输出的数据信号,其方式是将文件转换成图像点阵的模式,之后由输出设备输出。RIP处理一般分成两个步骤,第一步解释页面,分析页面描述语言中的对象描述,将得到的参数、数据等信息写入中间指令文件;第二步组装输出,从中间指令文件中读取信息,根据各参数进行计算,得到最终的页面点阵数据。块组装RIP是相对于平展组装而言的。平展组装下,每一个像素在点阵中都有内存与其对应,8位RIP中,一个像素一个色面的颜色需要1个字节数据表示。块组装,则是将页面段分成了块状。这样,从左到右,从上到下,将页面分成了多个块,每一个块有一个Index索引。分块组装RIP里,在解释页面过程中,根据各对象的BBox(外接矩形)及颜色信息,不断更新页面中的处理色块区域及专色块区域。页面解释完毕后,组装开始之前,根据页面中处理色块及专色块的数量申请组装所需的内存。这相当于申请了一个内存池,真正组装过程中,哪一个页面块需要内存来存储点阵时,根据色面及块的Index,获得其在内存池中的偏移量,将数据存入相应位置即可。由于页面块组装顺序不确定,其需要内存的时刻也不确定,因此内存池中的数据是分块混乱的。为了使用块内存的方便,需要建立一个页面块与其点阵内存偏移量的对应关系,这就是块的内存属性表。每一个页面块还对应一个块属性表,用于标明块的类型、前景颜色、背景颜色等信息。块分三种类型:纯色块、双色块、多色块。纯色块即块内所有像素只有一个灰度值,双色块即块内所有像素只有两个灰度值,块内像素灰度值超过两个的即为多色块。纯色块的颜色根据其属性就可获得,因此在组装过程中,无需再用内存去存储其点阵。双色块,需要对应内存空间,但是存储的不是颜色数据,而是0、1点阵,每一个bit位对应一个像素,0的位置表示使用块属性中的背景颜色,1的位置表示使用块属性中的前景颜色。多色块,对应的内存空间中存储的即是块的8bit点阵数据。由于局部区域数据相关性较大,分块后,产生的纯色块就可以节约内存空间,而双色块存储的数据也只是8bit数据的8分之1。并且,组装时按块进行,对纯色块及双色块的组装,去设置属性及颜色明显比对8bit点阵的计算要快得多。可见,块组装既拥有数据量小的优势,又拥有平展点阵操作灵活的优势,对8位Rip的处理效率有了较大的提高。文件的块组装光栅化结果,包括以下三个信息:一个块属性表,记录各页面块的属性信息,如上所述;一个块内存表,记录各页面块的内存偏移;一个点阵内存池,数据按色面连续,按块混乱。如果需要使用平展的点阵数据,根据各块属性获取颜色信息,并按块的位置平铺即可。页面中可以包括图形、文本、渐变、图像等简单对象,也可以包括复杂对象如Form(表)。表实际上是一种PDF(页面描述文件)内容流,它可以看成是一个独立的页面描述单元,其中包含多个对象的描述,如图形、文本、图像等。这种表是可以被重用的,既可以被绘制在同一个页面上,也可以被绘制在不同的页面上。根据绘制到页面时的图形状态的不同,可以产生不同的绘制效果。这种“自包含”的对象形式既简化了PDF的页面描述,也大大地减小了PDF文件的尺寸。在相关技术的文件光栅化处理过程中,解释页面对象内容时是遇到一个对象解释一个对象,即:对于每一个页面中多次出现的同一个Form,都是单独解释和组装的。这样,如果一个多次被重用的表中包含了比较复杂的元素,比如透明、Shading(渐变)、Pattern(底纹)等,每单独解释一次都要耗费时间和空间资源,这会造成整体PDF文件光栅化作业的过程效率低下。随着印刷技术的发展,Form在文件中被重复引用的现象越来越多,如可变数据交换(VariableDataExchange,VDX)文件转换生成PDF文件时,其页面所包含的不变数据会被描述成表;又如做包装的厂商,文件中包含大量的重复内容,也被封装成表重复引用。这样,此类文件的光栅化效率问题成了分块组装RIP的性能关键。

技术实现要素:
本发明旨在提供一种表重用方法和装置,以提高表的光栅化效率。在本发明的实施例中,提供了一种表重用方法,包括:确定页面描述文件中可重用处理的表;对表进行语法解释以生成并缓存块点阵、块属性表和块内存表;将表所包含的各个块分别根据其块点阵、块属性表和块内存表,组装入待输出页面的块中;所述对所述表进行语法解释以生成并缓存块点阵、块属性表和块内存表包括:对所述表的内容流进行语法解释,生成中间指令文件;将所述表对应的ID和中间指令写入中间指令文件;根据所述中间指令文件生成并缓存所述块点阵、所述块属性表和所述块内存表,其中,所述生成并缓存块点阵、块属性表和块内存表包括:分块组装所述待输出页面中的表子页面的段,生成并缓存所述段的Mask点阵、所述块点阵、所述块属性表和所述内存属性表;消除所述Mask点阵的上下左右冗余数据。在本发明的实施例中,提供了一种表重用装置,包括:确定模块,用于确定页面描述文件中可重用处理的表;解释模块,用于对表进行语法解释以生成并缓存块点阵、块属性表和块内存表;组装模块,用于将表所包含的各个块分别根据其块点阵、块属性表和块内存表,组装入待输出页面的块中;所述解释模块包括:内容流模块,用于对所述表的内容流进行语法解释,生成中间指令文件;写入模块,用于将所述表对应的ID和中间指令写入中间指令文件;生成模块,用于根据所述中间指令文件生成并缓存所述块点阵、所述块属性表和所述块内存表,其中,所述生成模块包括:分块模块,用于分块组装所述待输出页面中的表子页面的段,生成并缓存所述段的Mask点阵、所述块点阵、所述块属性表和所述内存属性表;除冗模块,用于消除所述Mask点阵的上下左右冗余数据。上述实施例的方法和装置因为实现了表的重用,所以显著地提高了表的光栅化效率。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1示出了根据本发明实施例的表重用方法的流程图;图2示出了根据本发明实施例的重用表语法解释的流程图;图3示出了根据本发明实施例的重用表组装及存储的流程图;图4示出了根据本发明实施例的将重用表组装入待输出页面的流程图。图5示出了根据本发明实施例的表重用装置的示意图。具体实施方式下面将参考附图并结合实施例,来详细说明本发明。图1示出了根据本发明实施例的表重用方法的流程图,包括:步骤S10,确定页面描述文件中可重用处理的表;步骤S20,对表进行语法解释以生成并缓存块点阵、块属性表和块内存表;步骤S30,将表所包含的各个块分别根据其块点阵、块属性表和块内存表,组装入待输出页面的块中。现有技术中,表多次解释及组装,比较复杂的表会产生较多数据,每次都会有内存消耗。本实施例中,将表利用分块的方法组装到待输出页面中,从而当页面中再次遇到此表时,可以重用第一次解释中生成的块点阵、块属性表和块内存表,重用表只需一次解释,而组装也变成相应的块对块的计算,与每个表单独解释及组装相比,节省了多次解释的时间,组装运算也更优化。本方法由于实现了表的重用,显著地提高了表的光栅化效率,使得块组装下表重复引用的文件在Rip中实现高速处理,节省了内存资源,提高了整体文件的处理效率。在Rip中,图形、文本对象的解释、组装过程速度很快,且无需缓存点阵信息,而图像、渐变、透明计算相关处理,解释过程慢,且需缓存大量的数据。表重用的机制是将表解释为一个图像对象,然后将其点阵缓存起来留待后用。对于只含文字、图形的重用表,在后端将其图像点阵铺到页面当中,显然不如将文字对象一个个放置到页面当中或将图形对象直接绘制到页面上效率高。如何知道表在页面描述文件中可被重复引用?主要有两种方式:(1)按照约定,一些文件(如VDX)转换得到的PDF文件中,可重用的表已经添加了标识。(2)按照经验,一些做包装的厂商文件经常重用表,但不带标识。这样,就需要对这类经验文件,在页面解释之前做预扫描,只对其中的表及其CTM做记录,不做任何语法解释,耗时较小。扫描完毕后,将所有的表比较、计算,筛选出真正被重复引用的表并做记录。优选地,确定页面描述文件中的可重用处理的表包括如果满足以下任一条件,则将表视为可重用处理的表:表的Resource字典中含有XObject对象;表的Resource字典中含有渐变对象;表的Resource字典中含有Pattern对象;表中含有透明属性。在程序实现上,可以维持两个动态链表,一个用于管理低效的重用表,即:不做重用处理的表,简单记录表名字即可;另一个用于管理真正可被重用的表,每一个节点对应一个重用表,标识表的ID即为其在链表中的位置,这样便于实现对单个表的信息灵活进行存取。优选地,步骤S10包括:对表的内容流进行语法解释,生成中间指令文件;将表对应的ID和中间指令写入中间指令文件;根据中间指令文件生成并缓存块点阵、块属性表和块内存表。优选地,生成并缓存块点阵、块属性表和块内存表包括:分块组装待输出页面中的表子页面的段,生成并缓存段的Mask点阵、块点阵、块属性表和内存属性表;其中,缓存Mask点阵之前,需要消除Mask点阵的上下左右冗余数据。可重用的表可分成两类,可以记录名字、CTM(当前变换矩阵)、位置、位数等信息。其中一类表是缓存点阵数据信息的表,可将块点阵、块属性、内存管理表按色面连续来缓存,并记录每一项信息在缓存中的偏移量,以便取数据时快速定位。当然,对于空白的表段,这些信息都无需缓存,块组装时由程序实现。另外,为了组装时消除冗余的信息,还可缓存表的Mask信息,用来标识表的真正有效区域。Mask点阵本身是与表大小一致的1位点阵,其取值为0或1,取值为0值时,对应表中的点不绘制到待输出的页面上;取值为1时,则绘制到待输出的页面上。真正存储Mask时,将上下左右的冗余信息去处,只存储对裁剪有效的0、1点阵,减少数据量。另一类重用表是已经存在可关联表的表,即:存在这样一个表,之前已经缓存了实例及点阵等,此时的表只是位置上与已缓存的表存在平行偏移或旋转180度,或两者均存在,其余信息完全相同,这种情况下,完全可以根据两个表的位置信息,从已缓存的块信息中计算得到本表的块信息,因此,不缓存任何数据信息,只存储表参数及关联关系。根据表位置关系,对于同一个表,对被引用时CTM、图形状态进行计算,如果两者点阵位数相同,缩放比例一致,只是存在位置上的平移关系,或180度旋转关系,或两种关系同时存在,那么,两者的点阵及块信息就可以通过位置计算而互相得到。因此,只需要缓存一次表数据信息,其他关联的表只需记录位置等参数,大大节省了多个表点阵的空间消耗。表及待输出页面均是分段、分块组装,组装待输出页面的各段时,对文件的表分段做循环,将相交区域依次组装入待组装的段中。如果表的段与待输出页面的段互相跨段较多,那么读取Mask、点阵等的操作必然增多,跨段的区域越大,取得的无效数据越多,当然时间也消耗越多。为了尽量减少这种跨段循环带来的时间开销,本发明优选实施例中,将表语法解释和表点阵组装及存储分开。表子页面的组装及点阵存储,则放到整个待输出页面解释完毕之后,组装之前。因为此时,可以根据待输出页面的段划分情况对各表子页面的段进行划分,使得两者的段位置一致,有效地减少了组装表时跨段循环的情况,提高了整个文件的组装效率。块组装RIP下的表语法解释过程如图2所示,步骤如下:步骤201:定位表;步骤202:缓存新的表;步骤203:判断该表是否需要缓存点阵,如需要,转到步骤204;否则,转到步骤208;步骤204:开辟一个新的设备实例;步骤205:在新开辟的设备实例中,开始一个新的表页面;步骤206:对表的内容流进行语法解释,生成中间指令文件及相关数据文件;步骤207:缓存步骤204中开辟的新设备实例;步骤208:将表对应的ID和中间指令发送到中间指令文件,以便向待输出页面上组装表时进行重用表的组装操作;步骤209:解释结束。优选地,判断表是否需要缓存点阵,就是将表与表管理器操作单元中已存在的所有表做对比,如果存在名字相同、位数相同、缩放比例相同,只是位置上存在平移关系或180度旋转关系的表,那么新表就不用再缓存点阵,记录其关联关系,并将新表的ID发送中间指令文件即可。优选地,重用表子页面的组装操作是在整个待输出页面解释完毕后进行的,而组装操作需要一个设备实例的环境来支持。因此,解释表子页面之前就必须新开辟一个设备实例,解释完表后保存,并对页面中所有新开辟的表子页面对应的设备实例做管理,待整个待输出页面解释完毕后,依次对所有表子页面进行组装,并释放相应的设备实例。块组装RIP下的表子页面的组装及数据缓存操作如图3所示,步骤如下:步骤301:待输出页面解释完毕,组装之前,此时段划分已经确定,各表子页面统一按待输出页面的段划分情况进行自己的段划分,使得表的段和待输出页面的段一致;步骤302:判断待输出页面中的所有表子页面是否已组装完毕,如果完毕,转到步骤309;否则,转到步骤303;步骤303:分段进行表子页面的组装及存储,判断各段是否处理完毕,如果处理完毕,转到步骤307;否则转到步骤304;步骤304:分块组装表子页面段,生成表段的Mask点阵、块点阵、块属性、块内存属性;步骤305:消除Mask上下左右冗余数据,缓存其有效裁剪点阵;步骤306:缓存表块点阵、块属性、块内存属性,本段处理完毕,转到步骤303;步骤307:根据各段Mask的信息,得出最终的Mask有效区域,对表的有效BBox做调整,以便组装时减少不必要的块循环;不仅调整此表的BBox,同时还对关联到此表的所有表有效BBox做调整;步骤308:释放表相关的设备实例,本表处理完毕,转到步骤302;步骤309;所有表子页面组装及缓存结束,开始待输出页面的组装。优选地,步骤S30包括:确定表和待输出页面的相交区域;根据表在相交区域中的块的位置计算得到其在表子页面中的索引,获得其块属性表;根据表在相交区域中的块的块内存表,从缓存的色面内存中获取其块点阵,并通过其块点阵和属性确定其颜色;根据由Mask点阵与裁剪点阵生成的黑白点阵,将表在相交区域中的块组装入待输出页面的相应块中,其中,如果黑白点阵是全白块,则保留相应块的属性和颜色;如果黑白点阵是全黑块,则以表在相交区域中的块的属性和颜色代替相应块;如果黑白点阵为混合块,则黑白点阵中白点的位置,保留相应块中该点的属性和颜色,其中黑点的位置,则以表在相交区域中的块中该点的属性和颜色代替相应块中该点的属性和颜色。RIP中组装页面时,都需要一个裁剪点阵,此点阵是0、1黑白点阵,每一位数据对应一个页面中的像素点,用于表示该像素上的数据如何组装。此黑白点阵也是分块的形式,且分块大小与分块组装下页面的分块大小相同。此黑白点阵的块分为三类:全白块、全黑块、混合块。全白块即块中的值全为0,组装该块所对应的像素时,每一个像素均采用背景值;全黑块即块中的值全为1,组装该块所对应的像素时,每一个像素均采用前景值;混合块,即块中值0、1混合,组装该块所对应的像素时,0对应的像素采用背景值,1对应的像素采用前景值。本优选实施例中,表的点阵是块状连续的,表中的纯色块不对应点阵内存,双色块数据每一位可用1Bit数据表示,整个块的数据量只占平展下点阵的八分之一,多色块每一位数据用8Bit表示,与平展组装下数据相同。总体看来,缓存的点阵只是表的局部区域数据,数据量较小,能大大节省空间资源及存取时间消耗。现有技术的平展组装中,按行将重用表组装入页面,按行取数据时需跳数据、补数据等操作,不得不采用拷贝的方式,将一行中所需要的表数据取出。而按块组装中,以块为单位做运算,直接改变整个块的属性或组装其点阵,跳数据、补数据等是由裁剪用的黑白点阵在运算中起作用。所以,只需将整个块的数据送入运算模块。这样,组装重用表时,逐块从表管理器操作单元返回块点阵地址即可,无需拷贝内存的操作,节省了频繁内存拷贝的时间。在表比较大,需组装的块比较多时,速度提升尤其明显。优选的组装步骤如图4所示,步骤如下:步骤401:通过中间指令文件中的表ID,定位将被组装入待输出页面的重用表;步骤402:根据表的BBox计算其是否与当前待组装的页面段相交,如果相交,则转到步骤403;否则,转到步骤411;步骤403:按色面做循环,将表的各色面组装入待输出页面段中的相应色面;判断所有色面是否组装完毕,如果组装完毕,转到步骤411;否则,转到步骤404;步骤404:对表的某色面,分段循环组装;判断所有段是否组装完毕,如果组装完毕,转到步骤403;否则,转到步骤405;步骤405:计算表当前段是否与待组装页面的当前段相交,如果相交,转到步骤406;否则,转到步骤404;步骤406:根据表参数,计算其与当前段的相交区域;步骤407:根据当前表或其关联表,获取相交区域的Mask点阵,与当前段的裁剪点阵(clip)相互作用,生成的黑白点阵用于块组装计算;步骤408:根据表的BBox,判断表中的块与当前组装段的块是否边界对齐,如果对齐,说明一个目标块(即待输出页面中的块)只对应一个源块(即表在相交区域中的块),可以进行优化组装,转到步骤409;如果不对齐,转到步骤410;步骤409:源块和目标块边界对齐,对相交区域中的块做循环,一对一组装,根据源块的属性、颜色、目标块属性、颜色及裁剪点阵,将源块组装入目标块中;步骤410:源块与目标块边界不对齐,一个目标块最多有可能和四个源块相交,以目标块为基准,对与其相交的源块进行循环,在裁剪点阵作用下,向目标块组装;步骤411:组装结束。对步骤409中表的组装做详细说明:将表组装入待输出页面时,如步骤407所述,根据表自身的Mask点阵及待输出页面当前的裁剪点阵,作用后得到组装表所需的裁剪点阵。由于表可能超出待输出页面的范围,超出的区域自然是无用的,只需组装表和待输出页面相交的区域即可,因此根据表与待输出页面的相交区域进一步对裁剪点阵做限制,只留下相交区域的裁剪点阵,且裁剪点阵中每一个黑白块与待输出页面中的页面块一一对应。块组装RIP中组装待输出页面的过程也就是循环组装待输出页面中每一个页面块,生成每一个块的点阵、块属性及块内存映射。将表组装入待输出页面,那么自然,上述所述相交区域中每一个位置上,表对应的块称为源块,待输出页面对应的块称为目标块。组装每一个目标块,就需要根据源块的属性及颜色、目标块属性及颜色,并通过裁剪点阵的作用,最终改变目标块的属性及颜色。每一个目标块对应一个上述黑白点阵块,用于决定目标块中每一个像素的组装结果。步骤409中源块与目标块边界对齐,即一个目标块的位置正好对应一个源块。源块的属性及颜色点阵都是在表管理器操作单元中缓存的,此时需根据源块的位置及当前表的位置,计算得到源块在表子页面中的Index,从表管理器操作单元中获得源块属性,如果需要点阵信息,根据内存属性从缓存的色面内存中获取源块的内存地址。组装时,判断当前目标块所对应的黑白点阵块,如果黑白点阵块是白块,则不做操作,保留原来目标块的属性;如果黑白点阵块是黑块,则对应目标块完全由源块替代,根据源块的属性及颜色对目标块进行赋值;如果黑白点阵为混合块,则需要进行逐行甚至逐点计算,0对应的位置保留目标块颜色,1对应的位置采用源块的颜色,并相应改变目标块的属性。步骤410为表块与待输出页面块不对齐时的组装,组装原理和步骤409一致,只是需要进行源块的循环,一个目标块至多会和4个源块相交,因此组装一个待输出页面块时,需要对和其相交的源块分别进行一次上述组装过程。图5示出了根据本发明实施例的表重用装置的示意图,包括:确定模块10,用于确定页面描述文件中可重用处理的表;解释模块20,用于对表进行语法解释以生成并缓存块点阵、块属性表和块内存表;组装模块30,用于将表所包含的各个块分别根据其块点阵、块属性表和块内存表,组装入待输出页面的块中。本装置显著地提高了表的光栅化效率。优选地,确定模块确定页面描述文件中的可重用处理的表包括如果满足以下任一条件,则将表视为可重用处理的表:表的Resource字典中含有XObject对象;表的Resource字典中含有渐变对象;表的Resource字典中含有Pattern对象;表中含有透明属性。优选地,解释模块包括:内容流模块,用于对表的内容流进行语法解释,生成中间指令文件;写入模块,用于将表对应的ID和中间指令写入中间指令文件;生成模块,用于根据中间指令文件生成并缓存块点阵、块属性表和块内存表。优选地,生成模块包括:分块模块,用于分块组装待输出页面中的表子页面的段,生成并缓存段的Mask点阵、块点阵、块属性表和内存属性表;除冗模块,用于消除Mask点阵的上下左右冗余数据。优选地,组装模块包括:相交模块,用于确定表和待输出页面的相交区域;索引模块,用于根据相交区域中源块的位置计算得到其在表子页面中的索引,获得其块属性表;颜色模块,用于根据表在相交区域中的块的块内存表,从缓存的色面内存中获取其块点阵,并通过其块点阵和属性确定其颜色;计算模块,用于根据由所述Mask点阵与裁剪点阵生成的黑白点阵,将表在相交区域中的块组装入待输出页面的相应块中,其中,如果黑白点阵是全白块,则保留相应块的属性和颜色;如果黑白点阵是全黑块,则以表在相交区域中的块的属性和颜色代替相应块;如果黑白点阵为混合块,则黑白点阵中白点的位置,保留相应块中该点的属性和颜色,其中黑点的位置,则以表在相交区域中的块中该点的属性和颜色代替相应块中该点的属性和颜色。从以上的描述中可以看出,本发明使表重复引用的PDF文件在RIP内实现高速解释,提高了光栅化处理的效率,节省了内存资源。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1