一种通过虚拟打印实现文档格式转换的方法及系统的制作方法

文档序号:6471118阅读:130来源:国知局
专利名称:一种通过虚拟打印实现文档格式转换的方法及系统的制作方法
技术领域
本发明属于文档格式之间转换的技术领域,具体涉及一种通过虚拟打印实现文档
格式转换的方法及系统。
背景技术
文档格式之间的转换一般采用通过虚拟打印机打印来完成,在打印过程中,将首 先生成一个由计算机打印语言描述的临时格式文件,再通过解析此打印机语言描述的文 件,生成目标格式文件。如果被转换的电子文档中,包含有背景图案、图表或者艺术字等页 面对象,则通过虚拟打印生成的打印机描述语言文档中,将可能把背景、图表或艺术字页面 对象分解成大量的小图像、小路径来描述,如果按打印机语言描述的小图像和小路径的描 述方法来描述目标格式文档,则在目标格式文档中,大量的小图像、小路径的描述将占用大 量的描述资源,所以生成的目标格式文档的的体积将非常大,显示这样的目标格式文档因 为要消耗大量的系统资源,所以显示非常缓慢。以一个包含几千甚至上万个相同内容而且 循环出现的图像的打印机语言描述的文件为例,如果目标格式逐一描述这些循环出现的图 像,就会出现大量的描述信息的冗余。

发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种通过虚拟打印实现文档格 式转换的方法及系统,该方法及系统能够自动合并打印机语言描述的不断重复的页面对 象、上下相邻的等宽和左右相邻等高的页面对象数据,从而实现加速目标文件生成、减小目 标文件大小和目标文件能在相应的阅读器中被快速显示的目的。 为达到以上目的,本发明采用的技术方案是一种通过虚拟打印实现文档格式转 换的方法,包括以下步骤 (1)虚拟打印机将读取的原格式文档生成由打印机语言描述的中间文件; (2)合并打印机语言描述的复杂页面元素数据; (3)将打印机语言描述的中间文件转换成目标格式文档。 进一步,所述的打印机语言是Postscript语言或PCL语言。 所述的复杂页面元素包括复杂背景图案、花边和艺术字。 进一步,步骤(2)中合并打印机语言描述的复杂页面元素数据包括以下步骤
1)合并描述"等宽等高且内容数据相同的页面图元对象"的数据;
2)合并描述"等宽且上下相邻的页面图元对象"的数据;
3)合并描述"等高且左右相邻的页面图元对象"的数据。 更进一步,步骤l)中,将宽和高分别为wid和hei且内容数据相同的页面图元对 象描述的数据,按照m行n列排列,合并成一个宽wid*n,高hei*m的大页面图元对象的数 据,m和n均为正整数。 再进一步,步骤l)中,将描述宽和高分别为wid和hei且内容数据相同的页面图元对象的小图像或小路径的双层循环的外层循环上限值设为合并后的大图的宽,将内层循
环上限值设为合并后的大图的高;外层循环每次增加的步长为小图像的宽度,内层循环每
次增加的步长为小图像的高度,小图像之间的偏移量就是当前的循环控制变量。 进一步,步骤2)中,将宽相同且上下相邻的图元对象合并成大的图元对象,并直
接用合并后的大图元对象来描述此等宽且上下相邻的页面图元对象。 进一步,步骤3)中,将高相同且左右相邻的图元对象合并成大的图元对象,并直 接用合并后的大图元对象来描述此等高且左右相邻的页面图元对象。 进一步,每次存储解析出的新的图元对象A时,先遍历"已处理图像信息列表"中
的全部图元对象,如果发现等宽且位置上下相邻的图元对象B或等高且位置左右相邻的图
元对象B,则将图元对象A与图元对象B合并,得到新对象C,并将对象B从"已处理图像信
息列表"中删除,同时,将C添加进"已处理图像信息列表"中。 —种通过虚拟打印实现文档格式转换的系统,包括以下模块 (1)读取模块用于将虚拟打印机读取的原格式文档生成由打印机语言描述的中 间文件; (2)合并模块用于合并打印机语言描述的复杂页面元素数据; (3)转换模块用于将打印机语言描述的中间文件转换成目标格式文档。
进一步,所述的合并模块中还设有以下子模块 1)用于合并描述"等宽等高且内容数据相同的页面图元对象"的数据的子模块; 2)用于合并描述"等宽且上下相邻的页面图元对象"的数据子模块; 3)用于合并描述"等高且左右相邻的页面图元对象"的数据子模块。
本发明的效果在于采用本发明所述的方法,可以自动合并打印机语言描述的不
断重复的页面对象、上下相邻的等宽和左右相邻等高的页面对象数据,从而达到加速目标
文件生成、减小目标文件大小和目标文件能在相应的阅读器中被快速显示的效果,有效地
解决了现有技术中包含过多小图像的电子文档所存在的体积过大、转换速度和显示速度过
慢的问题。
本发明之所以具有上述显著的技术效果,其原因在于 1、本发明所述的方法通过将大量的小图像合并,生成新的少量的大图像,则在新 文档格式中,仅保存这些少量的大图像,少量的大图像占用的描述信息将大幅减少,从而减 小了目标格式的电子文档的数据量。 2、本发明将循环处理小图像的过程变为一步处理一个大图像的过程,从而大幅提 高目标格式的电子文档的生成速度。 3、因为目标文档格式中仅含有少量的大图像,因而大幅提高了该电子文档的显示 速度。原本大量小图像的显示,变为一幅大图像的显示。


图1是本实施例中对等宽等高内容数据相同小图像合并的流程图;
图2是本实施例中对等宽上下相邻的小图像合并的流程图;
图3是本实施例中对等高左右相邻的小图像合并的流程图;
图4是一种通过虚拟打印实现文档格式转换的方法的流程图。
具体实施例方式
下面结合说明书附图对本发明作进一步的描述。 —种通过虚拟打印实现文档格式转换的系统,包括以下模块 (1)读取模块用于将虚拟打印机读取的原格式文档生成由打印机语言描述的中 间文件; (2)合并模块用于合并打印机语言描述的复杂页面元素数据; (3)转换模块用于将打印机语言描述的中间文件转换成目标格式文档。
所述的合并模块中还设有以下子模块 1)用于合并描述"等宽等高且内容数据相同的页面图元对象"的数据的子模块; 2)用于合并描述"等宽且上下相邻的页面图元对象"的数据子模块; 3)用于合并描述"等高且左右相邻的页面图元对象"的数据子模块。 本系统在工作时,先由读取模块将虚拟打印机读取的原格式文档生成由打印机语
言描述的中间文件;然后由与其相连的合并模块对打印机语言描述的复杂页面元素数据进
行合并处理;最后由与合并模块相连的转换模块将打印机语言描述的中间文件转换成目标
格式文档,得到的目标格式文档可以存档或输出。 如图4所示,一种通过虚拟打印实现文档格式转换的方法,包括以下步骤 —、虚拟打印机将读取的原格式文档生成由打印机语言描述的中间文件S41,所述
的打印机语言包括Postscript语言或PCL语言等,本实施例中采用的是Postscript语言。 二、合并打印机语言描述的复杂页面元素数据S42,具体包括以下步骤 1)合并描述"等宽等高且内容数据相同的页面图元对象"的数据; 2)合并描述"等宽且上下相邻的页面图元对象"的数据; 3)合并描述"等高且左右相邻的页面图元对象"的数据。 本实施例中,所述的复杂页面元素(页面图元对象)包括复杂背景图案、花边和艺 术字。合并重复的或者上下相邻等宽和左右相邻等高的页面图元对象。在实际文档转换中, 大多数页面图元对象都是以小图像形式存在。以合并打印机语言描述的小图像为例,合并 操作包括以下步骤 1.合并等宽等高且内容数据相同的图像。 —般地,当原始文档中含有复杂页面对象时,虚拟打印机将用大量的简单的小图 像或小路径来描述这些复杂的页面对象。在打印机语言描述这些小图像或小路径的时候, 将会有一个双重循环的描述,可将这个双层循环的外层循环上限值设为合并后的大图的 宽,将内层循环上限值设为合并后的大图的高;外层循环每次增加的步长为小图像的宽度, 内层循环每次增加的步长为小图像的高度。小图像之间的偏移量,就是当前的循环控制变 当解析到打印机语言描述的双重循环结构时,要对该循环的操作类型进行检查。 如果判断出当前循环操作是将同一小图像在某一区域循环显示的操作,则当前循环的描述 可以合并起来。做法是去除外层的双重循环,将描述的小图像数据的属性换成合并后的 大图像的属性。原描述信息中的小图像的长和宽,换成合并后的大图像的长和宽,也就是原 外层循环的两个上限值。另外,还要将原描述的坐标系按照小图像尺寸的拉伸变化,换成按照大图像尺寸的拉伸变化。原来的第一个小图像的坐标原点就是合并后的大图像的坐标原 点。 本实施例中,如图1所示,图1是对等宽等高内容数据相同的小图像合并的流程 图。 下面以打印机语言为Postscript的中间文件中的图像描述为例将等宽等高内 容相同的小图像在双重循环中描述的语句转换为一个大图像描述的语句,并对小图像数据 做合并处理,合并成大图像的图像数据。 在解析到Postscript文件的双重for语句时,将双重循环的两个上限值预设为小 图像合并成大图像后的宽widl和高heil。 验证双重for循环之中的执行语句是否是如〃 {1 index gsave translatescaleX scaleY scale wid hei true[wid 0 0-hei 0 hei]ds imagemask grestore} 〃的形式。如 果符合此条件,则可按以下方法拼图。 IOI用双重循环中的上限值(预设大图的宽widl和高heil),修改原执行语句 为〃 {gsave widl heil scale widl heil true[widl 0 0-heil 0 heil]dsimagemask grestore}"。其中ds中储存有原来的小像数据。 102当执行到imagemask语句,先从ds中读取出小图像的图像数据,将小图像的图 像数据根据合并算法合并为大图像的图像数据。 本实施例中,合并"等宽等高且内容数据相同的图像"的具体算法如下 定义以左上角为坐标原点,小图像的内容数据以打印机语言描述的方法存储在
一维数组中。 N为某常量,宽和高分别为a位和b位的小图像必须是N的倍数, 一行共a/N个字 符,一共有b行。整个小图像就包含a朴/N个字符宽度。本实施例中,常量N的取值为8。
宽和高分别为m位和n位的大图像必须是N的倍数, 一行共m/N个字符, 一共有n 行,整个大图就包含m*n/N个字符宽度。 大图像中任何位置的图像数据都要和小图像中的某个图像数据对应。因为在打印 机语言描述中,有两重循环控制了小图在x和y轴上的偏移量,使小图像不断重复,无缝地 组成大图像,所以大图像中坐标为(i, j)的点,对应到小图中的点的坐标就是(i%a, j% b)。 大图像数据的数组下标,可以用两个循环变量控制,一个代表列数i, i的范围从
0到m/N-l,一个代表行数j, j的范围从0到N-l。则大图像中某点的数组下标就是j*(m/
N) +i,那么对应到小图像数据的数组下标,就是j % b* (a/N) +i % (a/N)。合并成大图像数据
后,可遍历"已处理图像信息列表","已处理图像信息列表"是将已解析了的图像存放起来,
以便进一步做合并操作。如果在"已处理图像信息列表"中,有与其宽相同,上下相邻的图
像,则进入下一步的合并处理。 2.合并等宽上下相邻的图像。 2. 1符合合并操作的"等宽上下相邻的图像"的检查。 在将当前的图像A存入"已处理图像信息列表"之前,先要检查该图像A与"已处 理图像信息列表"中各图像之间的关系,检查是否有和当前图像A等宽且上下相邻的图像。 如果存在这样的图像B,则可将图像A和图像B合并成图像C。
2. 2合并"等宽上下相邻的图像"的方法。 如果图像A和图像B宽相等,且上下相邻,可将位于下面的图像数据添加到位于上 面的图像数据之后,形成图像C。图像C的坐标原点为位于上面的图像的坐标原点,图像C 的宽度等于图像A的宽度,图像C的高度等于图像A的高度加上图像B的高度。图像C的 数据长度为图像A与图像B的数据长度之和。同时,将图像B从"已处理图像信息列表"中 删除,将图像C添加到"已处理图像信息列表"中。 如图2所示,图2是对等宽且上下相邻的小图像合并的流程示意图。
等宽且上下相邻的小图像合并的流程如下 201当解析到Postscript文件的图像描述语句的时候,获得当前需要处理的图像 A的数据。 202检查图像A和"已处理图像信息列表"中的各个图像是否等宽且上下相邻,即
在垂直方向是否可以合并,如果是则转入步骤203 ;否则,转入步骤205。 203得到满足在垂直方向可以与图像A合并的图像B,将位于下面的图像数据添加
到位于上面的图像数据之后即可,形成新的图像C。 204将新的图像C添加进"已处理图像信息列表",同时将图像B从"已处理图像信 息列表"中删除。 205将图像A直接添加进"已处理图像信息列表",同时将图像B从"已处理图像信 息列表"中删除。 3.合并等高左右相邻的图像。 3. 1符合合并操作的"等高左右相邻的图像"的检查。 在将当前的图像A存入"已处理图像信息列表"之前,先要检查该图像A与"已处 理图像信息列表"中各图像之间的关系,检查是否有和当前图像A等高且左右相邻的图像。 如果存在这样的图像B,则可将图像A和图像B合并成图像C。
3. 2合并"等高左右相邻的图像"的方法。 如果图像A和图像B高相等,且左右相邻,可将图像A和图像B的图像数据合并, 形成图像C。图像C的坐标原点为位于左边的图像的坐标原点,图像C的宽度等于图像A的 宽度加上图像B的宽度,图像C的高度等于图像A的高度。图像C的数据长度为图像A与 图像B的数据长度之和。同时,将图像B从"已处理图像信息列表"中删除,将图像C添加 到"已处理图像信息列表"中。 如图3所示,图3是对等高且左右相邻的小图像合并的流程示意图。
等高且左右相邻的小图像合并的流程如下 301当解析到Postscript文件的图像描述语句的时候,获得当前需要处理的图像 A的数据。 302检查图像A和"已处理图像信息列表"中的各个图像是否等高且左右相邻,即
在水平方向是否可以合并,如果是则转入步骤303;否则,转入步骤305。 303得到满足在水平方向可以与图像A合并的图像B,将图像A的数据与图像B的
数据合并,形成新的图像C。 304将新的图像C添加进"已处理图像信息列表",同时将图像B从"已处理图像信 息列表"中删除。
305将图像A直接添加进"已处理图像信息列表",同时将图像B从"已处理图像信 息列表"中删除。 三、将打印机语言描述的中间文件转换成目标格式文档S43。 通过上述实施例可以看出,本发明所述的方法将打印机语言描述的有规则分布的 小图像或小路径进行预先合并处理,则转换成目标格式后,将会明显降低描述这些页面元 素对象的个数,最终目标格式文件的体积将会减小,显示目标格式文件的速度将大幅提高。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种通过虚拟打印实现文档格式转换的方法,包括以下步骤(1)虚拟打印机将读取的原格式文档生成由打印机语言描述的中间文件;(2)合并打印机语言描述的复杂页面元素数据;(3)将打印机语言描述的中间文件转换成目标格式文档。
2. 如权利要求1所述的一种通过虚拟打印实现文档格式转换的方法,其特征是所述 的打印机语言是Postscript语言或PCL语言。
3. 如权利要求1所述的一种通过虚拟打印实现文档格式转换的方法,其特征是所述 的复杂页面元素包括复杂背景图案、花边和艺术字。
4. 如权利要求1所述的一种通过虚拟打印实现文档格式转换的方法,其特征是,步骤 (2)中合并打印机语言描述的复杂页面元素数据包括以下步骤1) 合并描述"等宽等高且内容数据相同的页面图元对象"的数据;2) 合并描述"等宽且上下相邻的页面图元对象"的数据;3) 合并描述"等高且左右相邻的页面图元对象"的数据。
5. 如权利要求4所述的一种通过虚拟打印实现文档格式转换的方法,其特征是步骤 1)中,将宽和高分别为wid和hei且内容数据相同的页面图元对象描述的数据,按照m行n 列排列,合并成一个宽wid*n,高hei*m的大页面图元对象的数据,m和n均为正整数。
6. 如权利要求5所述的一种通过虚拟打印实现文档格式转换的方法,其特征是步骤1) 中,将描述宽和高分别为wid和hei且内容数据相同的页面图元对象的小图像或小路径 的双层循环的外层循环上限值设为合并后的大图的宽,将内层循环上限值设为合并后的大 图的高;外层循环每次增加的步长为小图像的宽度,内层循环每次增加的步长为小图像的 高度,小图像之间的偏移量就是当前的循环控制变量。
7. 如权利要求4所述的一种通过虚拟打印实现文档格式转换的方法,其特征是步骤2) 中,将宽相同且上下相邻的图元对象合并成大的图元对象,并直接用合并后的大图元对 象来描述此等宽且上下相邻的页面图元对象。
8. 如权利要求4所述的一种通过虚拟打印实现文档格式转换的方法,其特征是步骤3) 中,将高相同且左右相邻的图元对象合并成大的图元对象,并直接用合并后的大图元对 象来描述此等高且左右相邻的页面图元对象。
9. 如权利要求7或8所述的一种通过虚拟打印实现文档格式转换的方法,其特征是 每次存储解析出的新的图元对象A时,先遍历"已处理图像信息列表"中的全部图元对象, 如果发现等宽且位置上下相邻的图元对象B或等高且位置左右相邻的图元对象B,则将图 元对象A与图元对象B合并,得到新对象C,并将对象B从"已处理图像信息列表"中删除, 同时,将C添加进"已处理图像信息列表"中。
10. —种通过虚拟打印实现文档格式转换的系统,包括以下模块(1) 读取模块用于将虚拟打印机读取的原格式文档生成由打印机语言描述的中间文件;(2) 合并模块用于合并打印机语言描述的复杂页面元素数据;(3) 转换模块用于将打印机语言描述的中间文件转换成目标格式文档。
11. 如权利要求10所述的一种通过虚拟打印实现文档格式转换的系统,其特征是所 述的合并模块中还设有以下子模块1) 用于合并描述"等宽等高且内容数据相同的页面图元对象"的数据的子模块;2) 用于合并描述"等宽且上下相邻的页面图元对象"的数据子模块;3) 用于合并描述"等高且左右相邻的页面图元对象"的数据子模块。
全文摘要
本发明涉及一种通过虚拟打印实现文档格式转换的方法及系统,属于文档格式转换技术领域。本发明根据原文档在虚拟打印时生成的打印机语言描述的规则,将其描述的复杂背景图案、花边、艺术字等复杂页面元素数据按一定的方法预先合并成可用少量描述语言描述的对象,再将合并后的打印机语言描述的数据转化成目标文档格式。这样就在目标格式文档中减少了页面图元占用的描述语言的数量,从而达到加速目标文件生成、减小目标文件大小和目标文件能在相应的阅读器中被快速显示的效果。采用本发明所述的方法及系统,可以快速和准确地生成与原文相同视觉效果的文件,并能够满足电子文档和手持阅读设备等要求文件尽量小,显示尽量快速的要求。
文档编号G06F3/12GK101739223SQ200810226229
公开日2010年6月16日 申请日期2008年11月10日 优先权日2008年11月10日
发明者何震生, 王毅, 贺嘉 申请人:北大方正集团有限公司;北京方正阿帕比技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1